是否有像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");
}
?>
答案 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']);
?>