PHP错误无法发送会话缓存限制器 - 已发送的标头

时间:2014-02-25 06:58:02

标签: php session header

您好我有三个PHP代码,其中我的一个页面是index.php我在那里扫描用户的用户名和密码,然后将其发送到另一个文件userlogin_process.php我首先启动会话然后我将扫描的值与数据库匹配,如果它们匹配,我将它们存储到会话变量中,但它在该页面上显示2个警告无法发送会话缓存限制器 - 已发送的标头和我的最后一页是{{ 1}}我将用户定位到网站的主页。

的index.php

user_session.php

user_loginprocess.php

session_start();
<form method="post" action="userlogin_process.php">
<div class="p">User Login</div>  
<table style="margin-top:5%;margin-left:12%;">
<tr><td> <label style="font-size:16px"> UserName :</label></td></tr>
<tr><td><input class="input" type="text" name="username" placeholder="FirstName"/></td></tr>
<tr><td><label style="font-size:16px">Password :</label></td></tr>
<tr><td><input class="input" type="password" name="userpass" placeholder="Mobile No"/></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td align="center"><input class="button" type="submit" name="usersubmit" value="Login"/></td></tr>
</table>
</form>

user_sesssion.php

<?php 
session_start();
include("db.php");
$uname = $_POST['username'];
$upass = $_POST['userpass'];
echo $uname;
echo $upass;
$sql = mysql_query("select id,fname,mobile from user where fname='$uname'") or die(mysql_error());
$count = mysql_num_rows($sql);
if ($count > 0){
while($row = mysql_fetch_array($sql)){
$id = $row['id'];
$fname = $row['fname'];
$mobile = $row['mobile'];
}
}
if( $uname == $fname && $upass == $mobile ){
$_SESSION['uid'] = $id; 
$_SESSION['username'] = $fname;
$_SESSION['usermobile'] = $mobile;
$_SESSION['login'] = "yes";
header('location:user_session.php');
}
else{       
header('location:index.php?msg=incorrect');
} 
?> 

2 个答案:

答案 0 :(得分:0)

我能看到的第一件事是您多次使用session_start()。你可以在他们的docs中看到它不会造成任何伤害,但它可能会引发错误或警告......所以最好只坚持使用一次。

其次请使用mysqli_* docs ,因为my_sql已被弃用。或PDO

并且这部分看起来像是

session_start();
<form method="post" action="userlogin_process.php">

它应该是:

<?php session_start(); ?>
<form method="post" action="userlogin_process.php">

但是任何一种方式都是错误的,因为会话应该在页面顶部开始。并最后尝试修复所有这些小错误,它可能会工作或抛出另一个错误,这在任何一种情况下都是好的,因为是向前移动:)

答案 1 :(得分:0)

要尽早停止发送标头,最好缓冲输出并在脚本末尾发送。为此,请在php.ini中启用缓冲。

output_buffering = On