2013-03-10 83 views
0

基于会话的登录有问题(使用PHP,HTML和CSS实现)。到现在为止还挺好。现在,当您输入错误时,我想要显示警告。首先,我创建了第二个页面,并附加了一条警告。但是最好在AJAX中实现这一点(也许使用jQuery)。但现在我有一个问题。由于我已经实现了AJAX部分,我无法登录。每次出现警告。当我删除AJAX请求的所有作品。似乎PHP验证部分不再被调用。但我不知道为什么。以下是代码:基于会话的登录系统 - 通过AJAX发出警告

这是验证(loginscript.php)的一部分。登录表单具有名称loginform和submit.button名称登录。

else if (isset($_POST['login'])) 
{ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

    $clean_username = strip_tags(stripslashes(mysql_real_escape_string($username))); 

    $clean_password = (strip_tags(stripslashes(mysql_real_escape_string($password)))); 

    $hash_password = saltedHash($clean_password, $clean_username); 

    $sql = mysql_query("SELECT * FROM $loginTable WHERE $attUsername = '$clean_username' AND $attPassword = '$hash_password'"); 

    if (mysql_num_rows($sql) == 1) 
    { 
     $_SESSION['logged'] = true; 
     echo 'correct'; 
     header('refresh:2;url=ajax/cmapp.php'); 
     exit; 
    } 
} 

的显示部分doesn't工作,因为我用的就是:

$(document).ready(function() 
{ 
$("#tr1").hide(); 
/* sendung formular abfangen */ 
$("#loginform").submit(function() { 
           /* ajax objekt zum aufruf & versand an das skript 
    'name' und 'email' sind in der data-zeile die variablen für das php-skript */ 
    $.ajax({ 
     type: "POST", 
     url: "loginscript.php", 
     data: "username=" + $("#username").val() + "&password=" + $("#password").val(), 
     success: function(msg) 
     { 
      if (msg == 'correct') 
       { 
        alert("hjlkjl") 
        window.location='ajax/cmapp.php'; 
       } 
      else 
       { 
        $("#tr1").hide().load("message.html").fadeIn(0); 
       } 

每次else部分被执行。

+1

下载? '.txt'?在你的问题中包含代码!如果代码很长,那么你可能需要修剪它。此外,你的问题还没有包含问题。 – Zeta 2013-03-10 13:32:06

+0

考虑在问题主体中添加相关代码... – Rafay 2013-03-10 13:32:30

+0

@MRae:我们喜欢这里的问题代码,以便断开的链接不会影响未来问题的用处。 – halfer 2013-03-10 13:35:44

回答

1

你的data值应该包括一个login变量,否则PHP脚本将不会进入条件。并且由于您使用POST,因此您可以使用一个对象作为data的值

data : { 
    username : $("#username").val(), 
    password : $("#password").val(), 
    login : true, 
} 
+0

好的,我试过了。但没有成功。每次执行else分支时... – MRae 2013-03-10 14:29:30

+0

尝试调试。看看你的PHP脚本实际返回。 '成功:功能(味精){console.log(味精)..'并看看JavaScript控制台。或将'$ _POST'更改为'$ _REQUEST',然后使用url参数('loginscript.php?login&username = xxx&password = xxx')打开php页面,并查看它显示的内容。 – lordvlad 2013-03-10 16:35:07

+0

另外,摆脱'header(“refresh ...'行 – lordvlad 2013-03-11 07:16:40