php
  • mysql
  • session
  • login
  • 2016-03-05 105 views -1 likes 
    -1

    因此,在'index.php'中,用户将他们的用户名和密码输入到HTML输入中,并将它们保存为'$ username'和'$ password'。那么PHP说: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 [”用户名“]”好了,但如果我然后去“home.php”它没有实际保存的变量,它说“注意:未定义的变量:_SESSION在/Applications/XAMPP/xamppfiles/htdocs/tobyscott/home.php上线24'

    这实在是烦我!谢谢:)

    +0

    'home.php'如何与'index.php'相关? 'index.php'包含'home.php'?如果没有:在'home.php'中是否有'session_start();'? – WcPc

    +1

    请贴出home.php的相关代码。很可能,它缺少'session_start()',必须在访问会话的每个脚本上调用(并在生成任何输出之前) –

    +0

    哦,Happy Joy !!非常感谢你,你们两个!问题的确是'home.php'缺少'session_start();' :D –

    回答

    1

    你有一个在session_start();声明在你的home.php中 - 或者它在那里失踪?

    +0

    是的,这是我的问题,但我现在得到它。谢谢! –

    0

    听起来像你使用提交给自己的脚本。

    添加一个条件,以确保表单处理逻辑只能运行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']; 
    } 
    

    OR:

    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']; 
    } 
    
    +0

    感谢您的帮助,男士!我已经明白了,我只是忘了'session_start();'在'home.php':) :) –

    相关问题