我附上了我的代码,用于在php中进行非常基本的登录。它给出了一个错误
无法发送会话Cookie - 标头 已发送(输出开始于 C:\ XAMPP \ htdocs中\ netsentries \˚F\包括\的functions.php:1)
<?php
if (!isset($_POST['username'])) {
?>
<h3>Login</h3>
<form action="" method="post">
Username<br/>
<input name="username" type="text" /><br/>
Password<br/>
<input name="password" type="password" /><br/>
<input name="" type="submit" /><br/>
</form>
<?php
}
else
{
include('includes/config.php');
$data['username']= $_POST['username'];
$data['password']= md5($_POST['password']);
connect($db_name,$db_user,$db_pass,$db_host);
$query= "select * from user where username='" . $data['username'] . "' AND password='" . $data['password'] . "'";
$result=mysql_query($query);
//check that at least one row was returned
$rowCheck = mysql_num_rows($result);
if($rowCheck > 0)
{
while($row = mysql_fetch_array($result))
{
session_start();
session_register($data['username']);
//successful login code will go here...
//echo 'Logged in!';
}
}
else
{
echo "Failed!";
}
}
?>
无法找出问题
答案 0 :(得分:3)
在您输出任何HTML后,您无法session_start
。将session_start
调用移到顶部,并保留一个变量,以便稍后回显。任何不在<?php ?>
内的内容,甚至包括你的包含文件。
答案 1 :(得分:2)
您需要在页面上的任何输出之前放置session_start()。
<?php
session_start();
if (!isset($_POST['username'])) {
?>
<h3>Login</h3>
<form action="" method="post">
Username<br/>
<input name="username" type="text" /><br/>
Password<br/>
<input name="password" type="password" /><br/>
<input name="" type="submit" /><br/>
</form>
<?php
}
else
{
include('includes/config.php');
$data['username']= $_POST['username'];
$data['password']= md5($_POST['password']);
connect($db_name,$db_user,$db_pass,$db_host);
$query= "select * from user where username='" . $data['username'] . "' AND password='" . $data['password'] . "'";
$result=mysql_query($query);
//check that at least one row was returned
$rowCheck = mysql_num_rows($result);
if($rowCheck > 0)
{
while($row = mysql_fetch_array($result))
{
session_register($data['username']);
//successful login code will go here...
//echo 'Logged in!';
}
}
else
{
echo "Failed!";
}
}
?>
答案 2 :(得分:2)
如果您尝试使用任何修改标题的函数(例如header
或session_start
),您需要确保事先输出无,即使是空格 - 否则你会得到那个错误。
答案 3 :(得分:2)
中途你有
session_start();
但在此之前你不想要任何输出。而且你至少已经发送了这个:
<h3>Login</h3>
<form action="" method="post">
Username<br/>
<input name="username" type="text" /><br/>
Password<br/>
<input name="password" type="password" /><br/>
<input name="" type="submit" /><br/>
</form>
将会话置于顶部:D
答案 4 :(得分:1)
include('includes/config.php');
在该文件中查找空格。
特别是在?&gt;之后在文件的末尾通常有空格。
所以省略关闭?&gt;在文件的末尾。
答案 5 :(得分:0)
确保在会话呼叫之前绝对没有输出任何内容 - 即使是空格。 (见Pekka的评论:))