2012-03-25 3 views
0

두 페이지가 있습니다. 먼저 url에 $ _POST 변수를 열면 두 번째 것은 iframe을 통해 처음 열립니다. 두 php 파일, 둘째는 html 조작입니다.

echo '<iframe src="index.php&first=' . $first . '&second=' . $second . '&third=' . $third . '&iframe=true"></iframe>'; 

$first, $second, $third 변수 일부 HTML과 신규 라인 (\ n을)와 그 안에서 텍스트가 :

변수 I는 $ _POST $ _GET을 통해하면 iframe에 전달됩니다에 있어요.

데이터가 $_GET에 의해 iframe으로 전달 될 때 변수의 모든 새 줄이 사라지는 것이 문제입니다.

base64_encode($first)과 같은 변수를 전달한 다음 base64_decode()으로 해독하려고 시도했습니다. 그것은 버그, 텍스트의 일부가 올바르게 iframe을 URL에 나쁜 기호로 인해 디코딩하지 않는 작동합니다.

또한 모든 변수를 단일 배열로 던져서 직렬화 한 다음 base64로 인코딩합니다.이 방법으로 서버는 오류 500을 표시합니다 (404에도 동일한 오류가 표시됨).

왜 이런 구조의 페이지를 작성했는지 묻지 마십시오. 변경해서는 안됩니다.

이 해결책은 무엇입니까?

+0

주의하십시오. 쿼리 문자열은 길이 제한이 있으며 너무 긴 메시지를 자동으로 자릅니다. 클라이언트 측 및/또는 서버 측에서 경고없이이를 발생할 수 있습니다. –

답변

3

내부의 텍스트 파일을 열 수 있을까?

+0

너는 내 존경을 받는다. – Jasper

+0

@Steve가 함께하는 것은 거의 의미가 없다. –

+0

@ 일반적인 상식 나는 상관 없어, 그냥 작동 – Jasper

-1

당신은 first.txt,second.txt,third.txt$first,$second,$third의 내용을 작성하고 다음 무엇 base64_encodeurlencode에 대한 귀하의 iframe이 스크립트

+1

그들은 매번 바뀌며, 그렇지 않다. – Jasper

-1

처음 접근 방법이 잘못되었습니다.

POST 변수는 어디에도 없어야합니다. POST 요청 서버가 페이지를 다시로드하려면 브라우저를 주문해야합니다. 전체 페이지, iframe뿐만 아니라

그 리로드 후에 사용자에게 iframe을 표시 할 수 있습니다.
데이터를 전달하려면 세션이 이상적인 솔루션입니다.
그러나 특정 솔루션은 모든 혼란의 데이터 특성과 전반적인 목적에 따라 다릅니다.

0

상황에 따라 Javascript를 사용하여 상위 프레임에 액세스 할 수도 있습니다.

첫 번째 창을 자바 스크립트 어레이에 데이터를 저장할 수 후 iframe이 서브 윈도우는 부모를 통해 전화를 할 수있다. *

Some more detailsfrom other questions.

+0

iframe의 콘텐츠에 액세스 할 수있는 방법이 없습니다 – Jasper

+0

브라우저 보안 정책으로 인해 불가능합니다. – Jasper

+0

스티브, 나는 하위 프레임의 콘텐츠에 액세스하지 말라고 권하고 싶습니다. 자식에서 부모 프레임의 내용에 액세스하는 것이 좋습니다. ''그리고 자식으로부터''이고 정의되지 않은 [object Object]임을 알 수 있습니다. 따라서 변수를 $ _GET을 통해 자식에게 전달하는 대신 변수를 ''그런 다음 자식 iFrame에서'parent.myVars.whatever;'시도해보십시오. –