簡體   English   中英

如何重新生成會話ID?

[英]How To regenerate Session id?

我正在嘗試重新生成會話ID,但沒有成功,我使用了session_regenerate_id()。 但是,當我們提交表單時,它顯示:---
“警告:session_regenerate_id():無法重新生成會話ID-第4行的C:\\ xampp \\ htdocs \\ yogesh_traders \\ yadmin \\ quo_pro_temp.php中已發送的標頭”

請建議如何解決這個問題

<?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\">";  
}
}
}   
?>

在任何內容發送到客戶端之前(任何輸出之前),您必須調用此函數。

確保在此代碼之前沒有任何輸出(例如非PHP代碼或echo的輸出)或向上移動功能。

您還可以使用輸出緩沖(請參見ob_start )將所有輸出發送到緩沖區,而不是直接將其發送到客戶端。

也可以通過默認設置為打開輸出緩沖輸出緩沖在php.ini為“打開”,然后重新啟動服務器。 另請參見: 如何在xampp服務器中編輯php.ini文件

編輯后:確保<?php位於第一行,並且前面沒有空格。 您的錯誤顯示在第4行,但代碼在第3行。

  1. 您忘記了調用session_start()。
  2. 確保在“ session_start()”之前沒有任何輸出,否則將收到“標題已發送錯誤”。
  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;  
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM