2016-09-08 238 views
-1

我的登錄有問題,我的登錄僅適用於第二次嘗試。
我的安全網站代碼:PHP會話登錄

<?php 
session_start(); 
if(!isset($_SESSION["user"])){ 
    header('Location:login.php'); 
    exit; 
} 
?> 

的login.php我登錄的代碼是

<?php 
try { 
    $dbh = new PDO($dsn, $username, $password); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } 
    catch (PDOException $e) { 
     echo 'Verbindung fehlgeschlagen: ' . $e->getMessage() . '<br>'; 
    } 
    $myusername = $_POST['user']; 
    $mypassword = $_POST['pass']; 

    $myusername = stripslashes($myusername); 
    $mypassword = stripslashes($mypassword);     
    $stmt= $dbh->query("SELECT * FROM users WHERE username='$myusername' and password='$mypassword'"); 
    $count= $stmt->rowCount(); 
    $dbh=null; 
    if($count==0){ 
     header('Location:loginfail.php'); 
    } 
    if($count==1){ 
     $_SESSION["user"]= $_POST['user']; 
     header('Location:customerinfo.php') 
} 
>? 

我試着用print_r($_SESSION)檢查會議。該會話每次都會啓動,之後我可以訪問customerinfo網站。
有人可以幫助我嗎?
謝謝你們!

+3

你運行你的login.php中的session_start()? – Phiter

+3

你應該閱讀SQL注入和密碼散列。 – jeroen

+0

'stripslashes'不能防止SQL注入。 – chris85

回答

0

試試這個:

if(!$_SESSION["user"]){ 
    header('Location:login.php'); 
    exit; 
} 
+0

謝謝,它的工作原理,但有時我得到錯誤「錯誤的用戶名/密碼」,但用戶名和密碼是正確的。 –

+0

好吧,everthing現在工作!謝謝! –

+2

OP爲什麼要「試試這個」?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –