为什么我重新加载时会设置POST ['submit']?

时间:2011-11-18 01:50:35

标签: php post submit

我的应用程序是一个简单的登录页面。当它失败时,我打印一条错误消息。我的问题是,为什么当我重新加载页面时,邮件再次打印出来?我该如何解决这个问题? 代码工作正常,我已经做了另一个php文件执行数据库检查&连接。

<?php 
require_once("include/database.php");       
if(isset($_POST['submit'])) {
    connect_bookstore(); // custom function
    $spassword = sha1($_POST['password']);
    $username = $_POST['username'];
    if ( checkpassword($username,$spassword) ) { //custom function
        header('Location:insert.php');
        exit;
    } else { 
        $message = "Login failed!";         
    }
}   
?>

在html体内。

<?php 
if (isset($message)) {
    echo $message;
}
?>

3 个答案:

答案 0 :(得分:12)

<?php
session_start();

require_once("include/database.php");       
if(isset($_POST['submit'])) {
    connect_bookstore(); // custom function
    $spassword = sha1($_POST['password']);
    $username = $_POST['username'];
    if ( checkpassword($username,$spassword) ) { //custom function
        header('Location:insert.php');
        exit;
    } else { 
        $_SESSION['message'] = "Login failed!";
        header('location: /yourfile.php');
        exit;     
    }
}

if(isset($_SESSION['message']))
{
    echo $_SESSION['message'];
    unset($_SESSION['message']);
}  
?>

从根本上说,是的,发布/重定向/获取......但有时候一个简单的解释会更好。

我使用会话来存储flash消息,然后像这样显示它们。

答案 1 :(得分:1)

这是因为您在刷新时重新发送相同的POST数据,如果您执行GET请求,您会在URL中注意到您传递的参数在那里,因此如果刷新这些参数将再次发送。与POST相同。

答案 2 :(得分:0)

当您重新加载页面时,浏览器将发送它为原始页面发送的相同请求。

您需要POST-Redirect-GET