php中的header()未重定向
我有一个登录页面,其中有一个表单。登录数据被发送到php脚本中,以检查用户是否存在于数据库中。如果成功,它应该重定向 这是我的密码:php中的header()未重定向,php,header,Php,Header,我有一个登录页面,其中有一个表单。登录数据被发送到php脚本中,以检查用户是否存在于数据库中。如果成功,它应该重定向 这是我的密码: <?php $host="localhost:8889"; // Host name $username="root"; // Mysql username $password="root"; // Mysql password $db_name="TableName"; // Database name $tbl_name="Users"; // Tab
<?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";
}
?>
所以,我改变了这一点,因为它没有定义,也没有被弃用,现在可以工作了!谢谢大家 试试这个:
header("Location: http://localhost:8889/main.php");
Location
应该有大写字母L,最好尝试使用绝对URI
编辑
阅读本文后,最好检查php.ini中是否启用了
output\u buffering
。然后将ob\u start()
和ob\u end\u flush()
分别放在文件的顶部和底部。首先,您没有使用变量。您正在使用引号中的实际值。而不是:
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");
请在位置上大写“L”。如果这不起作用,尝试以下方法;
您可以使用Header_sent()检查错误
或者您可以在php上尝试javascript
<?php
echo "<script>window.location='../main.php'</script>";
?>
mysql\u*折旧,会话\u寄存器折旧…使用带有header()的相对路径通常不是一个好主意代码太旧了。尝试使用新的未弃用函数更新代码。将此代码添加到页面顶部以显示所有错误错误报告(E_all);ini_集('display_errors','1');在后面加空格:
。通常,我会在标题('Location:…')
之后调用exit()
,而不是die()
,尽管它们的工作原理相同。虽然这个答案展示了很好的技巧,但实际上不太可能解决OP的问题。HTTP头是不区分大小写的,空格是可选的,所有浏览器都支持相对URL,即使它不在规范中。这看起来几乎是完全重复的,即使是别人要求的。实际上,只要使用双引号,PHP就会输入适当的值。在单引号中,它将输出文本字符串。好的,但如果我在打印的If条件中放置一个echo,这不是问题。
// If no headers are sent, send one
if (!headers_sent()) {
header('Location: ../main.php');
exit;
}
<?php
echo "<script>window.location='../main.php'</script>";
?>