2014-06-17 34 views
0

有没有像unset $msg或东西,任何解决办法,当我重新加载页面时,$味精停止?登录表单PHP没有数据库 - 重装

这里是我的代码:

的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

你'index.html'包含PHP,所以除非你指示的Apache将无法工作将'.html'视为PHP。如果没有,然后重命名为'index.php' –

+0

是的,我知道,这不是问题。在为你们编写代码时,这是我的一个错误。 – dyzz1337

+0

好的。现在,我不太明白你的意思*“当我重新加载页面时,$ msg停止”*,你能详细说明一下吗? –

回答

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']); 
?> 
+0

非常感谢,它工作! – dyzz1337

0

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

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

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

编辑 我不认为有一个解决方案,只使用HTML + PHP。

您可以将表单发布转换为AJAX请求,并通过javascript显示/隐藏错误代码,因此您不需要更改uri的 。

该网站是充满了关于如何实现AJAX登录表单容易的例子。

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

+0

获得的方式,我真的只想使用html和php。无论如何,我正在接受其他方式来执行此操作。 – dyzz1337