2014-06-16 3 views
0

저는 PHP 세션에 익숙하지 않아서 PHP 페이지에서 다른 페이지로 데이터를 보내려고합니다. 첫 번째 페이지에는 다음 코드가 있습니다.하나의 PHP 페이지에서 다른 페이지로의 PHP 세션

session_start(); 
$statements="<p>{$actorName} {$verbDisplay} {$objectName}</p>"; 
$_SESSION['regName'] = $statements; 
if(isset($_SESSION['regName'])) 
{ 
echo $_SESSION['regName']; 
header("Location: http://localhost/moodle/blocks/tincanlrs/downloadlrs.php"); 
} 

여기서 isset 함수는 true가 반환되며 모든 것이 정상입니다. 두 번째 페이지에서 나는이 코드를 가지고 : 나는 lrs_statements.txt 열 때 다음

session_start(); 
$statements = $_GET['regName']; 
header("Content-Type: plain/text"); 
header("Content-Disposition: Attachment; filename=lrs_statements.txt"); 
header("Pragma: no-cache"); 
echo $statements; 
if (isset($_SESSION['regName'])) 
{ 
    echo "session"; 
} 
else 
{ 
    echo "no session"; 
} 

을 나는이 :
공지 사항 : 정의되지 않은 인덱스 : C에서 regName : \ XAMPP \ htdocs를 \ 무 블록 \ \ tincanlrs \ downloadlrs.php 온라인
세션 없음.

왜 ?? 그리고 내가 뭔가 잘못하고있는거야 ?? 미리 감사드립니다.

[편집] 나는 session_start를 테스트했고 세션이 시작되었지만 session_id()를 테스트했을 때 동일한 ID가 아닌 다른 ID를 가졌습니다. 내가 두 번째 페이지의 상단에 추가 할 때 는 :

session_start(); 
var_dump($_SESSION);exit(); 

나는이 출력이 : 배열 (0) {} 두 번째 페이지에 접속 $ _SESSION에서이 같은 세션에서

+0

당신은이 $ statements = $ _GET [ 'regName']; 대신에 echo $ _SESSION [ 'regName']; –

+1

왜 두 번째 페이지에서 $ _GET에 도달 했습니까? $ statements = $ _GET [ 'regName']; – mayy00

+1

기본 디버깅 :'session_start()'의 반환 값을 확인하십시오. 세션을 시작할 수 없으면 부울 false가됩니다.두 스크립트에서'session_id()'의 값을 확인하십시오. 다른 값을 얻으면 둘 이상의 다른 세션을 가지며 그 중 하나에 저장된 값을 "잃어 버리는"것입니다. –

답변

0

: $ _SESSION [ 'regName'];

$ _GET은 요청 URI에있는 모든 이름/값 쌍을 보유합니다 (예 : 모든 후? URL에

주목해야 할 또 하나의 사실은 여러분이 isset()을 사용하여 검사하면 정의되지 않은 색인 오류가 발생하지 않는다는 점입니다.

0

이 줄은 실패 :

$statements = $_GET['regName']; 

는 왜 실패? 이 첫 번째 페이지로 리디렉션되는 URL이기 때문에 :

http://localhost/moodle/blocks/tincanlrs/downloadlrs.php 

가이 URL에는 매개 변수 "regName"입니다, 그래서 $ _GET에 대한 액세스가 "정의되지 않은 인덱스"통지를 트리거합니다.

한 가지 더 : 첫 번째 페이지에서 콘텐츠를 다시 표시하고 다른 HTTP 헤더를 추가하는 중입니다. "echo"를 사용하면 브라우저에 모든 현재 헤더를 보내고 더 많은 메시지를 보낼 수 없기 때문에 (예외가있는) 보통은 실패합니다. 예외는 출력 버퍼링이 켜져있어이 두 출력을 혼합 할 수 있지만 출력 버퍼를 전환 할 수없는 호스트에서 코드를 실행해야하는 경우에만이 기능을 사용하지 않는 것이 좋습니다.

이제 질문은 다음과 같습니다. 두 번째 페이지의 줄 중 9 번째 줄은 어느 줄입니까? 셀수를 계산하면 echo "session";은 줄 9가되지만 이는 사용자가받는 오류 메시지와 일치하지 않습니다.

+0

9 번 줄은 '$ statements = $ _GET ['regName '];'은 (는) –

관련 문제