Я создал скрипт php, который отправляет данные имени пользователя и пароля в форму, связанную с базой данных (mySQLI), которая проверяет переданные данные и регистрирует пользователя. когда я использовал для ввода данных непосредственно из формы, он работает нормально. когда я отправляю через PHP-curl его, пропустив логин, но когда он перенаправляет на страницу входа в систему, он показывает ошибку, указывающую, что переменные сеанса не инициализированы. Есть ли какой-нибудь способ, которым я могу использовать либо сессионные куки-файлы, либо хранить куки-файлы с идентификатором сессии и так далее?
Сначала я попытался выполнить обычную передачу данных и работает, но после добавления кода php-curl он не работает, пробовал код из других вопросов и все еще существует проблема. Я получил идентификатор PHPSESSION, но не уверен, как его использовать для отправки сведений на серверную сторону для аутентификации того же пользователя, как он выглядит как система единого входа в системе
PHP-curl файл
session_start ();
$cookie="C:/xampp/htdocs/cookies.txt";
$url="http://localhost/login.php";
$postFields = array('user'=> "2001",
"pass"=> "qw12",
"submit" => "submit" );
echo $_COOKIE["PHPSESSID"];
session_write_close();
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIESESSION, 1);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, http_build_query($postFields));
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url);
$response = curl_exec($ch);
//echo $response;
if(!$response){
echo "logged out";
}
else{
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_URL, "http://localhost/loginSuccess.php");
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
echo $response;
}
curl_close($ch);
после входа в систему он должен перенаправить на эту страницу, как он зарегистрирован
это файл loggedin.php, в котором переменные сеанса остаются неопределенными
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>Log in</title>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css" integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay" crossorigin="anonymous">
<style>
.display-4 {
font-size: 2.5rem;
font-weight: 300;
line-height: 1.2;
}
</style>
</head>
<body>
<div>
<nav class="navbar navbar-expand-lg navbar-light" style="background-color: #E74C3C; margin:0px" >
<div ></div>
<span class="navbar-brand text-light" >Uni details</span>
<br> <br>
</div>
<?php
echo $_COOKIE["PHPSESSID"];
if(isset($_SESSION['uid'])){
echo '<div style="width: 62%;" ></div>';
//login echo '<span style=" color:white; margin-right: 10px;">'.$_SESSION['uid'].'</span>';
echo '<form action="databaseConnection/logout.php" method="POST">
<button type="submit" name="submit" class="btn-dark " style="border-radius: 5px" >logout</button>
</form> ';
}
else{
header("Location: login.php");
}
?>
</div>
</nav>
</div>
<!--jumbotron-->
<?php
if($_SESSION['uid'] == 2001)
{
echo '<div class="jumbotron" align="left" style="text-indent: 6.5%; background-color: transparent">
<img src="img/aau-logo.png" style="width:10%; height:10%;" alt="aau-logo">
<h1 class="display-4" style="text-indent:6.5%; font-weight: 500">You are logged in as: </h1>
<div class="container" style="text-indent:0%;">
<ul class="list-group ">
<li class="list-group-item" style="font-weight:500; font-size: 25px;text-align:center"> Admin </li>
</ul>
<br> <br>
<button><a href="sso.php">Moodle test page</a></button>
</div>
</div>';
}
else{
echo '<div class="jumbotron" align="left" style="text-indent: 6.5%; background-color: transparent">
<img src="img/aau-logo.png" style="width:10%; height:10%;" alt="aau-logo">
<h1 class="display-4" style="text-indent:6.5%; font-weight: 500">You are logged in as: </h1>
<div class="container" style="text-indent:0%;">
<ul class="list-group ">
<li class="list-group-item "> Student ID:';?> <?php echo $_SESSION['uid']; ?> <?php echo ' </li>
<br>
<li class="list-group-item "> College:';?> <?php echo $_SESSION['col']; ?> <?php echo '</li>
</ul>
</div>
</div>';
}
?>
Как и ожидалось, он должен пропустить вход в систему и держать меня в системе до выхода из системы или закрытия браузера.
просто хочу оставаться в системе на всех веб-страницах в этом домене.