ログイン用に.jsファイルと.phpファイルの間でデータを送信しようとしています。私はjsからphpにajaxを使ってデータを送ることに成功しましたが、.phpファイルのログインチェックにはいくつかの問題があります。ユーザー名とパスワードが正しいかどうか。正しいユーザー名とパスワードにもかかわらず、PHPとJavascriptのログインが機能しない
私はユーザー名とパスワードを一致させようとしましたが、私が望むように動作していないようです。私はこれで新しいのでおそらく間違いを犯しましたが、何が間違っているのか分かりません。私はこれに似た様々な質問をチェックしましたが、誰も助けることができませんでした。私はいくつかの助けを得ることができれば感謝します!ここで、コードは次のとおりです。
の.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"をエコーします。 else部分を削除すると、全く応答がありません。ここで
は、私が使用したテストの.phpファイルです:
<?php
if(isset($_POST['log_email']))
{
echo json_encode("blablabla");
}
else
{
echo json_encode("u lose");
}
?>
プレースホルダは1つのみです。 2つの値をバインドしようとしています。あなたは束縛するときに脱出する必要はありません。もしあなたがまだいなければ、パスワードをハッシュする必要があります。また、あなたが返品を受け取った場合、あなたが知っている '$ acc_email == $ log_email'は必要ありません。 – chris85
*ハッシュされていないパスワードを保存するたびに、rootは/ dev/nullに子猫を移動させます!* 'password_hash()'と 'password_verify()'を使用してください –