2015-07-26 4 views
0

Я создал Admin-login, используя сеансы, однако он не работает, он просит меня снова войти в систему. Он не распознает сеанс.Сессия php Dont work

Что случилось?

<!DOCTYPE HTML> 
<html> 
<head> 
<?php 
session_start(); 
include "../header.php"; 
echo $_SESSION['username']; 
?> 
<title></title> 
</head> 
<body dir="rtl"> 
<?php if(!isset($_SESSION['username'])) { ?> 
<h1>כניסה לפאנל ניהול</h1> 
<form action="index.php" method="post"> 
    <input name="adminName" placeholder="שם משתמש"> 
    <br> 
    <input name="adminPass" placeholder="סיסמה"> 
    <br> 
    <input type="submit" name="login" value="כניסה" class="btn btn-primary"> 
    </form> 
    <br> 
    <?php 
    $username = $_POST['adminName']; 
    $password = $_POST['adminPass']; 

    if(isset($_POST['login'])) { 
     $connect_db = mysql_connect("X", "X", "X"); 
     $select_db = mysql_select_db("X"); 
     $login_query = mysql_query("SELECT * FROM `X`.`admin_login` WHERE `Username` = '$username' and `Password` = '$password';"); 
     $login_num = mysql_num_rows($login_query); 
     if($login_num == 1) { 
      $da = mysql_query("SELECT * FROM `X`.`admin_login` WHERE `Username` = '".$_SESSION['username']."'"); 
      while($row = mysql_fetch_array($da)) { 
       $_SESSION['username'] = $username; 
       $_SESSION['name'] = $row['Name']; 
       $_SESSION['date'] = $row['Date']; 
      } 
      echo '<div class="alert alert-success"> 
        <strong>הצלחה!</strong> התחברת בהצלחה לפנאל ניהול! <a href="index.php">רענן</a> 
       </div>'; 
     } 
     else { 
      echo '<div class="alert alert-warning"> 
        <strong>שגיאה:</strong> שם המשתמש או הסיסמה אינם נכונים 
       </div>'; 
     } 
    } 
} 
else if(isset($_SESSION['username'])) { 
    echo 'ברוך הבא, '.$_SESSION['username']; 
} 
?> 
<br> 
</body> 
</html> 
+2

У вас есть session_start() в верхней части кода? – RamonRobben

+0

Да, у меня есть session_start(); – UnderPhp

+1

Оа, я вижу, что вы используете Mysql. Mysql устарел. Я не знаю, должен ли это быть ответом, но вы должны использовать PDO или Mysqli вместо Mysql. Поскольку Mysql не работает так хорошо с последним PHP. Я не думаю, что это имеет какое-то отношение к вашему вопросу, но я чувствую, что должен сообщить вам об этом. Также вы должны использовать подготовленные операторы для своих запросов, так как ваш код уязвим для SQL-инъекций. – RamonRobben

ответ

1

Вам нужно положить session_start(), прежде всего, что производит выход. Таким образом изменить начало сценария к:

<?php 
session_start(); 
?> 
<!DOCTYPE HTML> 
<html> 
<head> 
<?php 
include "../header.php"; 

См How to fix "Headers already sent" error in PHP