Php 登录的标准正确ajax响应

Php 登录的标准正确ajax响应,php,json,ajax,login,response,Php,Json,Ajax,Login,Response,顺便说一句,我正在开发自己的PHP框架,它运行得很好,现在我正在开发一个登录系统。这是没有问题的,我已经让它工作得很好,我有一个数据库,一个注册,登录表单,注销,等等 但是现在,当您填写登录表单并单击login时,会发送ajax,服务器php会验证用户用户名和密码,并返回响应。现在的回答只是一个数字: 0-登录正确 1-用户名不正确 2-用户名正确,但密码不正确 这完全符合其目的,但我确信这不是正确的/专业的方式,我只是发明了这个。所以我想知道哪个是登录验证的正确响应 例如,许多Web使用带有错

顺便说一句,我正在开发自己的PHP框架,它运行得很好,现在我正在开发一个登录系统。这是没有问题的,我已经让它工作得很好,我有一个数据库,一个注册,登录表单,注销,等等

但是现在,当您填写登录表单并单击login时,会发送ajax,服务器php会验证用户用户名和密码,并返回响应。现在的回答只是一个数字:

0-登录正确

1-用户名不正确

2-用户名正确,但密码不正确

这完全符合其目的,但我确信这不是正确的/专业的方式,我只是发明了这个。所以我想知道哪个是登录验证的正确响应

例如,许多Web使用带有错误代码和消息的json响应,但我不知道它是如何工作的。还有,这真的会影响吗?还是没关系?这到底有什么用?安全与其他图书馆和服务的混合?还是我目前的系统已经很好了

/******更新******/

你们是说我不应该说用户名/电子邮件是对的,但密码不是。好的,你是对的,我同意,我会纠正它,谢谢你的参与和帮助

然而,这不是问题所在,答案应该会帮助其他人解决我同样的疑问:回答

我发现这非常有用:

这个函数PHP>5.4:http\u response\u code$code\u number

从技术上讲,这将是:

function my_ajax_function( )
{
    //try login

    if (login_correct)
        http_response_code(200);  // 200 = OK
    else
        http_response_code(401);   // 401 = Unauthorized

    // ajax response is independent of the http response
    die("whatever I want");
}

ajax回复等待200如果一切正常,您可以从返回。您的服务器会收到一条消息,在成功的ajax回复中,您会阅读服务器的回复,然后如果出现问题,您会显示来自服务器的详细信息。例如,您可以返回1表示登录确定,返回1表示邮件。不存在,和-2对于密码不确定,我编辑,您可以在加载表单时创建一个令牌,稍后将在服务器上的ajax调用中进行验证,这样您可以添加一个安全点,您也可以直接在服务器中“一切正常”重定向到主页qbere您的用户已登录

我不会回答用户名是否正确,但密码不正确。这让黑客知道他们已经走了一半。回答应该是正确的或错误的。他们通过了身份验证,或者没有通过

我在系统上处理身份验证的方式;若凭据为false,则拒绝访问;若凭据正确,则生成会话密钥,然后将用户移动到下一步。然后,每个页面请求都会检查会话密钥,以查看其是否仍然有效


更新到您的更新;这是一个HTTP响应代码,表示找不到该页面,即服务器上不存在文件。如果您想发送http响应,401就是其中之一。401=未经授权

对于初学者,你不应该区分用户名不正确和用户名正确、密码不正确,因为这会让潜在入侵者确认登录名存在。如果你告诉我用户名正确,密码不正确,你就告诉我我的信息有一半是正确的。如果用户名也是一封电子邮件,那么您刚刚创建了一个服务,我可以用它来验证一堆电子邮件。下一步我要做的是尝试联系在你的网站上拥有一个帐户的人,并使用一些狡猾的社会工程-我很快就会得到密码。因此,如果有人没有提供正确的凭据,您会告诉他们凭据无效。不是哪一个错了。你这样做的原因是为了防止像我这样的混蛋。嗯,这不是一个一致同意的想法。这是一场安全性和用户体验之间的战争,不是标准或最佳实践。因此,响应不应该是数字,而应该是数据。在您的情况下,它是一个带有HTTP状态码的数字。200表示正常,400-499表示客户端错误代码。使用HTTP状态代码。422通常在服务器端验证失败时使用,您可以在google上查找其余的。当电子邮件必须是唯一的时,尝试和注册电子邮件也很容易。。。故意将某些其他字段留空/错误,以防止实际注册。。。您在“电子邮件已在使用”中收到错误返回。掩盖登录失败是毫无意义的。