Редактировать: после выполнения проб и ошибок, я замечаю, что если я прокомментирую следующий код:
$success = $_SESSION["success"];
session_unset($_SESSION["success"]);
переменная $ to отображается как задумано. Поэтому мой вопрос: почему нельзя одновременно использовать оба?
Оригинальный вопрос:
Я пытаюсь отправить электронное письмо с помощью функции mail (). Для этого я передаю переменную $ _SESSION ['emailfrompass'] на 2 страницы, но по какой-то причине переменная всегда пуста. Хотя есть еще одна переменная, которую я отправляю с сообщением, и у меня нет проблем с ее получением, это единственная проблема, которая создает проблемы
session_start () устанавливается на всех страницах. Я пытался использовать
ini_set ( 'display_errors', 1);
error_reporting (E_ALL);
для поиска проблемы, но бесполезно. Переменная всегда пуста
Это мой файл enterEFPass.php. Сверху у меня
<?php
session_start();
ini_set('display_errors',1);
error_reporting(E_ALL);
?>
<?php
if(isset($_SESSION["success"]))
{
$success = $_SESSION["success"];
session_unset($_SESSION["success"]); //echoing this will display the right thing
$to = "";
$to = isset($_SESSION['emailforpass']) ? $_SESSION['emailforpass'] : 'not found';
echo $to; //does not work
//mail($to, "Reset your password", $message, $headers);
?>
<div id='alert'>
<div class='alert alert-block alert-info'>
<?php
echo $success;
// echo "<script>setTimeout(\"location.href = 'login-page.php';\",2500);</script>";
?>
</div>
</div>
<?php
}?>
И это enterEFPass_route.php, в котором я создаю переменные $ _SESSION
<?php
session_start();
include 'db.php';
$email = "";
$conn = Connect();
if (isset($_POST['send_email_button']))
{
$email = mysqli_real_escape_string($conn, $_POST['email']); //$_POST['email'] the field where I introduce the email
}
if (empty($email)) { array_push($errors, "Please enter a valid email"); }
if (count($errors)==0) // just an array for error messages
{
$_SESSION['emailforpass'] = $email; //appears empty always
$_SESSION['success'] = "An email has been sent to the corresponding address. Please follow the instructions provided there"; //goes without problems
header("location: enterEFPass.php");
} else
{
$_SESSION['errormsgpassress']= $errors; //no problems in sending
header("location: enterEFPass.php");
}
}
?>
Я ожидаю, что переменная $ to будет печататься на экране, но она всегда печатает "not found"
Если я напечатаю $ _SESSION ['success'], в этом нет проблем