php中的header()未重定向

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脚本中,以检查用户是否存在于数据库中。如果成功,它应该重定向

这是我的密码:

<?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>";
?>