使用 JS 错误消息登录 PHP
Login in PHP with JS error messages
我正在用PHP和JS创建一个登录脚本。我想在我的表单中有不同的错误消息,但不幸的是,并非一切都正常。例如,检查是否有这样的用户运行良好,但是如果我输入正确的电子邮件和不正确的密码,我将被重定向到profile.php?u=%3Cbr%20/%3E%3Cb%3ENotice%3C/(...)。我哪里犯了错误?
登录.php
if(isset($_POST["e_l"])){
include_once("db/db_fns.php");
$e = mysqli_real_escape_string($db_conx, $_POST['e_l']);
$p = $_POST['p_l'];
$ip = preg_replace('#[^0-9.]#', '', getenv('REMOTE_ADDR'));
if($e == "" || $p == ""){
$message = preg_replace('/['/_| -]+/', '', 'loginfailed');
echo $message;
exit();
} else {
$sql = "SELECT id, username, password, activated FROM users WHERE email='$e' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$row = mysqli_fetch_row($query);
$activated = $row['activated'];
$number = mysqli_num_rows($query);
if ($number <=0){
$message = preg_replace('/['/_| -]+/', '', 'nouser');
echo $message;
exit();
} else {
if ($activated = '0') {
$message = preg_replace('/['/_| -]+/', '', 'noactiv');
echo $message;
exit ();
} else {
$db_id = $row[0];
$db_username = $row[1];
$db_pass_str = $row[2];
if (password_verify ($p, $db_pass_str)) {
$_SESSION['userid'] = $db_id;
$_SESSION['username'] = $db_username;
$_SESSION['password'] = $db_pass_str;
setcookie("id", $db_id, strtotime( '+30 days' ), "/", "", "", TRUE);
setcookie("user", $db_username, strtotime( '+30 days' ), "/", "", "", TRUE);
setcookie("pass", $db_pass_str, strtotime( '+30 days' ), "/", "", "", TRUE);
$sql = "UPDATE users SET ip='$ip', lastlogin=now() WHERE username='$db_username' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
echo $db_username;
exit();
} else{
$message = preg_replace('/['/_| -]+/', '', 'loginfailed');
echo $message;
exit();
}
}
}
}
exit();
}
登录.js
function login(){
var e_l = _("email_l").value;
var p_l = _("password_l").value;
if(e_l == "" || p_l == ""){
_("status_l").innerHTML = '<div class="message_b"><img src="images/error.gif"/> Fill out all of the form data</div>';
} else {
_("loginbtn").style.display = "none";
_("status_l").innerHTML = '<img src="images/wait.gif"/>';
var ajax = ajaxObj("POST", "login.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
if (ajax.responseText.trim() == "nouser"){
_("status_l").innerHTML = '<div class="message_b"><img src="images/error.gif"/> Wrong username</div>';
_("loginbtn").style.display = "block";
} else if (ajax.responseText.trim() == "noactiv"){
_("status_l").innerHTML = '<div class="message_b"><img src="images/error.gif"/> Your account is no active</div>';
_("loginbtn").style.display = "block";
} else if (ajax.responseText.trim() == "loginfailed"){
_("status_l").innerHTML = '<div class="message_b"><img src="images/error.gif"/> Login unsuccessful, please try again</div>';
_("loginbtn").style.display = "block";
} else {
window.location = "profile.php?u="+ajax.responseText;
}
}
}
ajax.send("e_l="+e_l+"&p_l="+p_l);
}
}
从你所说的和你的代码来看,password_verify
似乎不适合你。 您确定数据库中的passowrd已使用PHP的password_hash
进行哈希处理吗?
相关文章:
- 尝试使用Phonegap进行php登录
- Ajax登录技术(后端php)
- 通过Javascript和PHP SDK保护Facebook登录
- AngularJS+PHP.登录面板
- 如何创建可从多个应用程序使用的PHP登录web服务
- JS单页应用程序和基于PHP的登录系统
- PHP登录不起作用
- 登录后PHP登录脚本重定向不起作用
- 从Javascript运行PHP文件来检查在线用户:表示未登录的用户是
- 使用PHP facebook connect+JS自动登录
- 使用php/javascript的简单登录表单
- 无法使用html5、AJAX和PHP登录
- 简单的PHP到Ajax'未登录'错误-如何
- 我在登录页面上遇到php验证问题
- 使用 JS 错误消息登录 PHP
- 如何在没有登录PHP的情况下停止直接访问页面
- 点击facebook登录php
- 我的登录php脚本,重定向到每个用户页面
- 简单的安全登录php/javascript
- 使用Ajax登录Php