【问题标题】:Session php Dont work会话 php 不工作
【发布时间】:2016-11-09 05:07:43
【问题描述】:

我使用会话建立了一个管理员登录,但是它不起作用,它要求我再次登录。它无法识别会话。

怎么了?

<!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>

【问题讨论】:

  • 你的代码顶部有 session_start() 吗?
  • 是的,我有 session_start();
  • 哦,我看到您正在使用 Mysql。不推荐使用 Mysql。我不知道这是否应该是答案,但您应该使用 PDO 或 Mysqli 而不是 Mysql。由于 Mysql 不能很好地与最新的 PHP 一起工作。我认为这与您的问题无关,但我觉得我应该通知您。此外,您应该为查询使用准备好的语句,因为您的代码容易受到 SQL 注入的攻击
  • 这里可能不是问题,但这是一个的大问题。切换到 PDO 或 MySQLi。
  • @SkyRamon 在他的评论中总结得很好。更快、更安全、更面向未来。

标签: php session


【解决方案1】:

您需要将session_start() 放在任何产生输出的内容之前。所以把脚本的开头改成:

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

How to fix "Headers already sent" error in PHP

【讨论】:

    猜你喜欢
    • 2011-08-16
    • 2012-02-13
    • 2013-01-29
    • 1970-01-01
    • 2014-04-10
    • 2017-09-20
    • 2012-06-27
    相关资源
    最近更新 更多