php似乎没有从表单接收值(post和get)

时间:2014-06-11 10:59:22

标签: php html

我正在尝试创建登录和注销系统。一切正常,直到我尝试发送隐藏值(最后)注销。用户将提交"隐藏价值"退出"但似乎价值没有发送。我尝试已经有不同的方法解决这个问题,但要么我总是收到错误消息(但代码有效)或者我没有收到错误消息,但它不起作用。

<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> 
            ";
        }

    }

我所做的是我用post替换了get方法。而我发现,即使价值在网址中,它仍然无效!我似乎从未收到任何价值,因此它使用了最后一个else

2 个答案:

答案 0 :(得分:1)

实际上您的代码似乎有效,但您应该使用

启用会话
 session_start();
在您的代码之前

。然后我就可以提交登录凭据并注销。

干杯,

答案 1 :(得分:1)

要检查的第一件事是你实际上有PHP&gt; = 4.1。在较旧的PHP $ _GET和$ _POST中不存在。

要检查的第二件事实际上是你的$ _REQUEST的print_r内容(它是$ _GET和$ _POST以及$ _COOKIE的组合),看看是否有一些数据实际上是你的脚本。

第三:我已经在我的主机上执行了你的脚本并最终进入了#34;否则如果&#34;科。显然,您的脚本没有问题,但主机处理请求的方式存在问题。你是共享主机吗?一些共享主机有意断开关闭超级全局,然后你需要使用$ GLOBALS [&#34; _POST&#34;]而不是$ _POST

当然使用session_start()