2014-02-23 38 views
0

我遇到問題了。我無法回顯告訴用戶他輸入了錯誤的用戶名或密碼登錄失敗的消息。PHP - javascript登錄表格

我想創建一個消息顯示,但不知何故。我正在使用會話,我嘗試了一些來自這個網站的建議,但它不能以某種方式工作。

另外彈出使用JavaScript。

登錄表單

<div class="popover""> 
    <form action="login.php" name="indexform" method="post"> 
     <input class = "input1a" type="text" name="uname" placeholder="USERNAME . . . " autofocus/> 
     <br/> 
     <input class = "input1a" type="password" name="pword" placeholder="PASSWORD . . . " /> 
     <br/> 
     <center><input type="submit" name="submit" value="LOGIN" /><button type="reset" value="Reset" />RESET</button></center> 
    </form> 
    <center><a href="#" class="close">Close Window</a></center> 
</div> 

這裏的客人頁。

的index.php

<?php 

//Initialize Session 
session_start(); 

error_reporting(E_ALL^E_NOTICE); 

//$name = $_SESSION['username']; 
if(isset($_SESSION['username'])) 
    { 
     echo 'Incorrect Username and Password!'; 
     header('Location: admin.php'); 
    } 
    ?> 

而這裏的成功登錄

admin.php的

<?php 
// Inialize session 
session_start(); 

// Check, if username session is NOT set then this page will jump to login page 
if (!isset($_SESSION['username'])) 
{ 
    header('Location: index.php'); 
} 
?> 

的login.php

<?php 
session_start(); 

include("config.php"); 

$login = mysql_query("SELECT * FROM users WHERE (username = '" . mysql_real_escape_string($_POST['uname']) . "') and (password = '" . mysql_real_escape_string($_POST['pword']) . "')"); 
// Check username and password match 
if (mysql_num_rows($login) == 1) { 
    // Set username session variable 
    $_SESSION['username'] = $_POST['uname']; 

    // Jump to secured page 
    header('Location: index_admin.php'); 
} else { 

    // Jump to login page 

    header('Location: index.php'); 

} 
?> 

而且最後的JavaScript後的管理頁面爲流行音樂窗口。

的JavaScript

$(document).ready(function() { 
    $(".button").click(function (e) { 
     $(".overlay").css({ 
      "opacity": "0.4" 
     }); 
     $(".overlay").fadeIn("slow"); 
     $(".popover").fadeIn(1000); 
     $(".popover").show(); 
     $(".close").click(function (e) { 
      $(".popover, .overlay").fadeOut(700); 
      /*$(".popover, .overlay").hide();*/ 
     }); 
    }); 
}); 

任何幫助將得到高度讚賞。我還是新來的JavaScript和PHP。我希望在登錄失敗後可以創建彈出消息,但我仍然對解決方法感到困惑。 :(

在此先感謝

回答

1

這是去,如果你想觸發登錄表單JavaScript的方式...

  1. 創建服務(在PHP),檢查認證憑據,並返回JSON響應。
  2. 使用Ajax調用該服務使用JavaScript提交表單。
  3. 使用表單提交AJAX 回調在服務返回錯誤的情況下觸發彈出窗口。
0

第一個問題是在<div class="popover""> - 應該只有<div class="popover">

而第二個問題是,header()將在您迴應錯誤消息的同時重新定位您。所以,錯誤信息是寫的,但由於搬遷,它保持在原來的地方 - 你不能讀它。

因此,您需要創建間歇階段,您將在那裏獲得該錯誤消息 - 並且從此處您可以在任何點擊位置重新定位。

0

問題是,您想要在一個文件中回顯消息,但將其顯示在窗體所在的頁面中。您可以通過以下方法將消息傳遞給另一個文件:

  1. 使用ajax,其中的表單是,並獲取響應以瞭解憑據是否有效並顯示消息。
  2. 將消息存儲在會話變量中,並在加載其他文件時顯示該消息。

或者你可以驗證代碼只是添加到頁面中包含窗體並調用回相同的頁面,如下所示:

的index.php

<?php 

if($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
    //Initialize Session 
    session_start(); 

    include("config.php"); 

    $login = mysql_query("SELECT * FROM users WHERE (username = '" . mysql_real_escape_string($_POST['uname']) . "') and (password = '" . mysql_real_escape_string($_POST['pword']) . "')"); 
    // Check username and password match 
    if (mysql_num_rows($login) == 1) { 
     // Set username session variable 
     $_SESSION['username'] = $_POST['uname']; 
     header('Location: admin.php'); 
    } else { 
     echo 'Incorrect Username and Password!'; 
    } 

} 

?> 
<html> 
    <body> 
     <div class="popover"> 
      <form action="index.php" name="indexform" method="post"> 
       <input class = "input1a" type="text" name="uname" placeholder="USERNAME . . . " autofocus/> 
       <br/> 
       <input class = "input1a" type="password" name="pword" placeholder="PASSWORD . . . " /> 
       <br/> 
       <center><input type="submit" name="submit" value="LOGIN" /><button type="reset" value="Reset" />RESET</button></center> 
      </form> 
      <center><a href="#" class="close">Close Window</a></center> 
     </div> 
    </body> 
</html>