2012-05-24 1 views
0

데이터베이스에 데이터를 삽입하는 데 사용하는 콜백 페이지가 있습니다. 이 페이지를로드 할 때. echo $ _SESSION [ 'user_id']. 그것은 user_id를 에코하여 db에 삽입합니다. 그러나 콜백 함수를 수행하는 동안 데이터를 삽입 할 때 $ _SESSSION [ 'user_id'] 무시되고 다른 데이터가 성공적으로 삽입됩니다. 왜 이런거야?php : // input 콜백에서 PHP 세션 ID를 데이터베이스에 삽입합니다.

echo $_SESSION['user_id'];  
$decodedJSON = json_decode(file_get_contents('php://input'), true);  
$account = $decodedJSON['account'];  
$query_insert = "insert into video (account,userid) values ($account,$_SESSION['user_id'])";  
$result_insert = mysql_query($query_insert); 

페이지를 새로 고침하면 $ _SESSION [ 'user_id']이 (가) 삽입됩니다. 하지만 콜백 함수를 실행하려고하면 $ account가 삽입되지만 $ _SESSION [ 'user_id']는 삽입되지 않습니다.

답변

0

이 코드가 어떻게 코드 샘플과 잘 어울리는 지 100 % 확신 할 수는 없지만, 표준 입력에 somethign을 전달한 다음 PHP를 실행하려면 sessionID도 전달해야합니다.

borwser에서 코드를 호출하면 쿠키가 마술처럼 처리되며 세션 ID는 쿠키로 전달됩니다. 하지만 다른 출처에서 전화하는 경우 쿠키가 전달되지 않습니다.

내가 어떻게하는지 설명 할 수는 있지만, PHP 매뉴얼보다 나은 것은 없다 : http://php.net/manual/en/session.idpassing.php - 기본적으로 hte URL의 끝에 SID를 추가한다.

기본적으로 비활성화되어 있으며 php.ini에서 활성화해야하는 "session.use_trans_sid"에 대한 설명을 참고하십시오.