2016-09-08 4 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

ли вы запустить session_start() на вашем login.php? – Phiter

+3

Вы должны прочитать информацию о SQL-инъекциях и хэшировании паролей. – jeroen

+0

'stripslashes' не помогает предотвратить инъекции SQL. – chris85

ответ

0

попробовать это:

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

Спасибо, это работает, но иногда я получаю сообщение об ошибке «Неправильное имя пользователя/пароль», но имя пользователя и пароль верны. –

+0

Хорошо, все работает сейчас! Спасибо! –

+2

Зачем OP «попробуйте это»? *** Хороший ответ *** всегда будет объяснять, что было сделано и почему это было сделано таким образом, не только для OP, но и для будущих посетителей SO. –