2014-06-17 64 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