我有一个带提交按钮的简单表单(如下)。我试图让用户在文本框中键入,然后当他/她单击提交时,页面将刷新并回显他们在div中键入的内容。用户键入的数据在回显之前存储在数据库中。问题是,当我点击提交时,输入不会立即显示。我必须单击刷新才能显示,当我浏览器时,我会给我一个弹出窗口(safari),要求重新发送数据。这将导致在DB中插入重复数据。我有一种感觉,我需要使用javascript,我也可以使用fadeIn使它更优雅,但我不知道该怎么做。我想我问是否有办法使用javascript来获取用户的文本并将其插入到mysql数据库中,并在提交单击全部1或0(优选)刷新后显示它。感谢
这是我的代码:
<form method='POST' action='index.php'>
<input type='text' name='text' id='text'>
<input type ='submit' value='submit' name='submit'>
</form>
<?php
$input=$_POST['text'];
$put=mysql_query("INSERT INTO table VALUES ('$input')");
echo "<div id='area'>";
//i connect to the DB and echo out the data here
echo "</div>";
?>
答案 0 :(得分:0)
抛开SQL注入攻击,您的代码容易受到攻击,标准做法是通过重定向回到表单所在的位置来响应POST。在您的情况下,它将是运行SELECT from table
。
答案 1 :(得分:0)
这里不需要使用AJAX。只需确保您执行以下操作之一:
if ($_SERVER['REQUEST_METHOD'] == 'POST')
,而不是执行额外的SQL查询,只显示已知的POSTed值。关于代码示例的附注。如果您没有启用magic_quotes
,则它很容易受到SQL注入的影响,因此请确保在查询中使用之前正确转义用户输入。
答案 2 :(得分:0)
我会在实际的html代码之前放置php语句,并修改你的代码就像这样
<?php
if (isset($_POST['text']))
{
$input = mysql_real_escape_string($_POST['text']);
$put=mysql_query("INSERT INTO table VALUES ('$input')"); //At this point the info has been put inside the DB
echo "<div id='area'>";
//i connect to the DB and echo out the data here
echo mysql_query("SELECT * FROM table");
echo "</div>";
}
?>
<form method='POST' action='index.php'>
<input type='text' name='text' id='text'>
<input type ='submit' value='submit' name='submit'>
</form>
你没有看到它的原因是我在你想到的PHP之前加载了HTML。所以我会做一个php页面,其中所有的sql treatement都会完成,一旦完成,你就会重新调用index.php并在那里查询你是来自数据库的信息。