2011-08-29 109 views
0

好吧,所以基本上,我一直在尝试这个小时或2现在。 当用户登录我的网页时,他们似乎不会被重定向到user.php。 他们只看到一个小空框,仍然在index.php上。PHP:登录不能重定向

我的表单操作是这样的:

<form id="login" method="POST" autocomplete="off" action="<?php echo $_SERVER['PHP_SELF'];?>"> 

再有就是当用户成功登录在要执行的代码:

if ($username == $dbusername && md5($password) == $dbpassword) 
{     
    //You're in! 
    $_SESSION['username'] = $username; 

    header("Location:user.php");  
} 
else die blablabla 

而且仍然是用户不似乎被重定向。

我会怎么做?

+1

确保在调用'header'之前不输出任何内容。也查找为什么(普通)md5不好 – knittl

+0

尝试在'header()'后面放置'exit;'代码 –

回答

1

首先,$_SERVER["PHP_SELF"]是XSS敏感,所以请逃吧。

把你的头语句之后的模具()语句(只能使用绝对URI,而不是相对的像你所做的那样)。

+0

我现在得到了这个工作,谢谢! :) – Kaizokupuffball

0

尝试改变这个...

if ($username == $dbusername && md5($password) == $dbpassword) 
{     
    //You're in! 
    $_SESSION['username'] = $username; 

    header('Location:/user.php'); 
    exit(); 
} 
    else die blablabla 

而且一直使用的exit();头后重定向

+0

这也行不通。但是,无论如何。这令人沮丧。 – Kaizokupuffball

0

如果标题标签没有为你工作,也许你可以尝试用零等待时间HTML元替代(http://www.w3schools.com/html/html_meta.asp)。如果你使用这种方法,如果重定向不发生,不要忘记把链接放到你重定向的页面上。

+0

谢谢,我会记住,如果标题标签不起作用。 :) – Kaizokupuffball

0

您是否尝试了不同的浏览器?我听说Chrome需要 标题(“Status:200”);

避免使用$ _ SERVER [ 'PHP_SELF'](安全隐患),并使用SHA256,而不是MD5(也考虑盐)。

您是否尝试过检查,如果“如果条件”实际上是满足? 也尝试使用您的标题中的完整网址,看看是否有任何区别。

+0

好吧,我现在已经添加了SHA256,并会看看盐。谢谢! – Kaizokupuffball