2013-04-13 3 views
1

Windows 7 (x64)에서 Apache 2.4.4 및 PHP 5.4.14를 사용하고 있습니다. 내가 가진 문제는 PHP 세션이 붙지 않는다는 것입니다. 이것은 아파치 2.2와 PHP 5.4.4에서도 발생했는데, 어제는 php.ini의 설정이 잘못되었지만 아무것도 바뀌지 않았기를 바래서 업데이트되었습니다.PHP/Apache - 고집하지 않는 세션

크롬에서 세션 ID는 모든 페이지에 대해 변경됩니다 (다시 쓰기 규칙을 사용하는 경우에만 해당). 다시 쓰기 규칙을 사용할 때 쿠키 path/ 대신에 /pages_name/으로 이상하게 변경됩니다.

오페라에서 세션 ID는 페이지를 새로 고침해도 변경됩니다. IE에서도 마찬가지입니다.

두 경우 모두 쿠키는 브라우저에서 허용됩니다.

RewriteEngine on 

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^([a-zA-Z]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?page=$1&info1=$2&info2=$3 [L] 
RewriteRule ^([a-zA-Z]+)/([a-zA-Z0-9]+)/?$ index.php?page=$1&info1=$2 [L] 
RewriteRule ^([a-zA-Z]+)/?$ index.php?page=$1 [L] 

검색 후 내가 몇 가지 "솔루션"없음 우연히이있는

세션 경로가 작동 저장

을 열심히 파일은 writen되고있다. 기본 세션 처리기 사용. 자세한 정보가 필요하면

내가 session_regenerate_id

session_start();를 사용하고 있지 않다 다음 다른 0

session.cookie_lifetime 설정 /

session.cookie_path를 설정하면 모든 페이지

에 코드의 첫 번째 줄입니다 나는이 포스트를 새롭게 할 것이다, 고마워. 추가 연구에


IT는 RewriteRule의, 아직 문제를 해결하는 방법을 모르고의 문제로 밝혀졌습니다.

또한 session_start()의 쿠키는 마치 폴더 인 것처럼 localhost/home/으로 설정되어 있지만 변수는 localhost/index.php?page=home입니다. 이 모든 페이지는 자체적으로 session id을 가지므로 수정 프로그램에 대한 아이디어가 있습니까?

+0

세션 파일이 기록되는 경로를 확인 했습니까? 모든 요청에 ​​따라 점점 더 많은 파일이 생성되고 있습니까, 아니면 전혀 생성되지 않습니까? 기본 세션 핸들러를 사용한다고 가정합니다. – leftclickben

+0

을 언급하는 것을 잊어 버렸습니다. 그렇습니다. 경로는 좋으며 요청마다 점점 더 많은 파일이 생성됩니다. 기본 세션 처리기를 사용하고 있습니다. – MPKaboose

+0

URL에 세션 정보가 전달됩니까? 쿼리 문자열 에서처럼? –

답변

1

새 세션을 session_start();으로 시작하는 대신 브라우저가 이미 현재 session_id를 보냈는지 먼저 확인하십시오.

if (isset($_POST['session_id'])) { 
    $_COOKIE['PHPSESSID'] = $_POST['session_id']; 
    session_start(); 
} else { 
    session_start(); 
} 

그래도 작동하지 않으면 PHP 및/또는 Apache 구성이 손상된 것 같습니다. 기본 구성을 사용해 보시지 않겠습니까?

+0

쿠키를 직접 설정하지 않고 PHP가 해 주도록합니다.'Undefined index : session_id' – MPKaboose

+0

이 대답의 코드는 첫 번째 줄에서 작동해야합니다. if (isset ($ _ POST [ 'session_id'])) {'(변경은'isset (...의 추가가된다.)') – leftclickben

+0

'session_id'가 설정되지 않았습니다 – MPKaboose

관련 문제