0

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

?>
4

3 回答 3

1

session_register已弃用。因此,输出已经发送,您可能会看到错误报告已打开。之前什么都不能输出header

于 2012-11-08T18:14:41.640 回答
1

我猜您的标头已经发送,这会使您尝试使用的标头无效(尽管 PHP 通常会告诉您这是一个问题)。

可能导致您的标头自动发送的是您的 php 块之外的任何正常输出(例如,如果您的表单 html 存在于此块上方)。

于 2012-11-08T18:16:18.013 回答
0

事实证明,问题似乎是我的代码中的空格。一旦我删除了所有间距,问题就消失了。有点奇怪——但这就是发生的事情。感谢帮助!

于 2012-11-09T17:02:36.360 回答