php - 为什么我每次都收到我已经发送标题的错误消息

标签 php mysql html header

我还有一个关于网络编程的问题。

我编写了一个登录脚本,但每次我尝试登录时,它都说我已经发送了标题信息。

这是两个文件:

<?php
if($_GET['logout'] == 1) {
    setcookie('authorized', 1, time()-3600);    
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Login - photoAdminSite</title>
</head>

<style type="text/css"> 
    body {
    text-align: center;
    font-family: helvetica;
    }

    #loginForm {
    padding: 1em;
    background: #e3e3e3;
    width: 260px;
    margin: 3em auto 0;
    text-align: left;

    }
</style>

<body>

<div id="loginForm">
<form method="post" action="confirm_login_credentials.php">

<h2>LOGIN</h2>
<p>Username: <input type="text" name="username" /></p>
<p>Password: <input type="password" name="password" /></p>
<p><input type="submit" value="Login" name="submit" /></p>

</form>
</div>
</body>
</html>





<?php
$username = $_POST['username'];
$password = $_POST['password'];

require 'database.php';

$q = "SELECT id FROM users_photoadminsite WHERE user_name = '$username' AND password = '$password'";

$result = $mysqli->query($q) or die(mysqli_error());

if (mysqli_num_rows($result) == 1) {
    setcookie('authorized', 1, 0);
    header("Location: index.php");
} else {
    header("Location: login.php");  
}
?>

如果有一些有用的答案,我会非常高兴。

最佳答案

在将任何输出发送到浏览器之前,必须设置 Cookie 和 header 。尝试将您的登录脚本移动到页面顶部。您可能还需要考虑清理查询以防止恶意事件。

关于php - 为什么我每次都收到我已经发送标题的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2804645/

相关文章:

PHP 在 url 中发布

mysql - 在关系数据库中,所有将在查询中排序的列都应该有一个索引吗?

javascript - 如何防止 iframe 中的链接在新标签页中打开

javascript - jQuery SlideUp() 影响其他列表的 SlideDown()

mysql - 如果不在另一个表中,则从一个表中选择,否则从另一个表中选择

php - 具有相同名称的多个表单数据

php - 使用 PHP 的 Apache 速度

php - 无法使用网络服务插入数据库

javascript - 如何在点击按钮后自动加载一个div?

mysql - 组中的行编号不正确