2014-12-13 137 views
0

我遇到了一个简单的验证文件问题,它在登录成功后没有重定向到索引页。成功登录后PHP重定向

基本上login.php文件具有用于登录的html表单,表单调用auth.php文件,该文件已经有登录数据并决定您的登录名和密码是否正确。现在它应该在成功登录后重定向到index.php,但它不会,它只是清理login.php文件中的表单,并继续尝试,但如果刷新页面(成功登录后),您将自动重定向索引页面。

固定!将代码更改为更简单的代码。

回答

0
if($logindata[$_POST["username"]]==$_POST["password"]) 

这一点看起来不正确;也许你正在寻找:

if($logindata[$_POST["password"]]==$_POST["password"]) 
+0

nope它检查数组,如果密码与用户名数组在同一位置。 – EvilNabster 2014-12-13 13:32:11

-1

有时头不能很好地对某些原因的工作,而不是试图用一个简单的HTML重定向这样的:

<?php 
$usernames = array("user1", "user2"); 
$passwords = array("pass1", "pass2"); 
$page = "index.php"; 
for($i=0;$i<count($usernames);$i++){ 
    $logindata[$usernames[$i]]=$passwords[$i]; 
} 
    $found = 0; 
    for($i=0;$i<count($usernames);$i++) {  
     if ($usernames[$i] == $_POST["username"]) {  
     $found = 1;  
     } 
     } 
     if ($found == 0) { 

      $redirect_url = "./login.php?login_error=1" 

     } 

if($logindata[$_POST["username"]]==$_POST["password"]) {   
    session_start();  
    $_SESSION["username"]=$_POST["username"]; 

$redirect_url = "./index.php" 

    } 
    else {  
     $redirect_url = "./login.php?login_error=2" 

    } 

    echo "<center><br><br><br><p>You will be redirected in about 2 seconds. If not, click this link: <a href='$redirect_url'>Back</a></p></center>"; 

    ?> 
    <html> 
      <head> 
      <meta http-equiv="refresh" content="2;url='<?php echo "$redirect_url"; ?>'/> 

     <title>Redirecting...</title> 
      </head> 
      </html> 

<?php 

exit; 

?> 

我推测,重定向位置是相同的php文件的文件夹。调整它们不是的var $ redirect_url路径。

+0

,这完全打破了验证 – EvilNabster 2014-12-13 13:31:27

+0

标头位置总是很好。如果一个标题位置不能正常工作99.9%,因为在输出之前你试着改变标题。对于好的做法,你应该总是遵循一个标题('Location:http://www.example.com');'用'exit;' – DarkBee 2014-12-13 14:32:05