【问题标题】:PHP Session Variables Not Being Saved [duplicate]PHP会话变量未保存[重复]
【发布时间】:2016-03-06 06:41:20
【问题描述】:

所以在 'index.php' 中,用户将他们的用户名和密码放入 HTML 输入中,并将它们保存到 '$username' 和 '$password' 中。然后 PHP 说:

<?php
$loginquery = mysqli_query($connection,"SELECT * FROM users WHERE username = '$username' AND password = '$password'");
$user = mysqli_fetch_array($loginquery);
session_start();
$_SESSION['username'] = $user['username'];
echo $_SESSION['username'];
?>

它回显了'$_SESSION['username']',但是如果我然后转到'home.php',它实际上并没有保存变量,它说'注意:未定义的变量:/Applications/XAMPP 中的_SESSION /xamppfiles/htdocs/tobyscott/home.php 第 24 行'

这真的让我很烦!谢谢:)

【问题讨论】:

  • home.phpindex.php 有什么关系? index.php 是否包含 home.php?如果没有:home.php 中是否有 session_start();
  • 请贴出home.php的相关代码。很可能它缺少session_start(),必须在每个访问会话的脚本上调用它(并且在生成任何输出之前)

标签: php mysql session login


【解决方案1】:

你有 session_start();您的 home.php 中的声明也是如此 - 还是那里丢失了?

【讨论】:

  • 是的,那是我的问题,但我现在明白了。谢谢!
【解决方案2】:

听起来您正在使用提交给自身的脚本。

添加一个条件以确保表单处理逻辑仅在 get/post 提交时运行:

if( !empty( $_POST[ 'varname' ] ) )
{
    // Logic
    $loginquery = mysqli_query($connection,"SELECT * FROM users WHERE username = '$username' AND password = '$password'");
    $user = mysqli_fetch_array($loginquery);
    session_start();
    $_SESSION['username'] = $user['username'];
    echo $_SESSION['username'];
}

或者:

if( !empty( $_GET[ 'varname' ] ) )
{
    // Logic
    $loginquery = mysqli_query($connection,"SELECT * FROM users WHERE username = '$username' AND password = '$password'");
    $user = mysqli_fetch_array($loginquery);
    session_start();
    $_SESSION['username'] = $user['username'];
    echo $_SESSION['username'];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多