Php 更改操作页面时,表单不会提交
我有一个简单的页面下面的形式。如果action='ask.php',表单将提交。php是当前页面和下面的代码。当我将ask.php更改为question.php时,该表单不会提交到文件夹中的另一个页面。为什么会这样?表单是否在将数据放入数据库之前重定向 ask.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"&
<?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,将此逻辑应用于我自己的数据处理!: