php
  • mysql
  • session
  • login
  • 2016-03-05 108 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':) :) –

    相關問題