2014-12-02 107 views
0

我创建了一个简单的登录脚本,在一定程度上起作用。所有验证工作正常,所以如果我输入了错误的用户名和密码,它会显示错误消息您的用户名或密码错误,但是当我输入正确的用户名和密码时,它不会将用户指向users/index.php页面并对其进行排序只是重新加载登录页面。简单的登录脚本不能正常工作

这里是我的代码 -

<?php 

    session_start(); 

    $errors = []; 

    $username = isset($_POST['username']) ? $_POST['username'] : null; 
    $password = isset($_POST['password']) ? $_POST['password'] : null; 

    if(!empty($_POST)) { 
    if(empty($username)) { 
     $errors[] = "Please enter a username"; 
     echo "<style type=\"text/css\"> #username { background-color:#F5A9A9;border:1px solid #DF0101; } </style>"; 
    } 
    if(empty($password)) { 
     $errors[] = "Please enter a password"; 
     echo "<style type=\"text/css\"> #password { background-color:#F5A9A9;border:1px solid #DF0101; } </style>"; 
    } else { 

    if(empty($errors)) { 
     $connect = new PDO('mysql:host=localhost;dbname=uacvideos;charset=utf8mb4', 'root', ''); 
     $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     if(!$connect) { 
       header("Location:"); // ADD ERROR LINK 
      } 

     $salt = "Thisismysalt"; 
     $hashedpass = hash('sha512', $password . $salt); 

     $result = $connect->query("SELECT COUNT(*) FROM users WHERE username = '$username' AND password = '$hashedpass'"); 
      if($result->fetchColumn() > 0) { 
        $_SESSION['loggedin'] = 'true'; 
        $_SESSION['username'] = $username; 
        header("Location: users/index.php"); // ADD LINK 
       } else { 
        $errors[] = "Your username or password is incorrect"; 
       } 
      } 
     } 
    } 
?> 
+0

不'$错误= [];'引发的致命错误? – 2014-12-02 11:33:02

+0

@ S.Pols它不会像分配字符串值给一个字符串数组 – 2014-12-02 12:03:39

+2

在'header(“Location:users/index.php”)后面加'exit;'并且注释掉这个'header (“位置:”); //添加错误链接“并在其中回显。 – vaso123 2014-12-02 12:03:49

回答

0

你必须使用回声,使错误显示 示例代码:

echo $errors[] = "Please enter a username";