PHP表单未重新签名,已发布


PHP Form not reconsigning its been posted

我有一个MSSQL数据库的PHP查询。看起来像这样:

<?php 
    if (isset($_POST['form6'])) {
        $Title=$_POST['Title'];
        $Synopsis=$_POST['Synopsis'];
        $Article=$_POST['Article'];
        $DateUploaded= date("Y-m-d H:i:s");
        $Deleted=$_POST['Deleted'];
        $myServer = "**********";
        $myUser = "**********";
        $myPass = "******";
        $myDB = "*********";
        $dbhandle = mssql_connect($myServer, $myUser, $myPass) or die("Couldn't connect to SQL Server on $myServer"); 
        mssql_select_db($myDB) or die;
        $dbTABLE = "Tablename";
        $query_sql = sprintf("INSERT INTO %s (Title, Synopsis, Article, DateUploaded, Deleted)   VALUES ('%s','%s','%s','%s','%s')",
        addslashes($dbTABLE),
        addslashes($Title),
        addslashes($Synopsis),
        addslashes($Article),
        addslashes($DateUploaded),
        addslashes($Deleted));
        if ($result = mssql_query($query_sql, $dbhandle)) {
            print "Your information has been successfully added to the database.";
            header('Location: News.php');
        }
    }
?>

最初它是在一个单独的.php文件上,并在表单的"操作"上执行。然而,为了减少重定向的数量,我将它移动到与表单相同的页面,并在顶部包含if语句,以尝试在表单的发布时执行它,这被命名为form6。

这是表格行。:

<FORM method="post" name="form6" id="form6" ENCTYPE="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>">

然而,所有这些似乎都是重新刷新页面,没有数据添加到数据库中,也没有击中标题重定向到News.php。

我也尝试过,但并没有采取任何行动,结果是一样的。我的问题是,为什么这不会影响php函数/查询?

您正在检查<form元素,该元素在以下行中从未实际包含值:

if (isset($_POST['form6']))

您需要检查实际的表单元素(输入)以查看是否发送了数据。

您应该检查$_POST['Title']之类的实际值,看看数据是否已从表单中发送。

如果您想包含表单名称,请在表单中使用这样的隐藏字段:

<input type='hidden' name='form6' value='1'>

表单中需要一个提交按钮,例如:

<form method="post" name="form6" id="form6" ENCTYPE="multipart/form-data" action="">
    <input type="submit" name="formsubmit"/>
</form>

然后在php中检查

 if (isset($_POST['formsubmit']))

另一种不包括制作特殊隐藏字段的方法:

将"form6"添加到您的操作url:

<FORM method="post" name="form6" id="form6" ENCTYPE="multipart/form-data" 
      action="<?php echo $_SERVER['PHP_SELF'].'?form6'; ?>">

如果您检查表单名称,请使用GET,但请记住其他值仍在POST变量

if (isset($_GET['form6'])) {

为什么将if条件中的<Form name属性检查为

if (isset($_POST['form6']))

移除它并像一样检查

if (isset($_POST['Title']))