0

I built an Admin-login using sessions, however it doesn't work, it requests me to login again. It does not recognize the session.

What's wrong?

<!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>
DForck42
  • 19,789
  • 13
  • 59
  • 84
UnderPhp
  • 328
  • 1
  • 2
  • 14

1 Answers1

1

You need to put session_start() before anything that produces output. So change the beginning of the script to:

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

See How to fix "Headers already sent" error in PHP

Community
  • 1
  • 1
Barmar
  • 741,623
  • 53
  • 500
  • 612