0

我有一个关于在表单提交上使用 PHP_SELF 的问题。这就是我在index.php中的内容:

<body>
    <div class="container">
        <div class="row">
            <div class="span12">
                <?php
                    // If you get an appid, 
                    if(isset($_GET['appid'])) {
                        // GET appid
                        $appid = $_GET['appid'];

                        $json_url  ='http://api.nameurl.com/api/gateway/call/1.4/getApp?appid=' . $appid;

                        $ch = curl_init($json_url);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

                        $str = curl_exec($ch);
                        curl_close($ch);

                        $data = json_decode($str);
                        $array = json_encode($data);
                    }  
                    else if(isset($_POST['submit'])){
                        $name = $_POST['appid'];
                        echo "User Has submitted the form and entered this name : <b> $name </b>";
                        echo "<br>You can use the following form again to enter a new name."; 
                    }
                    else{ ?>
                        <!-- Form -->
                        <form class="well" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">  
                            <label>Your appid</label>  
                            <input type="text" class="span3" name="appid" id="appid" placeholder="Type your appid here...">  <br>
                            <button type="submit" id="submit" class="btn btn-primary" data-loading-text="Loading...">Submit</button>  
                        </form>

                <?php }   
                ?>

                <p id="errors" class="text-error"></p>
            </div>
        </div>

        <hr>

    </div>

我检查我是否从上一页获得了 appid。
是 -> 从 api 获取数据
否 -> 显示表单以便您可以插入 appid

然后,当您在表单上按提交时,我想获取 appid 插入并执行与上述相同的操作。

我究竟做错了什么?

4

5 回答 5

3

您已将表单的方法设置为post,但您正尝试使用 访问 appid $_GET['appid']。您要么需要将表单方法更改为get,要么使用访问 appid$_POST['appid']

于 2013-05-23T09:22:34.750 回答
3

试试这个....

<body>
        <div class="container">
            <div class="row">
                <div class="span12">
                    <?php
                        // If you get an appid, 
                        if(isset($_GET['appid'])) {
                            // GET appid
                            $appid = $_GET['appid'];

                            $json_url  ='http://api.nameurl.com/api/gateway/call/1.4/getApp?appid=' . $appid;

                            $ch = curl_init($json_url);
                            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

                            $str = curl_exec($ch);
                            curl_close($ch);

                            $data = json_decode($str);
                            $array = json_encode($data);
                        }  
                        else if(isset($_POST['submit'])){
                            $name = $_POST['appid'];
                            echo "User Has submitted the form and entered this name : <b> $name </b>";
                            echo "<br>You can use the following form again to enter a new name."; 
                        }
                        else{ ?>
                            <!-- Form -->
                            <form class="well" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">  
                                <label>Your appid</label>  
                                <input type="text" class="span3" name="appid" id="appid" placeholder="Type your appid here...">  <br>
                                <button type="submit" id="submit" name="submit" class="btn btn-primary" value="Submit" />  
                            </form>

                    <?php }   
                    ?>

                    <p id="errors" class="text-error"></p>
                </div>
            </div>

            <hr>

        </div>
于 2013-05-23T09:29:30.310 回答
2

没有定义 $_POST['submit']。原因是按钮没有name="submit"属性

于 2013-05-23T09:28:39.217 回答
0

提交按钮中缺少名称

  <button type="submit" name ="submit" id="submit" class="btn btn-primary" data-loading-text="Loading...">Submit</button>  
于 2013-05-23T09:25:14.963 回答
0

您将方法操作定义为POST但您将其检索为GET您也可以使用$_REQUEST从 post/get 请求中获取变量。

改变这个

if(isset($_GET['appid'])) {
                    // GET appid
                    $appid = $_GET['appid'];

if(isset($_REQUEST['appid'])) {
                    // GET appid
                    $appid = $_REQUEST['appid'];

也解决了案例。

$_REQUEST 中的变量是通过 GET、POST 和 COOKIE 输入机制提供给脚本的,因此可以由远程用户修改并且不可信。此数组中列出的变量的存在和顺序是根据 PHP variables_order 配置指令定义的。

http://php.net/manual/pl/reserved.variables.request.php

于 2013-05-23T09:40:08.817 回答