Php 防止在刷新浏览器时重新提交提交
下面的代码都很好用。在名为submit.php的文件中,用户可以通过表单输入提交。表单转到submit2.php,其中一些代码将提交插入MySQL数据库。到目前为止还不错 问题是:一旦用户登录submit2.php,如果用户刷新浏览器,就会出现“确认表单重新提交”弹出框。然后,如果用户在弹出窗口中点击“Continue”,提交内容将被重新提交到MySQL数据库 如何在submit2.php上执行以下操作:Php 防止在刷新浏览器时重新提交提交,php,mysql,Php,Mysql,下面的代码都很好用。在名为submit.php的文件中,用户可以通过表单输入提交。表单转到submit2.php,其中一些代码将提交插入MySQL数据库。到目前为止还不错 问题是:一旦用户登录submit2.php,如果用户刷新浏览器,就会出现“确认表单重新提交”弹出框。然后,如果用户在弹出窗口中点击“Continue”,提交内容将被重新提交到MySQL数据库 如何在submit2.php上执行以下操作: if (isLoggedIn() == true) { $remove_array =
if (isLoggedIn() == true)
{
$remove_array = array('http://www.', 'http://', 'https://', 'https://www.', 'www.');
$cleanurl = str_replace($remove_array, "", $_POST['url']);
$cleanurl = strtolower($cleanurl);
$cleanurl = preg_replace('/\/$/','',$cleanurl);
$cleanurl = stripslashes($cleanurl);
$title = $_POST['title'];
$uid = $_POST['uid'];
$title = mysql_real_escape_string($title);
$title = stripslashes($title);
$slug = str_replace(' ', '-', $title);
echo '-'.$site1.'-';
$cleanurl = mysql_real_escape_string(trim($cleanurl));
$site1 = 'http://' . $cleanurl;
$displayurl = parse_url($site1, PHP_URL_HOST);
function isURL($url1 = NULL) {
if($url1==NULL) return false;
$protocol = '(http://|https://)';
$allowed = '[-a-z0-9]{1,63}';
$regex = "^". $protocol . // must include the protocol
'(' . $allowed . '\.)'. // 1 or several sub domains with a max of 63 chars
'[a-z]' . '{2,6}'; // followed by a TLD
if(eregi($regex, $url1)==true) return true;
else return false;
}
if(isURL($site1)==true)
mysql_query("INSERT INTO submission VALUES (NULL, '$uid', '$title', '$slug', '$cleanurl', '$displayurl', NULL)");
else
echo "<p class=\"topicu\">Not a valid URL.</p>\n";
} else {
// user is not loggedin
show_loginform();
}
echo '<form action="http://www.domain.com/sample/submit2.php" method="post">
<input type="hidden" value="'.$_SESSION['loginid'].'" name="uid">
<div class="submissiontitle"><label for="title">Story Title:</label></div>
<div class="submissionfield"><input name="title" type="title" id="title" maxlength="1000"></div>
<div class="urltitle"><label for="url">Link:</label></div>
<div class="urlfield"><input name="url" type="text" id="url" maxlength="500"></div>
<div class="submissionbutton"><input name="submit" type="submit" value="Submit"></div>
</form>
';
echo'
故事标题:
链接:
';
在submit2.php上:
if (isLoggedIn() == true)
{
$remove_array = array('http://www.', 'http://', 'https://', 'https://www.', 'www.');
$cleanurl = str_replace($remove_array, "", $_POST['url']);
$cleanurl = strtolower($cleanurl);
$cleanurl = preg_replace('/\/$/','',$cleanurl);
$cleanurl = stripslashes($cleanurl);
$title = $_POST['title'];
$uid = $_POST['uid'];
$title = mysql_real_escape_string($title);
$title = stripslashes($title);
$slug = str_replace(' ', '-', $title);
echo '-'.$site1.'-';
$cleanurl = mysql_real_escape_string(trim($cleanurl));
$site1 = 'http://' . $cleanurl;
$displayurl = parse_url($site1, PHP_URL_HOST);
function isURL($url1 = NULL) {
if($url1==NULL) return false;
$protocol = '(http://|https://)';
$allowed = '[-a-z0-9]{1,63}';
$regex = "^". $protocol . // must include the protocol
'(' . $allowed . '\.)'. // 1 or several sub domains with a max of 63 chars
'[a-z]' . '{2,6}'; // followed by a TLD
if(eregi($regex, $url1)==true) return true;
else return false;
}
if(isURL($site1)==true)
mysql_query("INSERT INTO submission VALUES (NULL, '$uid', '$title', '$slug', '$cleanurl', '$displayurl', NULL)");
else
echo "<p class=\"topicu\">Not a valid URL.</p>\n";
} else {
// user is not loggedin
show_loginform();
}
if(isLoggedIn()==true)
{
$remove\u array=array('http://www.'、'http://'、'https://'、'https://www.","www.",;
$cleanurl=str_replace($remove_array,“,$_POST['url']);
$cleanurl=strtolower($cleanurl);
$cleanurl=preg\u replace(“/\/$/”,“,$cleanurl);
$cleanurl=stripslashes($cleanurl);
$title=$_POST['title'];
$uid=$_POST['uid'];
$title=mysql\u real\u escape\u字符串($title);
$title=stripslashes($title);
$slug=str_replace(“,-”,$title);
回显'-'.$site1.'-';
$cleanurl=mysql\u real\u escape\u字符串(trim($cleanurl));
$site1='http://'。$cleanurl;
$displayurl=parse\uURL($site1,PHP\uURL\uhost);
函数isURL($url1=NULL){
如果($url1==NULL),则返回false;
$protocol='(http://| https://);
$allowed='[-a-z0-9]{1,63}';
$regex=“^”。$protocol//必须包括协议
“(“.$allowed.\”。//1或多个子域,最多63个字符
'[a-z]'.{2,6}';//后跟TLD
if(eregi($regex,$url1)=true)返回true;
否则返回false;
}
if(isURL($site1)==true)
mysql_查询(“插入到提交值中(NULL、$uid'、$title'、$slug'、$cleanurl'、$displayurl',NULL)”;
其他的
echo“不是有效的URL。
\n”;
}否则{
//用户未登录
show_loginform();
}
使用该模型
第一个答案/文章试图描述的是许多网站/应用程序使用的一种方法,可以解决您遇到的问题 该方法的工作原理如下: 首先,您有一个表单页面:info_form.php 这是将包含表单的页面。它将通过POST将此表单数据提交到您的第二页 其次,您有了数据处理页面:info_submit.php 此页面只处理数据并使用数据库。根本不向浏览器显示任何输出。一旦数据被处理并插入数据库,此页面将用户重定向到第三个页面,通过GET发送所需的任何信息(即重定向:info_confirm.php?success=1) 第三,您有一个确认页面:info_confirm.php 此页面通过GET查询字符串从第二个页面接收有关其所需提交过程的任何信息
这意味着用户甚至从未注意到第二个页面的存在。就他们(更重要的是,浏览器)而言,第二个页面并不存在。因此,当用户刷新您的第三个确认页面时,加载的唯一变量是GET vars,没有任何信息重新提交给您的数据库。您的数据准备工作非常糟糕。在mysql\u real\u escape\u string之后做stripslashes是很奇怪和没有意义的耶。。。我的大部分代码都很难看。我只是想拼凑一些有用的东西。我已经试过使用“if($\u SERVER['REQUEST\u METHOD']==“POST”){header('Location:);}在submit2.php的顶部,但当我这样做时,提交内容无法添加到数据库中。请确保
大括号外没有空格或空行。将发送任何空格,并将导致发送标题。