【问题标题】:can't start session for user's无法启动用户的会话
【发布时间】:2014-01-30 11:58:08
【问题描述】:

我无法启动会话,即使此代码在其他网站上正确运行,但在我现在构建的网站中它不会工作。这是代码:

if(isset($_POST["username"])&& isset($_POST["password"])) {
    $manager = preg_replace('#[^A-Za-z0-9\@\-\_\|\,\.\\p{L}\\\\]#i', '', $_POST["username"]);//filter everything but numbers and letters
    $password = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["password"]);// filter everything but numbers and letters
    // Connect to the Mysql database
    $q = "SELECT * FROM users WHERE username='$manager' AND password='$password' LIMIT 1";
    $r = mysqli_query($dbc, $q);
    $userCount = mysqli_num_rows($r);

    if($userCount == 1 ) {

            while ($user = mysqli_fetch_assoc($r)) {

                $id = $user['id'];
                $pass = $user['password'];  
                $us = $user['username'];

            }

            $_SESSION["id"] = $id;
            $_SESSION["manager"] = $us;
            $_SESSION["password"] = $pass;
            header("location:index.php?page=business");
            exit(); 

    } else { 
        echo 'That information is incorrect,try again <a href="index.php">Click Here</a>';
    }   

} 

直到这部分代码

$id = $user['id'];
$pass = $user['password'];  
$us = $user['username'];

一切正常,但在我设置会话变量之后:

$_SESSION["id"] = $id;
$_SESSION["manager"] = $us;
$_SESSION["password"] = $pass;
header("location:index.php?page=business");
exit(); 

找不到会话,谁能帮帮我?

【问题讨论】:

  • 您是否在 PHP 代码之上添加了 session_start()
  • 你在设置会话之前是否将 session_start() 放在了那个页面中
  • 你需要在两个脚本上添加 session_start()
  • 不,我没有,我忘记了
  • 对不起,伙计,我不知道我是怎么忘记的

标签: php session logging


【解决方案1】:

不要忘记使用会话开始,像这样:

session_cache_expire(20);
        session_start(); 
        session_unregister($username_session);
        session_register($username_session);

$_SESSION[$start_session] = time();
        $validation = true;
        $_SESSION[$username_session] = $user;

我所有的网站,我都用这个代码登录,你可以试试在你的登录上使用!

if ($_POST['btnLogin']) {

$texto = mysql_query("SELECT user, password from " . $site . "User");


$user = $_POST["user"];
$pwd = md5($_POST["pwd"]);

$users = array();
$pwds = array();

while ($row = mysql_fetch_array($texto)) {
    array_push($users, $row['user']);
    array_push($pwds, $row['password']);
}
$size = count($users);
$validation = false;
$i = 0;
do {
    if ($user == $users[$i] && $pwd == $pwds[$i]) {
        session_cache_expire(20);
        session_start(); // NEVER FORGET TO START THE <strong class="highlight">SESSION</strong>!!!
        session_unregister($username_session);
        session_register($username_session);
        $inactive = 1200;
        if (isset($_SESSION[$start_session])) {
            $session_life = time() - $_SESSION[$start_session];
            if ($session_life > $inactive) {
                header("Location: login.php");
            }
        }
        $_SESSION[$start_session] = time();
        $validation = true;
        $_SESSION[$username_session] = $user;

        header("Location: index.php");
    }
    $i++;
} while ($i < $size && $validation == false);
if ($validation == false) {
    $mensagemerro = 'Login Error!';
}
if (!mysql_close($conn)) {
    die('Could not close BD:' . mysql_error());
   }
}
?>

【讨论】:

  • 我不确定您是否打算将其发布到其他地方?编辑:这并没有解决关于使用会话的原始问题。
  • 这是我使用的类似代码!我在 mysql 数据库上检查用户和密码。如果是肯定的,我输入 index.php。如果没有,我会打印一条错误消息。也使用会话。谢谢
【解决方案2】:

在 PHP 中使用会话时,需要 session_start() 才能访问 $_SESSION 全局变量。

你在用这个功能吗?如果没有,请将其放入并测试一下。

【讨论】:

    【解决方案3】:

    当您要使用 SESSION 变量时,这意味着您要开始或恢复 SESSION。

    所以为了开始或恢复会话,请在进程之前使用session_start()

    【讨论】:

      猜你喜欢
      • 2013-11-27
      • 2017-05-29
      • 2023-03-10
      • 2013-08-05
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      • 2017-03-17
      • 2010-11-27
      相关资源
      最近更新 更多