У меня PHP-проект по созданию расписания.
Я пытаюсь использовать SESSIONS для запоминания переменной, которая состоит из 1 объекта расписания класса, которое я написал.
1. index.php. На этой странице чистый HTML, просто форма с методом POST и действием для 2-й страницы.
<!DOCTYPE html>
<html lang="ru">
<head>
<link rel="stylesheet" type="text/css" href="styles/styles.css">
<meta charset="UTF-8">
<title>Главная страница</title>
</head>
<body>
<form method="post" action="php-files/create_object_schedule.php" target="_blank">
<div>
Уровень образования:
<select name="edu_level">
<option>Бакалавриат</option>
<option>Магистратура</option>
<option>Аспирантура</option>
</select>
</div>
<div>
Форма обучения:
<select name="edu_form">
<option>Очная</option>
<option>Очно-заочная</option>
<option>Заочная</option>
</select>
</div>
<div>
Семестр:
<select name = "edu_semester">
<option>1 семестр (осенний)</option>
<option>2 семестр (весенний)</option>
</select>
<select name = "edu_year">
<option>2019-2020</option>
<option>2020-2021</option>
</select>
учебного года.
</div>
<div>
</div>
<button type="submit" name="create_schedule">Создать расписание</button>
</form>
</body>
</html>
2-я страница "create_object_schedule.php" имеет следующий код:
<?php
session_start([
'cookie_lifetime' => 86400,
]);
require "../classes/schedule.php";
$_POST['edu_semester'] = array_search($_POST['edu_semester'], array(1 => '1 семестр (осенний)', 2 => '2 семестр (весенний)'));
$edu_year_start = (int)substr($_POST['edu_year'], 0, 4);
$edu_year_end = (int)substr($_POST['edu_year'], -4, 4);
$_SESSION['schedule'] =
new schedule('schedule_' . $_POST['edu_semester'] . 'sem_' . $edu_year_start .
'_' . $edu_year_end, $_POST['edu_level'], $_POST['edu_form'], $_POST['edu_semester'],
$edu_year_start, $edu_year_end);
header('Location: schedule_create.php');
На этой странице я создаю объект класса с методом __construct, а затем сохраняю этот объект в SESSION. Затем он перенаправляет на schedule_create.php, где мы можем настроить параметры расписания, а также есть HTML-код для отображения информации об этом расписании. Код schedule_create.php:
<?php
session_start([
'cookie_lifetime' => 86400,
'read_and_close' => true,
]);
require "../classes/schedule.php";
var_dump($_SESSION);
c
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<link rel="stylesheet" type="text/css" href="../styles/styles.css">
<meta charset="UTF-8">
<title>Новое расписание</title>
</head>
<body>
<p>
<h3>Создание расписания с параметрами</h3>
Уровень образования: <?=$_SESSION['schedule']->get_edu_year_start()?><br>
Форма обучения: <?=$edu_form?><br>
Семестр: <?=$edu_semester?><br>
Учебный год: <?=$edu_year_start?>-<?=$edu_year_end?>
</p>
<div>
<table>
<colgroup>
<col width="10">
<col width="200">
<col width="400">
</colgroup>
<tbody>
<tr>
<th colspan="6">Требуемые данные</th>
</tr>
<tr>
<th>#</th>
<th>Наименование</th>
<th>Загрузка</th>
</tr>
<tr>
<td>1</td>
<td>РУП 2016 09.03.02</td>
<td align="center">
<form name="form1" enctype="multipart/form-data" method="POST">
<input type="file" name="path" title="Выберите файл"/> </br>
<input type="submit" name="button" value="Загрузить"/> </br>
</form>
</td>
</tr>
</tbody>
</table>
</div>
<?php
move_uploaded_file($_FILES['path']['tmp_name'], '../rup/090302_o_2016.xls');
if(key_exists('button', $_POST))
{
$_SESSION['schedule']->connect_to_excel('090302_o_2016.xls');
$_SESSION['schedule']->db_record_departments();
}
?>
<br>
<div>
<table>
<colgroup>
<col width="10">
<col width="200">
<col width="400">
</colgroup>
<tbody>
<tr>
<th colspan="6">Загруженные данные</th>
</tr>
<tr>
<th>#</th>
<th>Наименование</th>
<th>Действия</th>
</tr>
</tbody>
</table>
</div>
</body>
</html>
Поэтому я использую функцию session_start () на страницах create_object_schedule.php и schedule_create.php. Но когда он перенаправляет на последнюю страницу (schedule_create.php) var_dump($_SESSION)
возвращает array(0) { }
.
Я попытался установить cookie_lifetime
, я просматривал php.ini и все кажется нормальным.
Iпрошу прощения за русские слова в коде и за неправильное именование файлов. Я новичок в PHP и учусь делать все это.
Спасибо!