Php 浏览器返回按钮确认表单重新提交
我的页面上有一个搜索表单Php 浏览器返回按钮确认表单重新提交,php,mysql,Php,Mysql,我的页面上有一个搜索表单 <form action='' method='post'> <input type='text' name='search' /> <input type='sumit' name='submit' value='submit'/> </form> 当用户单击表单上的submit按钮时,它应该运行mysql_查询并创建指向用户页面的链接 if(isset($_POST['search'])){
<form action='' method='post'>
<input type='text' name='search' />
<input type='sumit' name='submit' value='submit'/>
</form>
当用户单击表单上的submit按钮时,它应该运行mysql_查询并创建指向用户页面的链接
if(isset($_POST['search'])){
$add = "city = {'$_POST['search']'}";
}
$res = mysql_query("SELECT * FROM user WHERE {$add}");
while($rw=mysql_fetch_object($res)){
echo "<a href=user.php?id={$rw->user_id}?>{$rw->name}</a>";
}
if(isset($\u POST['search'])){
$add=“city={'$\u POST['search']}”;
}
$res=mysql_查询(“从用户那里选择*{$add}”);
而($rw=mysql\u fetch\u object($res)){
回声“;
}
当我点击链接user.php?id=3
时,它会进入用户页面,一切正常。但当我在user.php页面上单击浏览器的后退按钮时,我遇到了问题。然后我有问题回到上一页。
确认表单重新提交。更正以下内容:
<input type='sumit' name='submit' value='submit'/>
您正在编写
type='sumit'
而不是type='submit'
您应该使用get方法而不是post。大多数浏览器都必须确认提交后的重新提交
注意:您不应该将用户输入直接传递到sql查询中,以防止sql注入的风险。若要不显示“确认表单重新提交”警报,您是否必须更改提交(方法)以获取
...
如果(isset($\u GET['search'])){
$res=mysql\u query(sprintf(“SELECT*FROM user WHERE city='%s',mysql\u real\u escape\u string($\u GET['search'])));
而($rw=mysql\u fetch\u object($res)){
回声“;
}
}
这对SQL注入是完全开放的,在查询中的任何地方使用它之前,请仔细清理您的$\u POST['search']
!没有什么能阻止我搜索x';截断用户;'代码>或类似的东西;)清除数据库。这只是一个示例。我使用的是mysql\u real\u escape\u string()可能是重复的,而不是重复的。提交后我无法刷新页面,因为在查询时创建扩展。这只是一个示例。在我的代码中,所有输入都是正确的。问题返回到上一页。确认表单重新提交如何防止确认表单重新提交?使用POST发送数据时,任何浏览器都会询问是否要使用“上一步”按钮重新提交该信息,或刷新页面。这是标准!。因此,你必须改变你的方法,使用,而不是张贴,得到!
<form action='' method='GET'>
<input type='text' name='search' />
<input type='sumit' name='submit' value='submit'/>
</form>
...
if(isset($_GET['search'])){
$res = mysql_query(sprintf("SELECT * FROM user WHERE city='%s'", mysql_real_escape_string($_GET['search']) ));
while($rw=mysql_fetch_object($res)){
echo "<a href=user.php?id={$rw->user_id}?>{$rw->name}</a>";
}
}