У меня проблема при попытке отобразить некоторые переменные сеанса на другой странице в php.Большинство потоков, которые я здесь видел, связаны с отсутствием "session_start ()".Но у меня уже есть это наверху моих файлов.
Я пытаюсь создать "модуль восстановления вашего пароля".У меня есть элемент формы, действие которого настроено на другую страницу.У меня есть база данных с двумя таблицами.Форма просто позволяет пользователю ввести свой адрес электронной почты.Когда я нажимаю кнопку sumbit, соединение mysqli должно искать в обеих таблицах пользователя с адресом электронной почты, хранящимся в форме, а затем сохранять остальные элементы (имя, пароль, вопрос восстановления и его ответ)table в некоторых переменных php.
В операторе if contidional я проверяю, в какой таблице хранится электронная почта, и затем создаю некоторые переменные сеанса, в которых хранится вся информация указанного пользователя.
Inна другой странице я просто пытаюсь отобразить некоторый текст вместе с переменной сеанса имени пользователя, если эта переменная сеанс установлена.Если нет, то это будет повторять текст «неудачной сессии».
Вот форма (файл, в котором находится эта вещь, с session_start () уже вверху):
<form action="cambio.php" method="post">
<h1>RECUPERACIÓN DE CONTRASEÑA</h1><br>
<p>Escriba su dirección de correo para modificar su contraseña:</p><br>
<div class="form group">
<label for="email">Correo electrónico:</label>
<input type="email" class="form-control ancho" id="email" name="email" class="ancho"><br>
</div>
<button type="submit" class="btn btn-primary" name="recuperar">Recuperar contraseña</button>
</form>
После подключения к базе данных, здесь я устанавливаюпеременные сеанса (в том же .php, что и предыдущий код формы):
if(isset($_POST['recuperar'])) {
$c = $_POST["email"];
$buscarAlumno="select nombre, correo, password, num_pregunta, respuesta from alumno where correo='$c';"; //first table
$buscarProfesor="select nombre, correo, password num_pregunta, respuesta from profesor where correo='$c';"; //second table
$resA = $conn->query($buscarAlumno);
$resP = $conn->query($buscarProfesor);
$rowA = $resA->fetch_array();
$rowP = $resP->fetch_array();
//Save the e-mail-matching fields (first table)
$rnA = $rowA["nombre"];
$rcA = $rowA["correo"];
$rpA = $rowA["password"];
$rnpA = $rowA["pregunta"];
$rrA = $rowA["respuesta"];
//Save the e-mail-matching fields (second table)
$rnP = $rowP["nombre"];
$rcP = $rowP["correo"];
$rpP = $rowP["password"];
$rnpP = $rowP["num_pregunta"];
$rrP = $rowP["respuesta"];
//In this statement, some of the variables above are going
//to be stored in session variables depending on the
//table in which the e-mail was found
if (isset($c)) {
if ($c == $rcP) {
$_SESSION['nomCorrecto'] = $rnP;
$_SESSION['corCorrecto'] = $rcP;
$_SESSION['pasCorrecto'] = $rpP;
$_SESSION['preCorrecto'] = $rnpP;
$_SESSION['resCorrecto'] = $rrP;
}
elseif ($c == $rcA) {
$_SESSION['nomCorrecto'] = $rnA;
$_SESSION['corCorrecto'] = $rcA;
$_SESSION['pasCorrecto'] = $rpA;
$_SESSION['preCorrecto'] = $rnpA;
$_SESSION['resCorrecto'] = $rrA;
}
else {
echo "Usuario no registrado.";
}
}
}
Этот код находится на другой странице, где я хочу, чтобы результаты отображались (опять же, на нем уже есть session_start ()начало файла).
<?php
//This part should show the name of the user, but is not working
if(isset($_SESSION['nomCorrecto'])) {
echo "Hola " .$_SESSION['nomCorrecto']. ".";
}
else {
echo "Sesión fallida.";
}
?>
Я не знаю, что я делаю неправильно, я не знаю, связана ли ошибка с оператором формы или как я сохраняю и отображаю сеанспеременные.Я только что получил сообщение об ошибке "Sesión fallida".
Любая помощь приветствуется.
Заранее спасибо.