Php 更改操作页面时,表单不会提交

Php 更改操作页面时,表单不会提交,php,html,Php,Html,我有一个简单的页面下面的形式。如果action='ask.php',表单将提交。php是当前页面和下面的代码。当我将ask.php更改为question.php时,该表单不会提交到文件夹中的另一个页面。为什么会这样?表单是否在将数据放入数据库之前重定向 ask.php代码 <?php session_start(); ?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"&

我有一个简单的页面下面的形式。如果action='ask.php',表单将提交。php是当前页面和下面的代码。当我将ask.php更改为question.php时,该表单不会提交到文件夹中的另一个页面。为什么会这样?表单是否在将数据放入数据库之前重定向

ask.php代码

<?php session_start(); ?>
       <!DOCTYPE html>
      <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
        <title></title>

      <script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.min.js'></script>
      <script type='text/javascript' src='http://twitter.github.com/bootstrap/1.4.0/bootstrap-modal.js'></script>
        <link rel="stylesheet" href="../css/bootstrap.css" type="text/css" media="screen" />

         </head>
          <body>
       <?php include '../css/bar.php'; ?>
    <div id='content'>
<?php include '../nav.php'; 
?>



<?php


if (isset($_POST['submit'])){
include '../connect.php';
$question=mysql_real_escape_string($_POST['question']);
$detail=mysql_real_escape_string($_POST['detail']);
$date=date("d M Y");
$time=time();
$user=$_SESSION['id'];
$put=mysql_query("INSERT INTO questions VALUES ('','$question','$detail','$date','$time','$user','subject','0')");

$result=mysql_query("SELECT * FROM questions WHERE user='$user' AND time='$time'");
    while ($row = mysql_fetch_assoc($result)){

         $q=$row['id'];

        }
}

?>

<form method='POST' action='question.php'>   //won't submit because action is question.php?
    <p>Question:</p>
    <p><input type='text' name='question' id='question'  maxlength='200'></p>
    <p>Add some detail (optional):</p>
    <p><textarea id='detail' name='detail' ></textarea></p>

    <p><input type='submit' value='submit' name='submit'></p>
</form>


</div>
<?php include '../footer.php'; ?>
</body>
杰罗恩是对的:

操作页面应包含此类信息,以便将信息输入数据库:

$question = mysql_real_escape_string($_POST['question']); // Part 1
$detail = mysql_real_escape_string($_POST['detail']); // Part 2
$con = mysql_connect("server","username","password");
mysql_select_db("YourDatabase", $con);

$sql="INSERT INTO YourTable (question, details) VALUES ('$question','$detail')";
if (!mysql_query($sql,$con)) {
    //Some error handling here,
    // Stay away from using die in all but development
}
mysql_close($con)
第1部分和第2部分使数据准备好插入数据库:

$question = mysql_real_escape_string($_POST['question']); // Part 1
$detail = mysql_real_escape_string($_POST['detail']); // Part 2
$con = mysql_connect("server","username","password");
mysql_select_db("YourDatabase", $con);

$sql="INSERT INTO YourTable (question, details) VALUES ('$question','$detail')";
if (!mysql_query($sql,$con)) {
    //Some error handling here,
    // Stay away from using die in all but development
}
mysql_close($con)
您还应该使用preg_match测试格式,以检查数据是否符合预期格式。 希望有帮助

编辑

这种连接方式已经过时了! 使用PDO进行数据库连接。 一些医生


您可以发布到任何现有页面,但如果该页面不处理发布的值,则除了加载另一个页面外,不会发生任何事情。@jeroen我不关心question.php是否不处理数据,但如果我将“ask.php”更改为“question.php”,它甚至不会提交到数据库中。如果提交了数据,为什么表单的操作会起作用?是否应该在重定向之前将其输入数据库?如果我错了,你能发布一个解决方案吗?@jeroen的问题是在数据插入数据库之前页面被重定向?提交到数据库=处理。只有当表单提交到该页面时,才会运行php代码。如果您提交到另一个页面,代码仅在第一次加载该页面时运行,并且没有发布任何内容。插入数据库时唯一需要的清理是mysql\u real\u escape\u string或intval。其他任何事情,特别是HTML输出所需的东西,都应该在从数据库中读取数据之后完成。我没有意识到,谢谢,这会纠正我的帖子。我曾断言,你应该清理带标签、trim等,我的坏主意。trim不是一个坏主意,但html编码-更可能是htmlspecialchars而不是strip_标签-应该在输出过程中完成,因为它使数据在纯文本环境(如文本电子邮件)中毫无价值。再次感谢ThiefMaster,将此逻辑应用于我自己的数据处理!: