2014-09-05 7 views
0

У меня есть файл PHP под названием file1.php с большим количеством коды, включая это:Получить значение из PHP файла в другие

$username = $_SESSION['user_name']; 

Если я эхо $ имени, он показывает имя зарегистрированных в пользователь. Я создал кнопку, где пользователи должны зарегистрироваться для события, если они нажмут на него. Этот код находится в другом файле. Этот второй файл запускается file1.php так:

<form action="file2.php" method="post"> 
<input type="submit" name="use_button" value="Register for next event" class="btn btn-default"/> 
</form> 

В file2.php, если я проверю эхо $ имени я не получаю имя текущего пользователя. Я пробовал это с сессиями, и это не сработает.

Как я могу повторить $ username в файле2.php?

+1

'session_start();' внутри ВСЕХ файлов? –

+0

'Я пробовал это с сессиями, и это не сработает. Что это значит? И используйте '$ _SESSION ['user_name']' вместо '$ username'. – jeroen

ответ

2

Убедитесь, что вы вызываете функцию session_start(); перед отправкой заголовков и убедитесь, что вы повторно заполняете значение для $username, прежде чем пытаться повторить его.

Итак:

<?php 
session_start(); 
$username = $_SESSION['username']; 
echo $username; 
?> 

Это должно работать.

Когда вы загружаете страницу, вы получите доступ ко всему, что установлено в массиве $_SESSION (при условии, что вы добавили вызов функции session_start()).

Таким образом, вы не сможете постоянно сохранять значение в переменной $username между страницами (насколько я знаю); вам нужно сначала установить его равным $_SESSION['username']. Один из способов заключается в том, чтобы включить файл в верхней части каждой страницы, которая обрабатывает подобные вещи, поэтому вам не всегда нужно делать это назначение вручную на каждой странице.

0

Он работает теперь с

session_start(); 
echo $_SESSION['user_name']; 

Я мог бы поклясться, я попробовал этот код прежде, и это не сработало :)

+0

['Вот почему я спросил ...'] (http://stackoverflow.com/questions/25690407/get-value-from-php-file-to-another#comment40152779_25690407);) –

0

Каждый запрос HTTP является полностью независимым от любого предыдущего или следующего запроса.

Как только вы отправите свой ответ браузеру, ваша текущая программа php и все ее переменные исчезли.

Есть три исключения из этого правила: -

  • Ваши $ _SESSION переменные будут сохраняться до тех пор, пока браузер поддерживает сеанс связи с веб-сервером. Но вы должны получить их по каждому запросу.
  • Любые файлы cookie, отправленные вами по предыдущему запросу, должны быть отправлены обратно вам.
  • Любые данные, которые вы указали в полях http-формы, при условии, что пользователь не изменил его.