我有一个包含表单的登录页面。登录数据被发送到php脚本以检查用户是否存在于DB中。如果成功,它应该重定向。
这是我的代码:
<?php
$host="localhost:8889"; // Host name
$username="root"; // Mysql username
$password="root"; // Mysql password
$db_name="TableName"; // Database name
$tbl_name="Users"; // 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){
// Register $myusername, $mypassword and redirect to file
session_register("myusername");
session_register("mypassword");
header("location:../main.php");
die();
}
else {
echo "Wrong Username or Password";
}
?>
Count为1,但不会发生重定向。
我已阅读this great answer并检查了以下内容:
ob_start
,但它也没有用。我对BOM不了解。你可以帮我吗?
我过去一直使用完全相同的代码,但是现在我在mamp和mac上工作不起作用。
感谢。
编辑:
我做了人们所说的,在修好这些内容并启用报告后,问题是:
Call to undefined sesion_register.
所以,我改变了它,因为它没有定义,也没有被弃用,现在可以使用了!谢谢大家!
答案 0 :(得分:1)
试试这个:
header("Location: http://localhost:8889/main.php");
Location
应该有一个大写字母L,尝试使用绝对URI总是好的。
修改强>
阅读此link之后,最好检查一下php.ini中是否启用了output_buffering
。然后将ob_start()
和ob_end_flush()
分别放在文件的顶部和底部。
答案 1 :(得分:0)
对于初学者,你没有使用你的变量。您在引号中使用实际值。而不是:
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
应该是:
mysql_connect($host, $username, $password)or die("cannot connect");
mysql_select_db($db_name)or die("cannot select DB");
答案 2 :(得分:0)
请在该位置加上“L”。如果这不起作用,请尝试以下方法;
您可以使用headers_sent()
// If no headers are sent, send one
if (!headers_sent()) {
header('Location: ../main.php');
exit;
}
或者你可以在php上试试javascript
<?php
echo "<script>window.location='../main.php'</script>";
?>
希望它有所帮助...