Di bahagian hadapan saya menggunakan ReactJs dan saya telah cuba mendapatkan data pengguna yang dilog masuk dari bahagian belakang (PHP) melalui axios.get, tetapkan syarat untuk pengguna dan jika dipenuhi mereka akan dikembalikan ke halaman log masuk Bahagian belakang tidak mengembalikan apa-apa dan pulangan muncul Dalam kes log masuk, kerana fail di mana bahagian hadapan bertanggungjawab untuk memproses data kosong, tiada apa yang dikembalikan.
Saya telah menyediakan sesi, menggantikan $_SESSION[] dengan $_POST[] dan meletakkan coretan kod ini di bahagian atas halaman:
error_reporting(E_ALL); ini_set('display_errors','1');
Tetapi tiada apa yang berfungsi dan ralat tidak ditunjukkan. Saya juga menguji dalam Posman dan ia kembali kosong, tetapi apabila saya menguji dalam x-www-form-urlencoded dengan semua yang ditetapkan dan kunci dan nilai ditulis dalam apa jua cara yang mungkin, ia mengembalikan ralat 400, Semua medan mesti diisi .
Di bawah saya akan siarkan coretan kod untuk log masuk dan pendaftaran (di mana input pengguna diproses untuk dihantar ke pangkalan data).
Log masuk
$db = _db(); try { $q=$db->prepare("SELECT * FROM users WHERE email = :email"); $q->bindValue(":email", $_POST["email"]); $q->execute(); $row = $q->fetch(); if(!empty($row)){ if (password_verify($_POST["password"], $row["password"])) { $user = array( "user_id" => $row["user_id"], "first_name" => $row["first_name"], "last_name" => $row["last_name"], "email" => $row["email"], "company" => $row["company"], "phone_number" => $row["phone_number"], "verified" => $row["verified"], "token" => $row["token"], ); header("Content-type: application/x-www-form-urlencoded"); http_response_code(200); echo json_encode($user); exit(); } else { header("Content-type: application/x-www-form-urlencoded"); http_response_code(400); echo json_encode("Wrong email or password"); exit(); } } else { header("Content-type: application/x-www-form-urlencoded"); http_response_code(400); echo json_encode("User does not exist"); exit(); }
Pendaftaran - Tetapkan juga $_SESSION di sini kerana selepas mengesahkan akaun, saya bercadang untuk mengarahkan pengguna terus ke papan pemuka
$q=$db->prepare("INSERT INTO users(user_id, first_name, last_name, company, email, phone_number, password, forgot_password, token, verified) VALUES(:user_id, :first_name, :last_name, :company, :email, :phone_number, :password, :forgot_password, :token, :verified)"); $q->bindValue(":user_id", null); $q->bindValue(":first_name", $firstName); $q->bindValue(":last_name", $lastName); $q->bindValue(":company", $company); $q->bindValue(":email", $email); $q->bindValue(":phone_number", $phoneNumber); $q->bindValue(":password", $passwordHash); $q->bindValue(":forgot_password", $forgotPass); $q->bindValue(":token", $token); $q->bindValue(":verified", false); $q->execute(); $user_id = $db->lastInsertId(); $to_email = $email; $subject = "Email subject"; $message = "Click on the following link to verify your account: <a href='http://localhost/api/confirm_account.php?token=$token'>Confirm your account</a>"; require_once(__DIR__."/emailVerification/send_email.php"); $user = array( "user_id" => $_SESSION["user_id"] = $row["user_id"], "first_name" => $_SESSION["first_name"] = $row["first_name"], "last_name" => $_SESSION["last_name"] = $row["last_name"], "email" => $_SESSION["email"] = $row["email"], "company" => $_SESSION["company"] = $row["company"], "phone_number" => $_SESSION["phone_number"] = $row["phone_number"], "verified" => $_SESSION["verified"] = $row["verified"], "token" => $_SESSION["token"] = $row["token"], ); header("Content-type: application/json"); http_response_code(200); echo json_encode($user); exit(); } }
Beginilah cara saya mengendalikan permintaan POST/GET di bahagian hadapan
const handleLogInSubmit = (event) => { event.preventDefault(); axios .post("http://localhost/api/login.php", { email: userInput.email, password: userInput.password, }) .then((response) => { if (response.data) { navigate("/dashboard"); } else { setErrorMessage("Login failed, try again"); } }) useEffect(() => { axios.get("http://localhost/api/login.php") .then((response) => { if(response.data){ setUser(response.data); console.log(response.data) } else { console.log(response) navigate("/login"); } }); }, [navigate]);
Output fail log masuk.php
Jika anda perlu melihat kod bahagian hadapan dan bahagian belakang yang lain, sila beritahu saya.
Editor:
Sekarang saya dapat melihat apa yang salah dengan kod tetapi walaupun selepas menerima mesej Log masuk berjaya Saya terus dialihkan ke halaman log masuk dan hanya melihat axios.get not retriving apa-apa, hanya axios.post Berfungsi:
Masalahnya ialah anda menghantar
JSON
数据,但尝试使用$_POST
来提取它 根据文档适用于x-www-form-urlencoded
或multipart/form-data
data borang dari bahagian hadapan.Daripada menghantar data JSON, anda boleh menghantar data yang dijangkakan oleh bahagian belakang anda, yang merupakan rentetan parameter pertanyaan: