【问题标题】:PHP form only returning empty arrayPHP表单只返回空数组
【发布时间】:2015-08-20 21:02:14
【问题描述】:

我正在处理一个代码段,它是名称列表旁边的消息传递函数。页面上有一个信封,当您单击它时,会出现一个弹出窗口,其中包含一个文本区域。我希望能够用字符填充该文本区域,并使用我已经运行的 sendMessage 函数将其作为消息发送。我知道我的 sendMessage 函数有效,并且我已将问题与提交按钮给出的返回隔离开来。如何让我的提交按钮将文本区域发布到页面(请记住,此页面上有 2 个以上的表单)。代码如下所示:

if (empty($_POST) === false) {
    print_r($_POST);
    $blah = $_POST;
    echo "<script>window.top.location='asd.$blah'</script>"; 
}

if (empty($_POST['Send']) === false) {

    echo "<script>window.top.location='../hidden/PNMasdd.php?gpa=$var1&year=$var2&major=$var3&sport=$var4'</script>";
    echo 'YOU ARE IN THE SENDING MESSAGE FIELD';

    if( empty ($_POST['message_full']))
        {
            $errors[] = 'All fields must be filled in!';
            //print_r($errors);
        }

    if(empty($_POST) === false && empty($errors) === true)
        {
            $receiver_id = $temp_user['id'];
            $sender_id   = $user_data['id'];

            $type = 0;

            if(empty($is_Convo))
                {
                    $is_Convo = 0;  
                }

            $blahVar = $user_data['id'] . ',';
            $message = str_replace("\r\n", "<br>", $_POST['message_full']);
            $message_data = array(
                                  'sender_id'               => $user_data['id'],
                                  'receiver_id'         => $receiver_id,
                                  'message_full'            => $message,
                                  'is_opened'               => $blahVar,
                                  'isConvo'             => $is_Convo,
                                  'type'                    => $type
                                  );
            //Put data limit code here

            send_message($message_data);
            $my_exten = "Messages/messages.php";
            $noti_data = array(
                               'id_receive'         => $receiver_id,
                               'id_sent'                => $user_data['id'],
                               'type'                   => 1,
                               'exten'                  => $my_exten   
                               );
            notify($noti_data);

            echo '<center>';
            echo '<div class="alert alert-info">
                          <strong>It sent!</strong> You have sent a message successfully!
                  </div>
        ';
            echo '</center>';
        }
    else{
        echo output_errors($errors);
    }
}   

?>

<form id="wow" name="wow" action="" method="POST">
    <div class="row">

    </div>
    <div class="row">
    <div class="form-group">
    <div class="col-md-12">
    <center>
    <textarea maxlength="100000" data-msg-required="Please enter your message." rows="10" cols="100%" class="form-control" name="message_full" id="message_full"></textarea>
    </center>
    </div>
    </div>
    </div>

</form>

</div>
<div class="modal-footer">
<table width=90%><td width=45%><button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button></td><td width=45%> 

<button type="submit" value="Send Message" name="Send" onclick="document.getElementById('wow').submit()" class="btn btn-primary">Send</button>

【问题讨论】:

  • A.你能把那个代码整理一下吗?我敢肯定,如果 ti 被正确缩进并删除了很多空白,那将是一种绝对的快乐。 2. 问题是什么?
  • 表单中没有Send 字段,因此empty($_POST['Send']) 始终为真。
  • 您的表格在行周围缺少&lt;tr&gt;
  • @JayBlanchard 1. 我会尝试为 StackOverflow 编辑它。 2. 当我单击代码末尾的提交按钮时,它会向页面发布一个空数组。在顶部,您可以看到 if($_POST){...} 并将您发送到返回的 url。每次退货都是空的。我很好奇如何返回 textarea 的内容而不是什么。
  • @Barmar 最后一行有一个名为“Send”的提交按钮。您是否忽略了这一点,或者这不是它的工作原理?

标签: php html forms post multiple-forms


【解决方案1】:

正如 cmets 中所指出的,按钮需要在您的表单中。

你的设置对我来说有点奇怪,但试试这个..它很可能需要一些调整,我不确定取消按钮..

  <form id="wow" name="wow" action="" method="post" >
    <div class="form-group required">
      <div class="col-md-12">
        <textarea name="message_full" id="message_full" rows="10" cols="100%" class="form-control" maxlength="10000" placeholder="Please enter your message." autocomplete="off"></textarea>
      </div>
    </div>


    <div class="buttons"> <!-- add css for this or change the class to yours.. -->
        <input class="btn btn-default" data-dismiss="modal" value="Cancel" />
        <input class="btn btn-primary" type="submit" value="Send Message" />
    </div>
  </form>

【讨论】:

    【解决方案2】:

    正如@Barmar 刚才所说,您没有任何名为“发送”的字段。你应该改变:

    if (empty($_POST['Send']) === false)
    

    到:

    if (empty($_POST['message_full']) === false)
    

    (编辑)

    只有表单中的字段会到达 $_POST 超全局,提交按钮不会到达那里

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-03
      • 2018-06-19
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 2015-01-10
      相关资源
      最近更新 更多