登录表单php没有数据库 - 重新加载

时间:2014-06-17 15:04:35

标签: php forms login reload

是否有像unset $msg之类的解决方案,当我重新加载页面时,$ msg会停止?

这是我的代码:

的index.php:

<form class="ligar" action="log.php" method="post">
        <p class="lig"><input name="username" type="text"      placeholder="Username"></p>
        <p class="lig"><input name="password" type="password" placeholder="Password"></p>
        <p class="lig"><input name="Entrar" type="submit" value="log"></p>
        <p class="error"><?php if(isset($_GET['msg']))
                         echo $_GET['msg'];
                        ?>
        </p>
</form>

log.php:

<?php 
$username = $_POST['username'];
$password = $_POST['password'];

if ($username =='john' AND $password=='abc') {
    header("Location:/detalhes.php");
} elseif ($username!='john' OR $password!='abc'){
    $msg = "Wrong, try again."; 
    header("Location:http://localhost/index.php?msg=$msg");
}
?>

2 个答案:

答案 0 :(得分:0)

如果我理解正确,如果您第一次输入错误的凭据,log.php代码会将页面重定向到

http://localhost/index.php?msg=Wrong,%20try%20again.

因此,如果您通过浏览器重新加载页面,显然uri保持不变,因此您仍然会在$_GET['msg']变量中收到错误消息。

编辑 我不认为只使用HTML + PHP就可以解决这个问题。

您可以将表单帖子转换为AJAX请求,并通过javascript显示/隐藏错误代码,这样您就不会 需要改变uri。

网上有很多关于如何实现AJAX登录表单的简单示例。

编辑好吧,正如@Stefano L所说,你可以使用会话cookie,所以你根本不需要使用任何javascript。

答案 1 :(得分:0)

这样的事情应该做的工作:(未经测试)

<?php 
session_start();
$username = $_POST['username'];
$password = $_POST['password'];

if ($username =='john' AND $password=='abc') {
    header("Location:/detalhes.php");
} elseif ($username!='john' OR $password!='abc'){
    $_SESSION['msg'] = "Wrong, try again.";     
    header("Location:http://localhost/index.php");
}
?>

log.php

<?
session_start();
<?php if(isset($_SESSION['msg']))
    echo $_SESSION['msg'];
    unset($_SESSION['msg']);
?>