Не все переменные сеанса PHP установлены

Это то, что я делаю, чтобы установить переменные

<?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() . Вы также можете отключить сеанс, а затем начать все заново.

Для получения дополнительной информации об этом посетите:


Редактировать:

Следуйте этому, и он будет работать, проверен. Затем вы можете изменить его.

Первая страница:

 <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>"; ?>