PHP echo中的表单不会POST任何数据

时间:2015-10-28 22:15:54

标签: php html echo

我在php中有一个表单只在用户登录时显示,这意味着只有登录的用户才能在我的网站上创建一个新的博客文章,表单如下所示:

<?php
        if(isset($_SESSION['username'])){ ?>

        <section class="post">
            <h3>Make a new post:</h3>
            <p> Before posting anything, make sure you have read the <a id="pagelink" href="rules.html"> rules </a>
            <form action="../php/post_up.php" id="newpost" method="POST">
                <table id="post">
                    <tr>
                        <td> Title: </td>
                        <td id="post_cell"> <input type="text" name="post_title"/> </td>
                    </tr>
                    <tr>
                        <td> Content: </td>
                        <td id="post_cell"> <textarea name="post_content" form="newpost" rows="10" cols="50"></textarea> </td>
                    </tr>
                    <tr>
                        <td>
                            <input type="submit" name="submit_post" value="Submit">
                        </td>
                    <tr>
                </table>
            </form>
        </section>
        <?php
            }

            require("../php/load_up.php");
        ?>

在此之后,代码被发送到这个PHP脚本:

<?php
session_start();

require_once("../php/db.php");

if(!isset($_SESSION['userid'])){
    header("Location: ../blog/userpost.php");
    die();
}

if(isset($_POST['submit_post'])){
    if(isset($_POST['post_title']) && isset($POST['post_content'])){
        if(!$_POST['post_title'] == "" && !$_POST['post_content'] == ""){

            $userid = $_SESSION['userid'];

            $title = strip_tags($_POST['post_title']);
            $content = strip_tags($_POST['post_content']);

            $title = stripslashes($title);
            $content = stripslashes($content);

            $title = mysqli_real_escape_string($title);
            $content = mysqli_real_escape_string($content);

            $sql_store_post = "INSERT INTO userpost (title,content,userid) VALUES ('$title','$content','$userid')";

            mysqli_query($db, $sql_store_post);

            header("Location: ../blog/userpost.php");
            die();

        } else {
            echo("The posts are empty");    
        }
    } else {
        echo("The posts are not set");  
    }
} 

elseif(isset($_POST['submit_comment'])){

}

else {
    echo("Seems like submit has not been set?");
    //header("Location: ../blog/userpost.php"); 
}

&GT;

奇怪的是isset($_POST['submit_post'])返回true,但是后面的两个帖子都返回false,导致我的代码出错。

PS:require("../php/load_up.php");仅用于显示已发布的帖子,在发布数据的过程中并不重要。

2 个答案:

答案 0 :(得分:1)

一个简单的拼写错误,

isset($POST['post_content'])){

要,

isset($_POST['post_content'])){

答案 1 :(得分:1)

除了$POST['post_content'] $_POST['post_content']的拼写错误,其中$的拼写应为POST$title = mysqli_real_escape_string($title); $content = mysqli_real_escape_string($content); $title = mysqli_real_escape_string($db, $title); $content = mysqli_real_escape_string($db, $content); 之间带有下划线:

这段代码:

or die(mysqli_error($db))

POST superglobal需要数据库连接

mysqli_query()

如果不这样做,你会被抛出类似的东西:

  

警告:mysqli_real_escape_string()只需要2个参数,第x行(文件路径)中给出的参数为1

另外,请确保使用会话在所有页面内启动会话。你没有在你的第一个代码中显示出来。

您还应该根据查询检查错误。

mysqli_query($db, $sql_store_post); 添加到$query = mysqli_query($db, $sql_store_post); if($query){ echo "Success"; } else{ echo("Error description: " . mysqli_error($db)); }

错误报告会抛出一个未定义的变量$ notice:

并且你的转义函数丢失的db参数会引发另一个错误:

修改:

require_once("../php/db.php");

到:

if(isset($_POST['post_title']) && isset($_POST['post_content'])){
        if(!$_POST['post_title'] == "" && !$_POST['post_content'] == ""){

检查查询是否成功。

目前还不清楚if(!empty($_POST['post_title']) && !empty($_POST['post_content']))

内的内容

确保您确实已成功连接到数据库并使用与查询相同的MySQL API。

  • 不同的API不会混合。

旁注:

这些陈述,

if(!$_POST['post_title'] == "" && !$_POST['post_content'] == ""){

可以简化为:

}

并摆脱<?php session_start(); if( isset( $_POST['profile'] ) ) $_SESSION['profile'] = $_POST['profile']; ?>

及其相关的结束<p id="editprofile"> <?php if( isset( $_SESSION['profile'] ) ) echo $_SESSION['profile']; ?> </p> 大括号。