PHP不是我的事,但我需要设置一个简单的登录区域 - 所以我在这里。以下是我发现的一些似乎有用的代码,但不会重定向。
如果我将重定向更改为回声,则可以正常工作。如果我将位置更改为“包含”而不是它有效。我在“位置”代码中做错了什么?
对于对此进行交替编码的建议持开放态度。我有一个网页,如果用户输入密码,则会显示该网站上的其他部分。所以我在该网站上有一个表单提交给这个代码,然后它应该重定向回来,现在可以看到新的部分。
这是我的代码 -
<?php
// error reporting
ini_set('display_errors',1);
error_reporting(E_ALL);
$host="localhost"; // Host name
$username="foo"; // Mysql username
$password="foo"; // Mysql password
$db_name="foo"; // Database name
$tbl_name="members"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
header("Location: http://www.google.com/");
// Register $myusername, $mypassword
// success
//session_register("myusername");
//session_register("mypassword");
}
else {
echo "Wrong Username or Password";
}
?>
答案 0 :(得分:1)
session_register
已弃用。因此,输出已经发送,您可能已经看到错误报告已打开。在header
答案 1 :(得分:1)
我猜你的标题已被发送,这会使您尝试使用的标题无效(尽管PHP通常会告诉您这是一个问题)。
可能导致标题自动发送的是php块之外的任何正常输出(例如,如果你的表单html存在于此块之上)。
答案 2 :(得分:0)
事实证明,我的代码中的问题似乎是空格。一旦我删除了所有间距,问题就消失了。有点奇怪 - 但那就是发生了什么。感谢帮助!