isset($_POST['submit'])或不设置,使表单显示不同的内容


making form show different content if !isset($_POST['submit']) or not

我正在尝试建立一个基于Zendesk API的联系表单。我想要达到的目标很简单。如果没有设置$_POST['submit']显示表单(如果表单没有提交),如果设置了$_POST['submit']则显示成功消息。我正在尝试下面的代码,但它不工作。我做错了什么?

        <?php
        define("ZDAPIKEY", "");
        define("ZDUSER", "");
        define("ZDURL", "");
        function curlWrap($url, $json, $action)
        {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            curl_setopt($ch, CURLOPT_MAXREDIRS, 10 );
            curl_setopt($ch, CURLOPT_URL, ZDURL.$url);
            curl_setopt($ch, CURLOPT_USERPWD, ZDUSER."/token:".ZDAPIKEY);
            switch($action){
                case "POST":
                    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
                    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
                    break;
                case "GET":
                    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
                    break;
                default:
                    break;
            }
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
            curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_TIMEOUT, 10);
            $output = curl_exec($ch);
            curl_close($ch);
            $decoded = json_decode($output);
            return $decoded;
        }
        if (!isset($_POST['submit'])) { 
        ?>
        <html>
        <div id="box_form">
        <form id="zFormer" method="POST" action="contact.php" name="former">
        <p>
        Your Name:<input type="text" value="James Duh" name="z_name">
        </p>
        <p>
        Your Email Address: <input type="text" value="duh@domain.com" name="z_requester">
        </p>
        <p>
        Subject: <input type="text" value="My Subject Here" name="z_subject">
        </p>
        <p>
        Description: <textarea name="z_description">My Description Here</textarea>
        </p>
        <p>
        <input type="submit" value="submit" id="submitter">
        </p>
        </form>
        </div>
        </html>
        <?
        } elseif  (isset($_POST['submit'])) { 
        foreach($_POST as $key => $value){
            if(preg_match('/^z_/i',$key)){
                $arr[strip_tags($key)] = strip_tags($value);
            }
        }
        $create = json_encode(array('ticket' => array('subject' => $arr['z_subject'], 'comment' => array( "body"=> $arr['z_description']), 'requester' => array('name' => $arr['z_name'], 'email' => $arr['z_requester']))));
        $return = curlWrap("/tickets.json", $create, "POST");
        ?>
        The form has been submitted!
        <? 
        }
        ?>

您的提交按钮没有命名

<input type="submit" value="submit" id="submitter">

<input type="submit" value="submit" id="submitter" name="submit">

因为你的两个条件语句都依赖于它

if (!isset($_POST['submit']))

elseif  (isset($_POST['submit']))

将错误报告添加到文件顶部,就在打开<?php标记之后:

error_reporting(E_ALL);
ini_set('display_errors', 1);

会产生一个未定义的索引错误