$ _POST表单未提交数据

时间:2017-07-23 10:32:51

标签: php html ajax forms

所以我正在尝试构建一个非常简单的(半)电子邮件系统,仅用于练习和学习。

所以我的导航栏上有用户个人信息加载到正文(右侧)。导航栏内有可点击的链接,允许用户撰写,阅读消息等。

链接附有PHP参数,如下所示。

<a href="body.php?action=compose">

在下面的图片中它只是一个页面加载,所以出于调试目的,我使用get not set,因为没有采取任何操作(链接点击)

enter image description here

现在,当用户想要撰写电子邮件并点击撰写时,会发生以下情况:

我的逻辑

在这种情况下,我得到了用户想要通过附加到url 的参数获取的操作,因此最后会出现一个允许用户撰写/发送消息给另一个用户的表单,如下所示:

enter image description here

我通过以下代码实现此目的:

if($_SERVER['REQUEST_METHOD'] == 'GET'){
                if(isset($_GET['action'])){
                 //get which action user wants to take in this example compose email
                    $action = $_GET['action'];
                    if($action == 'compose'){
                        ?>
                        <form name="composeMsg" method="post" id="composeMsg" action="">
                        <input type="text" name="receipnt" placeholder="Receipnt" id="from">
                        <div class="break"></div>
                        <input type="text" name="subject" placeholder="Subject" id="subject">
                       <div class="break"></div>
                        <textarea placeholder="Message" name="msgBody" style="width: 350px; height: 200px">
                        </textarea>
                        <div class="break"></div>
                            <button type="submit" name="sendMsg" class="btn btn-danger">SEND</button>
                        </form>
                <?php
                        }
                       //submit button has been clicked
                        if(isset($_POST['sendMsg'])){
                         //execute script to send msg
                        $check = $msgClass->composeMsg('14', $_POST['receipnt'], $_POST['subject'], $_POST['msgBody'], date('Y-m-d') );
                        if($check ==  true){
                            echo '<h1>MSG SENT!</h1>';
                        }
                        elseif($check == false){
                            echo '<h1>OOPS...SOMETHING WENT WRONG!</h1>';
                        }
                    }//isset msgSent

我的问题

发送邮件时我得到的只是重新加载的屏幕。没有错误,没有警告,没有脚本执行,所以我真的不知道从哪里开始调试。

我尝试使用电子邮件表单和我的composeMsg()方法创建一个测试页面,该方法可以工作并将数据插入到数据库中。但是当我将它实现到我的主页面时,当点击提交页面时,只需重新加载而不进行任何操作(如上所述)。

我已经尝试将form方法设置为$ _GET而不是$ _POST但仍然是相同的结果

任何帮助表示赞赏!

其他INFO

我发送消息的方法如下所示:

 public function composeMsg($userID, $toUser, $subject, $msg, $senton ){
        $db = DB::getInstance();
        $sql = "INSERT INTO messages (userID, fromID, subject, body, senton) values (:userID, :toUser, :subject, :msg, :senton )";
        $stmnt = $db->prepare($sql);

        $stmnt->bindValue(':userID', $userID);
        $stmnt->bindValue(':toUser', $toUser);
        $stmnt->bindValue(':subject', $subject);
        $stmnt->bindValue(':msg', $msg);
        $stmnt->bindValue(':senton', $senton);

        $stmnt->execute();

        if($stmnt->rowCount() > 0){
            return true;
        }
        else{
            return false;
        }
    }

2 个答案:

答案 0 :(得分:2)

提交表单会将您带到您的页面,而无需任何GET请求。

<form name="composeMsg" method="post" id="composeMsg" action="">

由于您使用以下内容包装POST数据提交:

if($_SERVER['REQUEST_METHOD'] == 'GET'){

它永远不会到达那里。

答案 1 :(得分:2)

问题是当您点击表单POST上的提交时,将生成方法,因此您的条件if($_SERVER['REQUEST_METHOD'] == 'GET'){未执行。在代码中进行以下更改

if($_SERVER['REQUEST_METHOD'] == 'GET'){
    if(isset($_GET['action'])){
     //get which action user wants to take in this example compose email
        $action = $_GET['action'];
        if($action == 'compose'){
            ?>
            <form name="composeMsg" method="post" id="composeMsg" action="">
            <input type="text" name="receipnt" placeholder="Receipnt" id="from">
            <div class="break"></div>
            <input type="text" name="subject" placeholder="Subject" id="subject">
           <div class="break"></div>
            <textarea placeholder="Message" name="msgBody" style="width: 350px; height: 200px">
            </textarea>
            <div class="break"></div>
                <button type="submit" name="sendMsg" class="btn btn-danger">SEND</button>
            </form>
    <?php
        }
    }
}
//submit button has been clicked
if(isset($_POST['sendMsg'])){
 //execute script to send msg
    $check = $msgClass->composeMsg('14', $_POST['receipnt'], $_POST['subject'], $_POST['msgBody'], date('Y-m-d') );
    if($check ==  true){
        echo '<h1>MSG SENT!</h1>';
    }
    elseif($check == false){
        echo '<h1>OOPS...SOMETHING WENT WRONG!</h1>';
    }
}//isset msgSent