>백엔드 개발 >PHP 문제 >PHP 세션이 값을 전달할 수 없는 경우 수행할 작업

PHP 세션이 값을 전달할 수 없는 경우 수행할 작업

藏色散人
藏色散人원래의
2021-09-19 10:36:232806검색

php 세션이 값을 전송할 수 없는 문제에 대한 해결 방법: 1. 서버 매개변수 구성을 확인합니다. 2. 구성 파일 php.ini에서 "session.use_trans_sid" 값을 1로 변경합니다. 3. "var/tmp"를 확인합니다. " 파일 폴더에 쓰기가 가능하고 수정이 가능한지 확인하면 됩니다.

PHP 세션이 값을 전달할 수 없는 경우 수행할 작업

이 문서의 운영 환경: Windows 7 시스템, PHP7.1, Dell G3 컴퓨터.

PHP 세션에서 값을 전달할 수 없으면 어떻게 해야 하나요?

PHP 세션 실패 및 통과 실패에 대한 해결 방법

PHP에서는 세션을 다음 페이지로 전달할 수 없습니다. 일반적으로 두 가지 상황이 있습니다.

먼저 PHP 파일을 작성해 보겠습니다. 를 서버에 전달하면 서버 매개변수 구성을 볼 수 있습니다.

세션 섹션으로 이동하여 session.use_trans_sid 매개변수가 0으로 설정되어 있는지 확인하세요.

이 매개변수는 투명한 SID 지원을 활성화할지 여부, 즉 세션이 URL과 함께 전달되는지 여부를 지정합니다. 개인적인 이해에 따르면 이 매개변수를 0으로 설정하면 각 URL에 대해 세션이 시작됩니다. 이러한 방식으로 후속 페이지는 이전 페이지의 세션을 추적할 수 없으며, 이를 전달할 수 없다고 합니다. 두 페이지는 서버 측에 두 개의 세션 파일을 생성하며 관련이 없습니다. (이게 맞는지 모르겠네요. 조언 부탁드립니다.)

그럼 한 가지 방법은 php.ini 구성 파일에서 session.use_trans_sid 값을 1로 변경하는 것입니다.

물론 우리는 모든 사람이 PHP 구성을 변경할 권한을 갖고 있는 것은 아니라는 것을 알고 있습니다. 그렇다면 다른 간접적인 해결책은 무엇입니까?

두 가지 예를 사용하여 설명하겠습니다.

파일 1 test1.php

//사용자 ID
session_id(SID);
//세션 시작
session_start();

//세션 이름을 Havi
$_SESSION에 할당합니다. [' name']=”Havi”;
//세션을 출력하고 두 번째 페이지 test2.php
echo “”.$_SESSION['name']에 대한 하이퍼링크를 설정합니다. . "";
?>

파일 2: test2.php

는 세션이 사용자 ID
session_id(SID);
//세션 시작으로 식별됨을 나타냅니다.
session_start ();

//test1.php에서 전달된 세션을 출력합니다.
echo “이것은 “.$_SESSION['name'];
?>

세션을 열려면 모든 페이지를 작성해야 합니다. . 그렇지 않으면 여전히 제대로 작동하지 않습니다

그래서 중요한 점은 session_start(); 앞에 session_id(SID);를 추가하여 페이지가 변환될 때 서버가 사용자가 저장한 세션을 사용하도록 하는 것입니다. 전송 문제를 해결하는 서버 세션 폴더.

그러나 일부 동료들은 여러 사용자의 세션이 하나의 SID에 기록되면 세션의 가치가 완전히 실현되지 않는다고 보고할 것입니다. 따라서 이 문제를 해결하는 다른 방법이 있습니다. session_id(SID)를 추가할 필요가 없습니다. 전제는 서버의 php.ini에 대한 구성 권한이 있다는 것입니다.

output_buffering이 ON으로 변경되었습니다.

두 번째가능한 이유는 서버가 세션을 저장하는 폴더에 대한 읽기 권한이 없기 때문입니다, 또는 phpinfo.php로 돌아가서 세션이 저장된 주소를 확인하세요:

session .save_path: var /tmp

그러니 var/tmp 폴더에 쓰기 가능한지 확인하세요.

파일 쓰기: test3.php 테스트하기:

echo var_dump(is_writeable(ini_get("session.save_path")));
?>

bool(false)이 반환되면 증명하세요. 파일 폴더 및 쓰기 권한이 제한되어 있으므로 폴더를 변경하고 다음을 추가하십시오.

//현재 디렉토리의 세션 하위 폴더를 작성한 웹 페이지의 세션 저장 경로로 설정하십시오.
$sessSavePath = dirname(__FILE__).'/session/';

//새 경로를 읽고 쓸 수 있는 경우(FTP에서 폴더 속성을 777로 변경하면 가능) 경로가 적용됩니다.
if(is_writeable($sessSavePath) && is_readable($sessSavePath))
{session_save_path($sessSavePath);}

권장 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP 세션이 값을 전달할 수 없는 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.