Я создаю веб-сайт, у меня есть 2 страницы, одна для входа и одна для загрузки файла.
Когда пользователь входит в систему, я устанавливаю идентификатор этого пользователя, извлеченного из базы данных в * Переменная 1003 *, когда пользователь переходит на вторую страницу, он может загрузить файл, и ссылка на этот файл и идентификатор сохраняются в базе данных.
Мой внешний интерфейс, кстати, находится на совершенно другом домен, поэтому, когда пользователь загрузит файл, переменная $_SESSION
будет пустой, как я могу решить?
PHP проверить страницу входа на example.com
<?php
session_start();
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
$a = headers_list();
require "Connessione.php";
$connessione = new Connessione();
$ris = $connessione->getUtente($_POST['id']);
if($risposta['esisteGia'])
{
$_SESSION['ID'] = $ris[0]['IDUtente'];
$_SESSION['Tipo'] = $ris[0]['Ruolo'];
}
echo json_encode($risposta);
?>
Внешний интерфейс для входа в систему, записанный в ReactJS на example2.com
const esisteGia = () => {
async function controllaCheEsistaGia() {
let udid = "123";
let data = new FormData();
data.append("id", udid);
let risposta = await fetch(
"https://example.com/checkLogin.php",
{
method: "POST",
body: data,
credentials: "include"
}
);
risposta = await risposta.json();
console.log(risposta);
}
controllaCheEsistaGia();
};
На этом этапе установлен $_SESSION
.
uploadFile. php на example.com
session_start();
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
if(!isset($_SESSION['ID'])). //Here the session is now empty again
{
header("Location: {$_SERVER['HTTP_ORIGIN']}/Login");
die();
}
header('Content-Type: application/json; charset=utf-8');
$filePDF = $_FILES['pdfDaCaricare']['tmp_name']; //Also the $_FILES is not set, and I don't know why
example2.com / uploadFile
const caricaFile = async e => {
const fd = new FormData();
fd.append("pdfDaCaricare", file);
await axios.post(
"example.com/uploadFile.php"
fd,
{
method: "POST",
credentials: "include",
headers: {
"content-type": "multipart/form-data"
},
onUploadProgress: function(progressEvent) {
let percentCompleted = Math.round(
(progressEvent.loaded * 100) / progressEvent.total
);
document.getElementById("percentuale").innerText = percentCompleted;
}
}
);
};
Даже в localhost, это не работает