【发布时间】:2011-08-16 04:15:27
【问题描述】:
我在使用标头方法重定向页面时遇到问题。我想我知道问题是什么。但我对 PHP 场景很陌生,所以我不知道还能尝试什么。从我读过的内容来看,如果页面已经在标题之前发送了数据,则不会触发 header() 方法。我觉得这可能是我的问题的一部分,因为我的标题函数之前有几个 echo 语句。会不会是别的东西?我该如何解决这个问题?
回显语句证明正在定位正确的用户名和密码。我在标题所在的位置放置了一个测试回显语句,它工作得很好。所以,我知道数据库正在查找正确的信息。插入信息时页面会刷新。感谢观看。
<div id= "sidebar" >
<div id="login-box">
<form name="client-login" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<label id="user-lbl">Username:</label><br /><input type="text"
name="username" id="username" /><br /> <label id="pass-lbl">Password:</label><br /><input
type="password" name="password" id="password" /><br /> <label> </label><input
type="submit" value="Login" class="submit" id="login" />
</form>
<?php
$username = $_POST['username'];
$password = $_POST['password'];
if((!isset($username)) || (!isset($password))){
echo "<p>Username is $username. Password is $password.</p>";
}else{
$mysql = mysql_connect("myhost", "username", "password");
if(!$mysql){
echo "<p>Cannot connect to database!</p>";}
$selected = mysql_select_db("mydb", $mysql);
if(!$selected){
echo "<p>Cannot find database!</p>";}
$query = sprintf("SELECT count(*) FROM users WHERE username = '%s' AND password = '%s'", mysql_real_escape_string($username),mysql_real_escape_string($password));
$result = mysql_query($query, $mysql );
if(!$result){
echo "<p>Cannot run query.</p>";}
$row = mysql_fetch_row($result);
$count = $row[0];
if ($count > 0){
header("Location: account.php"); die();} else {echo "<p>Invalid username or password!</p>";}
}
?>
</div><!-- #login-box -->
【问题讨论】:
-
开启
error_reporting(E_ALL)。这会让你犯下的所有错误 -
对!由于您是 PHP 新手,因此在开发过程中始终保持打开错误报告。对你有很大帮助。
-
@rabudde 这是我应该在我工作的每个 php 页面中添加的内容吗?我需要更改ini文件吗?知道任何好的文学作品吗? Php.net 有一个手册,但它有点吓人。谢谢你们的提示!
-
我不知道有什么好的文献。我都是边做边学的。开启 error_reporting 只对开发有好处,对生产没有好处,但这有助于我经常发现故障。