首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP和AJAX日志验证

PHP和AJAX日志验证
EN

Stack Overflow用户
提问于 2012-10-17 04:47:08
回答 3查看 644关注 0票数 0

我需要一些帮助来排除用于登录验证的代码的故障。它是AJAX和PHP的组合。

以下是直接在登录页面中的AJAX代码。

代码语言:javascript
复制
<script language="javascript">
$(document).ready(function()
{
$("#login_form").submit(function()
{
$("#msgbox").removeClass().addClass('messagebox').text('Validating....').fadeIn(1000);
$.post("/ajax_login.php",{ user_name:$('#username').val(),password:$('#password').val()
,rand:Math.random() } ,function(data)
    {
    if (data=='no')
        {
        $("#msgbox").fadeTo
            (200,0.1,function() 
                { 
  $(this).html('Incorrect Username or  Password.')
.addClass('messageboxerror').fadeTo(900,1);
                }
            );      
        }

     else if(data=='yes') 
        {
        $("#msgbox").fadeTo
            (200,0.1,function()  
                { 

$(this).html('Logging in.....').addClass('messageboxok').fadeTo
                    (900,1, function()
                        { 
                        document.location='/mainpage.php';
                        }
                    );
                }
            );
        } 

    else 
        {
        $("#msgbox").fadeTo
            (200,0.1,function()
                { 
                $(this).html('User is already logged in.').
 addClass('messageboxerror').fadeTo(900,1);
                }
            );   
        }


    });
    return false; 
});
$("#password").blur(function()
{
    $("#login_form").trigger('submit');
});
});
</script>

PHP代码:

代码语言:javascript
复制
 <? 
 //Log In credentials

 if ($rehash==$dboPW && $user_name == $dboUN  && $logged=='Y'){echo "alreadyLogged"; exit;}
 if ($rehash==$dboPW && $user_name == $dboUN  && $logged=='N')
{
echo "yes"; 
$_SESSION['login'] = $username;
$_SESSION['password'] = $rehash;
$loggedUpdate=mysql_query("UPDATE Users SET LOGGED='Y' WHERE username='$user_name'");
exit;
 }
 else
 {echo "no";}
 ?>

为了总结这个过程,有人登录并检查PHP脚本

  1. 如果用户名和密码有效且该人尚未登录-则返回'yes‘的值。
  2. 如果用户名和密码是有效的,并且此人已经登录-返回'alreadyLogged‘值
  3. 无效用户名或密码-返回'no‘的值

这将传递给AJAX,AJAX应该根据php脚本的返回值显示正确的消息。供参考(使用上述摘要):

  1. AJAX应该返回:登录..。
  2. AJAX应该返回:用户已经登录了。
  3. AJAX应该返回:无效的用户名或密码。

问题是:如果有人正确登录并且尚未登录,则会出现消息2而不是消息1 (我认为消息1可能会出现,但它会很快消失)。

我认为罪魁祸首是AJAX,但不幸的是,我对它不像对PHP那么熟悉。

EN

回答 3

Stack Overflow用户

发布于 2012-10-17 05:06:48

我认为问题在于php code.Your ajax代码看起来很好。

试试这个

代码语言:javascript
复制
if ($rehash==$dboPW && $user_name == $dboUN  && $logged=='Y')
{
echo "alreadyLogged"; exit;
}
 elseif ($rehash==$dboPW && $user_name == $dboUN  && $logged=='N')
{
}
票数 2
EN

Stack Overflow用户

发布于 2012-10-17 04:56:04

我认为这是php问题,它会发生错误并返回错误消息。如果ajax_login.php不返回“是”或“否”,它将显示第二条消息,不管它返回什么。

票数 0
EN

Stack Overflow用户

发布于 2012-10-17 05:26:57

只需修改PHP即可。试试这个:

//登录全权证书 //检查是否post if (isset($_POST)) { //必须首先在loggin session_start()上使用check; // set变量post $username =$_POST‘user_name;$password =$_POST’密码‘;//更改如果使用sha1或md5 $rand =$_POST’$rand‘;//检查查询数据库$query =mysql_query(“从用户名=’$用户名‘和密码=’$密码‘的用户中选择*’);$user = mysql_fetch_array($query);$row = mysql_num_rows($query);if ($row > 0) { if ($user‘POST’== 'Y') { echo”;$_SESSION‘’login‘= $username;$_SESSION' password’= $rehash;$loggedUpdate = mysql_query("UPDATE Users SET you =‘Y’其中用户名=‘$user_name’“);退出;}$loggedUpdate ($user'LOGGED‘== 'N') { //您可以使用’mysql_query‘回声"alreadyLogged";exit;}mysql_query{ //无效值密码和用户名回显"no";退出;}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12927289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档