【发布时间】:2015-04-03 15:56:39
【问题描述】:
我正在尝试重新生成会话 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\">";
}
}
}
?>
【问题讨论】:
-
使用
ob_*函数来捕获输出而不是直接打印。 -
headers already sent 确保在调用 session_regenerate_id() 之前没有任何输出
-
@Randyka Yudhistria : 请检查上面的代码
-
为了停止执行,此时使用它我只检查新旧 id 相同或不同,这就是我使用这个 exit() 函数的原因。
标签: php