簡體   English   中英

php似乎不從表單接收值(發布並獲取)

[英]php seems not to receive values from forms (post and get)

我正在嘗試創建一個登錄和注銷系統。 一切正常,直到我嘗試發送隱藏值(最后)以注銷。 用戶會“提交”隱藏值“注銷”,但似乎該值未發送。 我已經嘗試了不同的方法來解決此問題,但是要么我總是收到錯誤消息(但代碼有效),要么我沒有收到錯誤消息,但它不起作用。

<section>
<h2>Zaloguj się do systemu</h2>
<?php
    //$username;
    //$password;


    if(empty($_SESSION['userpass']) && empty($_POST['pass'])){
        //create a log in form if no one is log in
        echo "
            <form method='post' action='./indexLogin.php'>
                <table>
                    <tr>
                        <td>Urzytkownik:</td>
                        <td><input type='text' name='name'/></td>
                    </tr>
                    <tr>
                        <td>Hasło:</td>
                        <td><input type='password' name='pass'/></td>
                    </tr>
                </table>
                <input type='submit' value='Wyślij'>
            </form>
        "; //end of echo
    }

    else if(empty($_SESSION['userpass']) && !empty($_POST['pass'])){
        //echo the user name and his password
        $userName = $_POST['name'];
        $password = $_POST['pass'];
        echo "Nastąpiło poprawne zalogowanie do systemu";

        //save user password to session
        $_SESSION['username'] = $userName;
        $_SESSION['userpass'] = $password;
    }

    //problem starts here
    else{
        if($_POST['logout'] == true){
            session_destroy();
            echo "Nastąpiło poprawne wylogowanie z systemu";
        }
        else{
            echo "Jesteś zalogowany jako: ".$_SESSION['username'];
            echo "
                <form method='post' action='./indexLogin.php'>
                    Do you want to log out?<br/>
                    <input type='hidden' name='logout' value='true'> 
                    <input type='submit' value='Wyloguj'>
                </form> 
            ";
        }
    }


?>

當我使用此代碼時,我沒有收到錯誤消息,但它不起作用

//problem starts here
    else{

        if(!empty($_POST['pass'])){
            //confirmation that log out was successful 
            //$_POST['logout'];
            session_destroy();
            echo "Nastąpiło poprawne wylogowanie z systemu";
        }

        else{
            //form to log out
            echo "Jesteś zalogowany jako: ".$_SESSION['username'];
            echo "
                <form method='post' action='./indexLogin.php'>
                    Czy chesz się wylogować?<br/>
                    <input type='hidden' name='logout' value='1'> 
                    <input type='submit' value='Wyloguj'>
                </form> 
            ";
        }

    }

我所做的就是用get替換post方法。 而且我發現,即使該值在url中,它仍然不起作用! 我顯得那么它使用的最后一個,它從來沒有收到任何價值else

實際上您的代碼似乎可以正常工作,但是您應該使用

 session_start();

在您的代碼之前。 然后,我可以提交登錄憑據並注銷。

干杯,

首先要檢查的是您實際上有PHP> = 4.1。 在較早的PHP中,$ _ GET和$ _POST不存在。

要檢查的第二件事實際上是$ _REQUEST的print_r內容(它是$ _GET和$ _POST以及$ _COOKIE的組合),並查看是否確實有一些數據寫入了腳本。

第三:我已經在主機上執行了您的腳本,最后進入了“ else if”分支。 顯然,腳本沒有問題,但是主機處理請求的方式有問題。 您在共享主機上嗎? 一些共享主機有意關閉了超級全局變量,然后您需要使用$ GLOBALS [“ _ POST”]代替$ _POST

當然使用session_start()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM