Это то, что я делаю, чтобы установить переменные
<?PHP session_start(); ?> <?PHP $user_name = $_POST['username']; $first_name = $_POST['FirstName']; $last_name = $_POST['LastName']; $_SESSION['FirstName']=$first_name; $_SESSION['LastName']=$last_name; $_SESSION['UserName']=$user_name;
для тестирования я распечатал в этом файле, прежде чем устанавливать переменные сеанса, поэтому я знаю, что получаю значения из формы. Однако, когда я иду и распечатываю в другом, как это
<?PHP echo $_SESSION['UserName']; echo $_SESSION['FirstName']; echo $_SESSION['LastName'];
он выходит из строя, после комментирования некоторых из отпечатков я обнаружил, что он только устанавливает имя пользователя один, а остальные потеряны как-то
это из моей формы Логин Имя пользователя: Пароль:
это то, куда я иду, когда отправляется
$user_name = $_POST["username"]; $password = $_POST["password"]; $_SESSION["UserName"]=$user_name; $_SESSION["Password"]=$password;
Вот где я тогда пытаюсь распечатать
<?PHP echo "username: " echo $_SESSION["UserName"]; //this one works ?> <br> <?PHP echo "password: " echo $_SESSION["Password"]; //does not work ?>
мои переменные сеанса объявляются в верхней части только одной страницы, подобной этой
<?PHP session_start(); $_SESSION["UserName"]; $_SESSION["Password"]; ?>
просто убедитесь, что у вас есть
session_start()
; на всех этих страницах – Ghost
В дополнение к комментарию Ghost, может быть, что элементы вашей формы не содержат атрибут имени, и / или есть опечатка, или буквенный регистр не совпадают.
Username
и username
или username
Username
не совпадают. (PHP) чувствительны к регистру.
устанавливает имя пользователя один, а остальные каким-то образом теряются
Чтобы уточнить мой комментарий, я подозреваю, что ваши элементы формы находятся в нижнем регистре или не называются.
Я готов поспорить, что если вы измените
$first_name = $_POST['FirstName']; // FirstName is not the same as firstname $last_name = $_POST['LastName']; // LastName is not the same as lastname
в
$first_name = $_POST['firstname']; $last_name = $_POST['lastname'];
что он начнет работать для вас. Поскольку, эти два не проходят.
Однако для того, чтобы быть на 100% уверенным, вам нужно будет опубликовать код своей формы, но я точно не знаю о моем ответе.
Ваша форма должна содержать:
<input type="text" name="firstname">
а также
<input type="text" name="lastname">
Добавьте отчет об ошибках в начало файла, который поможет найти ошибки, если настройки вашей системы не будут автоматически настроены для этого, что, в свою очередь, скорее всего будет «Undefined index …».
<?php error_reporting(E_ALL); ini_set('display_errors', 1); // rest of your code
Sidenote: Сообщение об ошибках должно выполняться только в стадии постановки и никогда не выпускаться.
Теперь, если это все еще не работает, у вас проблема с кешем.
Вы можете использовать session_destroy()
. Вы также можете отключить сеанс, а затем начать все заново.
Для получения дополнительной информации об этом посетите:
http://php.net/manual/en/function.session-destroy.php
Уничтожает все данные, зарегистрированные на сеанс
http://php.net/manual/en/function.session-unset.php
Освободите все переменные сеанса
Редактировать:
Следуйте этому, и он будет работать, проверен. Затем вы можете изменить его.
Первая страница:
<html> <body> <form action="page2.php" method="post"> Username: <br><input type="text" name="username"><br> First name: <br><input type="text" name="firstname"><br> Last name: <br><input type="text" name="lastname"><br> <input type="submit" name = 'submit' value= 'Login'> </form> </body> </html>
page2.php
<?php error_reporting(E_ALL); ini_set('display_errors', 1); session_start(); $username = $_POST['username']; $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $_SESSION['username'] = $_POST['username']; $_SESSION['firstname'] = $_POST['firstname']; $_SESSION['lastname'] = $_POST['lastname']; echo "Username: " . $_SESSION['username'] . "<br>"; echo "First name: " . $_SESSION['firstname'] . "<br>"; echo "Last name: " . $_SESSION['lastname'] . "<br>"; ?>