您好我有三个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> </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');
}
?>
答案 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