2015-02-04 2 views
-1

세션 ID를 다시 생성하려고하는데 성공하지 못하고 session_regenerate_id()를 사용했습니다. ---
: 우리가 양식을 제출하면서 그러나 보여주는 것 "경고 :에도 session_regenerate_id() : 세션 ID를 다시 생성 할 수 없습니다 - 이미 C로 전송 헤더 : \ XAMPP \ htdocs를 \ yogesh_traders \ yadmin \ quo_pro_temp.php 4 행의"세션 ID를 재생성하는 방법은 무엇입니까?

이 문제

<?php 
$old_sessionid = session_id(); 
session_regenerate_id(); 
$new_sessionid = session_id(); 
echo "Old Session: $old_sessionid<br />"; 
echo "New Session: $new_sessionid<br />"; 
exit(); 
?> 
<div align="center"> 
<img src="images/ajax-loader.gif" /> 
</div> 
<?php 
/* if($_REQUEST['clear']=='y'){ 
$db->Delete('quotation_pro_temp',"session_id='".session_id()."'",1); 
//session_regenerate_id(); 
} */ 

if(isset($_POST['senditem'])) 
{ 
if(count($_POST['senditem'])>0) 
{ 

foreach($_POST['senditem'] as $setitem) 
{ 
$a=$db->SelectSingle("product_details","id='".$setitem."'",""); 
$data["prod_id"] =$a["id"] ; 
$data["pname"] = $a['pname']; 
$data["brand"] = $a['brand']; 
$data["qty"] = $_POST['qty'."-".$setitem]; 
$data["measure"] = $a['measure']; 
$data["price"] =$_POST['price'."-".$setitem]; 
$data["mrp_field"] =$a['mrp_field']; 
$data["discount"] = $_POST['disc'."-".$setitem]."-".$_POST['distype'."-".$setitem]; 
$data["total"] = $_POST['equals'."-".$setitem]; 
$data["session_id"] =$old_sessionid; 
$db->Insert('quotation_pro_temp',$data); 
echo "<meta HTTP-EQUIV=\"REFRESH\" content=\"0; url=inner_index.php?pagename=quotation_productwise_view&ins=y\">"; 
} 
} 
} 
?> 
+0

코드는 어디에 있습니까? –

+0

'ob_ *'함수를 사용하여 직접 출력하는 대신 출력을 캡처합니다. – Justinas

+0

* 헤더가 이미 전송되었습니다. * session_regenerate_id()를 호출하기 전에 출력이 없음을 확인하십시오. – donald123

답변

2

당신은 아무것도 (모든 출력 전) 클라이언트로 전송되기 전에이 함수를 호출 할 필요를 해결하는 방법을 제안 해주십시오.

이 코드 앞에 출력되는 내용 (예 : PHP 코드가 아니거나 echo)이 없는지 확인하거나 기능을 위로 이동하십시오.

출력 버퍼링 (ob_start 참조)을 사용하여 모든 출력을 클라이언트로 직접 보내지 않고 버퍼로 보낼 수도 있습니다.

기본적으로 출력 버퍼링을 켜려면 php.ini의 output-buffering을 'On'으로 설정하고 서버를 다시 시작하십시오. 다음을 참조하십시오 : How do i edit php.ini file in xampp server

편집 후 : <?php이 첫 번째 줄에 있고 그 앞에 공백이 없는지 확인하십시오. 오류는 4 행이지만 코드는 3 행에 있습니다.

+0

나는 이것을했지만 작동하지 않습니다. 위의 코드를 확인하십시오. – Mahesh

+0

아닙니다. 당신의 포인트는 당신이 설명 할 수있다 – Mahesh

+0

네, $ new_sessionid의 시간에 이드를 재생성 한 후에 그 에러를 보여주고 있는데 왜 나는 안좋은거야? – Mahesh

0
  1. session_start()를 호출하는 것을 잊었습니다.
  2. "session_start()"전에 출력이 없는지 확인하십시오. 그렇지 않으면 "headers already sent error"가 표시됩니다.
  3. 나는 별도의 PHP 파일에 코드를 시도하고 모든 작동합니다 :
<?php 
session_start(); 

$old_sessionid = session_id(); 
session_regenerate_id(); 
$new_sessionid = session_id(); 

echo "Old Session: $old_sessionid"; 
echo "New Session: $new_sessionid"; 
exit; 
?> 
관련 문제