- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 .js 和 .php 文件之间发送数据以进行登录。我已经设法使用 ajax 将数据从 js 发送到 php,但是我在 .php 文件中进行登录检查时遇到了一些困难,循环总是在 firebug 中返回“失败”,无论用户名和密码是正确与否。
我已经尝试匹配用户名和密码,但它似乎没有按照我想要的方式工作。我是新手,所以我可能犯了一个错误,但不知道出了什么问题。我检查了与此类似的各种问题,但没有一个能提供帮助。如果我能得到一些帮助,我将不胜感激!以下是代码:
.js
$(document).ready(function() {
$("#login").click(function() {
var email = $("#email").val();
var password = $("#password").val();
//checking for blank fields
if (email == '' || password == '') {
$('input[type="text"],input[type="password"]').css("border", "2px solid red");
$('input[type="text"],input[type="password"]').css("box-shadow", "0 0 3px red");
alert("Please fill up all the fields");
}
else
{
$.ajax({
type: "POST",
url: "http://localhost/Reward/applogin.php",
data: {log_email: JSON.stringify(email), log_pwd: JSON.stringify(password)},
dataType: 'JSONP',
crossDomain: true,
cache: false,
success: function(data)
{
if (data == 'Invalid Email')
{
$('input[type="text"]').css({
"border": "2px solid red",
"box-shadow": "0 0 3px red"
});
$('input[type="password"]').css({
"border": "2px solid #00F5FF",
"box-shadow": "0 0 5px #00F5FF"
});
alert(data);
}
else if (data == "Email or Password is incorrect")
{
$('input[type="text"],input[type="password"]').css({
"border": "2px solid red",
"box-shadow": "0 0 3px red"
});
alert(data);
}
else if (data == "Successfully Logged in")
{
alert("Success");
$("form")[0].reset();
$('input[type="text"],input[type="password"]').css({
"border": "2px solid #00F5FF",
"box-shadow": "0 0 5px #00F5FF"
});
alert(data);
}
else
{
alert(data);
}
}
})
}
});
});
.php
<?php
header('Content-Type: application/json');
require 'dbcon.php';
if((isset($_POST["log_email"])) && (isset($_POST["log_pwd"])))
{
require 'dbcon.php';
$log_email = json_decode($_POST["log_email"]);
$log_pwd = json_decode($_POST["log_pwd"]);
$result = $con->prepare("SELECT `acc_email`, `acc_pwd` FROM `account` WHERE `acc_email` = ?");
$result->bind_param('s', $log_email);
$result->execute();
$result->bind_result($acc_email, $acc_pwd);
if($result->fetch())
{
if ($acc_email == $log_email && $acc_pwd == $log_pwd)
{
$data="Successfully Logged in";
echo json_encode ($data);
}
else
{
$data="Email or Password is incorrect";
echo json_encode($data);
}
}
else
{
echo json_encode ("Failed");
}
//connection closed
mysqli_close ($con);
}
else
{
echo json_encode ("Super Failed");
}
?>
编辑:我已经尝试使用测试 .php 文件来查看它是否会有所不同。似乎“if”循环被忽略了,它直接跳到“else”部分并回显“u lose”作为 Firebug 中的响应。如果我删除 else 部分,则根本没有任何响应。
这是我使用的测试 .php 文件:
<?php
if(isset($_POST['log_email']))
{
echo json_encode("blablabla");
}
else
{
echo json_encode("u lose");
}
?>
最佳答案
我认为错误在这里:
$result = $con->prepare("SELECT `acc_email`, `acc_pwd` FROM `account` WHERE `acc_email` = ?");
$result->bind_param('ss', $log_email, $log_pwd);
这样修改第二行:
$result->bind_param('s', $log_email);
您只需要比较电子邮件,而不是密码和电子邮件。
现在,这个片段也是不必要的:
$acc_email = $acc_email;
$acc_pwd = $acc_pwd;
所以你的函数应该是这样的:
<?php
require 'dbcon.php';
if(isset($_POST["log_email"]) && isset($_POST["log_pwd"]))
{
require 'dbcon.php';
$log_email = mysqli_real_escape_string($con, $_POST["log_email"]);
$log_pwd = mysqli_real_escape_string($con, $_POST["log_pwd"]);
$result = $con->prepare("SELECT `acc_email`, `acc_pwd` FROM `account` WHERE `acc_email` = ?");
$result->bind_param('s', $log_email);
$result->execute();
$result->bind_result($acc_email, $acc_pwd);
if($result->fetch())
{
if ($acc_email == $log_email && $acc_pwd == $log_pwd)
{
echo json_encode ("Successfully Logged in");
}else{
echo json_encode("Email or Password is incorrect");
}
}
else
{
echo json_encode ("Failed");
}
//connection closed
mysqli_close ($con);
}else{
echo json_encode ("Failed");
}
?>
关于javascript - 尽管用户名和密码正确,但 PHP 和 Javascript 登录不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41819601/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!