2015-02-04 3 views
-1

Я пытаюсь восстановить идентификатор сеанса, но не добившись успеха, я использовал session_regenerate_id(). но в то время как мы представления формы он показывает: ---
"Предупреждение: session_regenerate_id(): Не удается регенерировать идентификатор сессии - заголовки уже прислал в C: \ XAMPP \ HTDOCS \ yogesh_traders \ yadmin \ quo_pro_temp.php в строке 4"Как восстановить идентификатор сеанса?

пожалуйста, подсказывают, как решить эту проблему

<?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), чтобы отправить весь вывод в буфер вместо отправки его непосредственно клиенту.

Также можно включить буферизацию вывода по умолчанию, установить output-buffering в php.ini на «Вкл» и перезагрузить сервер. Смотрите также: How do i edit php.ini file in xampp server

После вашего редактирования: Убедитесь, что <?php находится на первой линии, и перед ним нет пробела. Ваша ошибка говорит о строке 4, но код находится в строке 3.

+0

Я сделал это, но его не работали, пожалуйста, проверьте выше код – Mahesh

+0

i amnot getting ваш вопрос вы могли бы объяснить – Mahesh

+0

да после восстановления идентификатора во время $ new_sessionid он показывает эту ошибку, но почему я не получаю – Mahesh

0
  1. Вы забыли позвонить session_start().
  2. Удостоверьтесь, что у вас нет выхода до «session_start()», или вы получите «уже отправленные ошибки заголовков».
  3. Я попробовал ваш код в отдельном файле, и все работает отлично:
<?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; 
?> 
Смежные вопросы