Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 防止在刷新浏览器时重新提交提交_Php_Mysql - Fatal编程技术网

Php 防止在刷新浏览器时重新提交提交

Php 防止在刷新浏览器时重新提交提交,php,mysql,Php,Mysql,下面的代码都很好用。在名为submit.php的文件中,用户可以通过表单输入提交。表单转到submit2.php,其中一些代码将提交插入MySQL数据库。到目前为止还不错 问题是:一旦用户登录submit2.php,如果用户刷新浏览器,就会出现“确认表单重新提交”弹出框。然后,如果用户在弹出窗口中点击“Continue”,提交内容将被重新提交到MySQL数据库 如何在submit2.php上执行以下操作: if (isLoggedIn() == true) { $remove_array =

下面的代码都很好用。在名为submit.php的文件中,用户可以通过表单输入提交。表单转到submit2.php,其中一些代码将提交插入MySQL数据库。到目前为止还不错

问题是:一旦用户登录submit2.php,如果用户刷新浏览器,就会出现“确认表单重新提交”弹出框。然后,如果用户在弹出窗口中点击“Continue”,提交内容将被重新提交到MySQL数据库

如何在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();
}
  • 如果刷新浏览器,则不会出现弹出窗口

  • 提交内容将不会重新提交到数据库

  • 提前感谢,

    约翰

    在submit.php上:

    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的顶部,但当我这样做时,提交内容无法添加到数据库中。请确保
    大括号外没有空格或空行。将发送任何空格,并将导致发送标题。