2016-09-08 240 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。 –