PHP似乎不能从表单(post和get)接收值

  • 本文关键字:get post 不能 表单 PHP 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> 
            ";
        }
    }

我所做的就是用get代替post方法。我发现的是,即使值是在url,它仍然没有工作!我似乎从来没有收到任何值,所以它使用最后一个else

首先要检查的是您实际上有PHP>= 4.1。在旧版本的PHP中,$_GET和$_POST是不存在的。

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

第三:我已经在我的主机上执行了你的脚本,并以"else if"分支结束。显然,您的脚本没有问题,但问题在于您的主机处理请求的方式。你是共享主机吗?一些共享主机有意关闭了超全局变量,这时你需要使用$GLOBALS["_POST"]而不是$_POST

当然还要使用session_start()

实际上你的代码似乎工作,但你应该启用你的会话与

 session_start();

放在代码前面。然后我就可以提交登录凭据并注销了。

欢呼,

最新更新