#javascript #php #session #fetch
#javascript #php #сеанс #выборка
Вопрос:
Я пытаюсь выполнить простую аутентификацию в Javascript, используя выборку для отправки учетных данных в файл PHP (login.php ) внутри этого файла он просто аутентифицируется и добавляет некоторые значения в $_SESSION, и после получения ответа я немедленно вызываю другую выборку get для (sessioninfo.php ) и этот php-файл просто возвращает $_SESSION дляв целях тестирования, но я получил пустой массив, хотя я уже вызвал session_start() в (sessioninfo.php ) и (login.php ).
Я пробовал использовать axios и console.регистрируйте ответ, и каждый ответ показывает другой идентификатор сеанса PHP, который, я думаю, является причиной того, почему $_SESSION пуст.
fetch("http://localhost/login.php/", {
method: 'POST',
body: JSON.stringify({username: 'test', password: 'test'})
})
.then(res => res.json())
.then(data => {
fetch("http://localhost/sessioninfo.php")
.then(res => res.json())
.then(data => console.log(data));
});
Отредактировано:
login.php
<?php
session_start();
header("Content-Type: application/json");
require_once "../../pdo.php";
/**
* @var PDO $pdo
*/
$data = json_decode(file_get_contents('php://input'), true);
$sql = "SELECT user_id from users WHERE username=:uname AND password=:pwd";
header("Content-Type: application/json");
$isInit = isset($data['username']) amp;amp; isset($data['password']);
if($isInit) {
$stmt = $pdo->prepare(
$sql);
$stmt->execute(array(
':uname' => $data['username'],
':pwd' => $data['password']
));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if($row != false) {
$sessionHash = hash('md5', $data['username'].$data['password'].$row['user_id']);
$_SESSION['ca'] = $sessionHash;
$_SESSION['user_id'] = $row['user_id'];
$response = array('isAuth' => true, 'user_id' => $row['user_id'], 'ca' => $sessionHash, 'session' => $_SESSION);
echo json_encode($response);
}
else {
$response = array('isAuth' => false);
echo json_encode($response);
}
}
else {
$response = array('message' => 'Missing input');
echo json_encode($response);
}
Я думаю, что нет проблем в login.php потому что я протестировал его с правильным именем пользователя и паролем и вернул правильный ответ
sessioninfo.php
<?php
session_start();
echo json_encode($_SESSION);
Комментарии:
1. Пожалуйста, покажите, что именно делает PHP. Это должно сработать, действительно.
2. Хорошо, я уже добавил файлы php
3. Здесь ошибка SQL-инъекции.