2014-02-28 32 views
-1

這是我的login.php腳本。我的登錄腳本有什麼問題?

運行時,它會轉儲輸入內容的數組(錯誤2),完全忽略所有內容(我認爲)。我完全不知道什麼是錯的。

<?php 

    include('../../content/php/base.php'); 

    // Get data 
    $user = $_REQUEST['user']; 
    $pass = $_REQUEST['pass']; 

    // Encrypt password 
    include('../../content/php/salt.php'); 
    $pass = crypt($pass,$salt); 

    // Check database for user/check session 
    if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['user'])) { 
     header("Location: websiteURL"); 
    } elseif(!empty($user) && !empty($pass)) { 
     $user = mysqli_real_escape_string($con, $user); 

     if($result = mysqli_query($con, "SELECT * FROM users WHERE `user`='".$user."' AND `pass`='".$pass."'")) { 
      $row_cnt = mysqli_num_rows($result); 
      if($row_cnt == 1) { 
       $row = mysqli_fetch_array($result); 
       $email = $row['email']; 

       $_SESSION['user'] = $user; 
       $_SESSION['email'] = $email; 
       $_SESSION['LoggedIn'] = 1; 

       header("Location: websiteURL"); 
      } else { 
       echo "Error 1"; 
       die(); 
      } 
    } else { 
     echo "<pre>"; // dumps the array onto multiple lines instead of one 
     print_r($_REQUEST); 
     echo "</pre>"; 
     echo "Error 2"; 
     die(); 
    } 
} else { 
    echo "Error 3"; 
    die(); 
} 

?> 

這裏是print_r($ _ REQUEST)的完整輸出; :

Array 
(
    [user] => username 
    [pass] => password 
    [PHPSESSID] => 5958246ece69dfdff197ec46e4771aac 
) 
Error 2 
+1

下面是要添加的詳細信息:print_r($ _ REQUEST)的完整輸出。 – Daniel

+0

您可能還想添加'$ pass = mysqli_real_escape_string($ con,$ pass);'。 – CodeAngry

+2

諺語'session_start();'加載的地方?爲什麼我總是不得不提出這個問題,當我沒有看到它,但確定它,即使它沒有顯示。傻我。 –

回答

1

您的查詢沒有明顯

if($result = mysqli_query($con, "SELECT * FROM users WHERE `user`='".$user."' AND `pass`='".$pass."'") {...} 

$con一個有效的連接?

嘗試在表名users周圍加反引號。

你應該做一些錯誤檢查。看看輸出

// You can add this to the Error 2 block (for testing.. not production use) 
echo mysqli_error($con); 

這會給你一個什麼是錯誤的「想法」,並會幫助別人幫助你。

+0

如果他得到'錯誤2'的結果,查詢甚至沒有運行。其中一個變量'$ user'和'$ pass'是'empty()'。如果查詢有問題,「錯誤1」將顯示。 –

+0

@JonathanKuhn我認爲如果是這樣的話,他會得到'錯誤3' –

+0

是的,我的錯,我看到了tabbing搞砸了。顯示'empty()'調用被選中以匹配'Error 2'。 –

1

嘗試使用session_start();之前的任何包括。這確保了服務器會話啓動