1

我尝试为我的活动页面制作一个登录表单。注册也完成了。我的问题是,当我成功登录时,我无法使用'header(location:)'重定向到起始页。请帮助我,或修复php的错误。谢谢!

注意:php 的链接是示例,不是真实的。

<?php

$hostname="host"; // Host of MySQL
$user="user"; // Username at MySQL
$password="pass"; // Password at MySQL
$dbname="db"; // Database on MySQL

$connection=mysql_connect($hostname, $user, $password);
    if(! $connection)
        {
            die(''.mysqlerror());
        }
mysql_select_db($dbname, $connection) or die('');

$given_email=mysql_real_escape_string($_POST['email']);
$given_pass=mysql_real_escape_string($_POST['pass']);

$sql="SELECT * FROM users WHERE email='$given_email' and password='$given_pass'";
$result=mysql_query($sql) or die(mysql_error());
$row=mysql_fetch_array($result);
$active=$row['active'];
$count=mysql_num_rows($result);

if($count==1)
{    
    //echo "OK";
    header( 'Location: http://www.yoursite.com/new_page.html' ) ;
    //setUrl ("http://testseite.aufderlicht.bplaced.de/loggedin/start.html");
}
    else 
    {
        setUrl ("http://testseite.aufderlicht.bplaced.de/login/err/err.html");
    }

//mysql_close($connection)

?>
4

2 回答 2

0

有时我只是将'/'相对路径放在标题中:

header ('Location: /');

但是,这是推荐的:

header ('Location: http://example.com/');

只这样做是行不通的:header ('Location: ');,如规范中所示:

注意:HTTP/1.1 需要绝对 URI 作为 » Location 的参数:包括方案、主机名和绝对路径,但有些客户端接受相对 URI。您通常可以使用 $_SERVER['HTTP_HOST']、$_SERVER['PHP_SELF'] 和 dirname() 自己从相对的 URI 中创建绝对 URI:

另外,几点注意事项:

  • 不要以纯文本形式存储密码。即使认为此注释不会修复您的代码,它也非常重要。

  • 在每个die(''). 按照他们的立场,他们只会杀死脚本而不提供任何有用的信息。很可能是其中一个被触发了。例如:

mysql_select_db($dbname, $connection) or die('Could not select database');

  • 不要将 mysql_* 函数用于新代码,因为它们已被弃用,PDO 或 mysqli_* 更好。
于 2013-08-21T00:37:00.787 回答
0

您可以使用 Javascript 而不是 PHP 页面进行重定向,特别是因为某些网络主机不允许在文件中间使用 header()。

这是一个例子:

       echo "
         <script type='text/javascript'>
              window.location.replace('http://www.yoursite.com/new_page.html');

         </script>";
于 2013-08-21T01:50:29.280 回答