有没有办法在不重新加载页面的情况下修改当前页面的URL?
如果可能的话,我想访问#hash 之前的部分.
我只需要在域之后更改部分,因此它不像我违反了跨域策略.
window.location.href = "www.mysite.com/page2.php"; // Sadly this reloads
Run Code Online (Sandbox Code Playgroud) 第一页包含HTML表单.第二页 - 处理提交数据的代码.
第一页中的表单已提交.浏览器被重定向到第二页.第二页处理提交的数据.
此时,如果第2页被刷新,则会弹出"确认表单重新提交"警告.
这可以预防吗?
我有一个应用程序,它为网页提供了很长的参数列表,所以我必须使用POST而不是GET.问题是,当页面显示并且用户单击"后退"按钮时,Firefox会显示警告:
要显示此页面,Firefox必须发送将重复之前执行的任何操作(例如搜索或订单确认)的信息.
由于应用程序以这样的方式构建,即返回是一种非常常见的操作,这对最终用户来说真的很烦人.
基本上,我想按照这个页面的方式来做:
http://www.pikanya.net/testcache/
输入内容,提交,然后单击"上一步"按钮.没有警告,它只是回去了.
谷歌搜索我发现这可能是Firefox 3中的一个错误,但我想以某种方式获得这种行为,即使他们"修复"它.
我想这可能是一些HTTP标题可行,但究竟是哪个?
我通过POST提交表单.我提交表单,一切都很好,但是如果我尝试重新加载表单在提交后转到的新页面,我会收到"你想重新发送数据"消息(FireFox).它也可能在其他浏览器中发生,但我不确定.
有没有人知道一种方法来阻止这个消息弹出,所以我可以继续刷新页面.这对生产环境不利 - 用户可以两次提交相同的表格!
我认为这个问题经常发生在Web应用程序开发上.但我会尝试详细解释我的问题.
我想知道如何纠正这种行为,例如,当我有一个像这样的代码块时:
<?
if (isset($_POST['name'])) {
... operation on database, like to insert $_POST['name'] in a table ...
echo "Operation Done";
die();
}
?>
<form action='page.php' method='post' name="myForm">
<input type="text" maxlength="50" name="name" class="input400" />
<input type="submit" name="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
提交表单后,数据将插入到数据库中,并生成消息Operation Done.然后,如果我刷新页面,数据将再次插入数据库.
如何避免这个问题?任何建议将不胜感激:)
如何在提交后清除表单中的信息,以便在页面刷新后不显示此错误?
查看图片(来自chrome):

该对话框包含以下文字:
您要查找的页面使用
了您输入的信息.返回该
页面可能会导致您
重复执行任何操作.你想继续吗?
我希望这个对话框不会出现.
我不断在我的数据库中获得重复条目,因为用户不耐烦地多次单击提交按钮.
我用Google搜索并搜索了一些脚本,但似乎没有一个足够.
如何使用javascript或jQuery来防止这些重复条目的发生?
Thanx提前!
我正在寻找一种方法来刷新页面时停止在数据库中插入或发送数据.
这是我的代码:
user_details_page.php
<form action="confirm_page.php" method="post" >
User Name:
<input type="text" name="username" >
User Email
<input type="text" name="useremail" >
Password:
<input type="text" name="password" >
<input type="submit" name="submit" >
</form>
Run Code Online (Sandbox Code Playgroud)
confirm_page.php
if (isset($_POST['submit']))
{
$user= $_POST['username'];
$email = $_POST['useremail'];
$pass= $_POST['password'];
mysql_query("INSERT INTO table (username, useremail, email) VALUES ('$username','$useremail','$email');
}
Run Code Online (Sandbox Code Playgroud)
所以问题每次我刷新确认page.php时数据都会被发送到数据库.怎么阻止这个?
我一直坚持在表单数据清除方面.用户提交表单后,数据将添加到数据库中.它很好,直到这里.但是,如果用户刷新先前输入的页面,则将数据重新输入数据库.我正在使用post方法发送数据.我没有使用AJAX.提交数据后,整个页面将重新加载.请帮我解决一下这个.如果有任何方法在提交后清除表单数据,那么刷新页面后没有数据添加到数据库中回复此问题.
嗨有谁知道如何避免/停止重复插入的PHP和HTML?每当我刷新时,相同的数据重复,这不是我想要的.我可以从这里改变什么吗?我听说添加UNIQUE INDEX可以避免/阻止它.也许它有效,但我错误地放置它使它无法工作.有帮助吗?提前致谢!!!真的很感激!
<?php
session_start();
include("Validation.php");
$connect=mysqli_connect("localhost","root","","jailbird");
if(mysqli_error($connect))
{
die("Could not connect.");
}
if(isset($_POST["insert_click"]))
{
//Bookingid is auto increment, therefore no need
//$Bookingid=$_POST["BookingID"];
$Prisonerid=$_SESSION['Prisonerid'];
$Visiting_method=$_POST["VisitingMethod"];
$Visiting_location=$_POST["VisitingLocation"];
$Date=$_POST["Date"];
$Time=$_POST["Time"];
$query=$connect->prepare("insert into Booking(PrisonerID, VisitingMethod, VisitingLocation, Date, Time) values (?,?,?,?,?)");
$query->bind_param('sssss', $Prisonerid, $Visiting_method, $Visiting_location, $Date, $Time);
$query->execute();
}
$query=$connect->prepare("select * from booking WHERE Prisonerid=?");
$query->bind_param('s',$_SESSION['Prisonerid']);
$query->execute();
$query->bind_result($Bookingid, $Prisonerid, $Visiting_method, $Visiting_location, $Date, $Time);
while($query->fetch())
{
echo "<tr>";
//echo "<td width=60>".$Bookingid."</td>";
echo "<td>$Prisonerid</td>";
echo "<td>$Visiting_method</td>";
echo "<td>$Visiting_location</td>";
echo "<td>$Date</td>";
echo "<td>$Time</td>";
echo "</tr>";
}
?>
Run Code Online (Sandbox Code Playgroud) 我有一个用于我的Web应用程序的注销文件.我想在注销后创建一个会话,以便我可以回显注销成功消息.我的注销代码有效但我在销毁前一个会话后无法创建新会话.
执行此操作的最佳方法是什么,请参阅代码:
//LOGOUT.PHP
session_start();
//// unset all $_SESSION variables
session_regenerate_id();
session_unset();
session_destroy();
$_SESSION['logoutsuccess'] = 'You have successfully logged out.';
header("Location: /login/");
exit;
//LOGIN.PHP (ECHO SUCCESS MESSAGE)
if(isset($_SESSION['logoutsuccess']))
{
echo '<div class="success">'.$_SESSION['logoutsuccess'].'</div>';
unset($_SESSION['logoutsuccess']);
}
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我想避免在url中传递变量.
我正在创建一个电子邮件系统,所以我做了这个小小的测试花絮,它有效.....有点?
<html>
<head><title>EMail Test</title></head>
<body>
<input type="text" name="email">
EMail (required)
<br><br>
<textarea name="comment" rows="5" cols="40"></textarea> what's your problem?
<br><br>
<form method="POST" action=''>
<input type="submit" name="button1" value="Submit">
</form>
<?php
if (isset($_POST['button1'])) {
$msg=$_POST['email']." asks: ".$_POST['comment'];
echo $msg;
$email=$_POST['email'];
$SupportNinga="Typhoone01@gmail.com";
$mail=mail($SupportNinga,"Question from ".$email,$msg);
echo "Emailing...";
if($mail) {
echo"E-mail sent sucessfully";
}
}
?>
</body>
</html>Run Code Online (Sandbox Code Playgroud)
这被放入在线主机,似乎没有用.
它发送了电子邮件,但它只是说"问题来自:".我可以说它没有正确读取$ _POST.
帮助是appriciated.:P
php ×9
html ×7
forms ×4
javascript ×3
database ×2
jquery ×2
post ×2
codeigniter ×1
destroy ×1
duplicates ×1
echo ×1
firefox ×1
friendly-url ×1
http ×1
http-headers ×1
load ×1
logout ×1
mysql ×1
refresh ×1
session ×1
url ×1