2015-11-01 2 views
0

То, что я пытаюсь сделать, есть страница HTML, которая является формой входа администратора. Я хочу передать имя пользователя на другие страницы, чтобы убедиться, что пользователь вошел в систему, прежде чем ему будет разрешен доступ к функциям вызываемой страницы.Я не могу получить переменную сеанса во втором PHP-файле

У меня есть этот код в файл PHP, который включен в файл .html:

session_start(); 
session_register('username'); 
$_SESSION['id']=10; 
echo "Login session id is " .$_SESSION['id']; 

unset($_SESSION['username']); 
// Only process POST reqeusts. 
if ($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
    require_once 'config.inc.php'; 

    $connect = mysqli_connect($host_name, $user_name, $password, $database); 

    if (mysqli_connect_errno()) 
    { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
    else 
    { 
     $uName = $_POST['name']; 
     $_SESSION['username'] = $uName; 
     echo $_SESSION['username']; 

.....> больше к файлу, но это показывает имя пользователя просто отлично.

Во втором файле, что является .html файл с PHP встраиваемого в файле:

<?php 

     session_start(); 

     echo "Add user session id is "; 
     echo "<br>"; 
     echo $_SESSION['id']; 
     echo "<br>"; 
     echo "Hello"; 
     echo "<br>"; 
     echo $_SESSION['username']; 
     echo "<br>"; 
     echo $_SESSION; 
     echo "<br>"; 
     echo $_SESSION['time']; 
     echo "<br>"; 
     echo date('Y m d H:i:s', $_SESSION['time']); 

жесткий текст кода и «эхо даты ('Y мкр H: я: S', $ _SESSION [ 'время']);" дисплей хорошо. Дата эха линии ('Y m d H: i: s', $ _SESSION ['time']); отображает массив сусла.

Может ли кто-нибудь сказать мне, почему я не могу получить значение имени пользователя?

+0

удалить пробелы в второй файл перед 'session_start();' Это будет работать – Mubin

+1

@Mubin Мне любопытно, как отступы файла может привести к сбою? – Script47

+2

Почему вы все еще используете 'session_register', который устарел давным-давно. – CBroe

ответ

1

Ваш вопрос, как вы сами сказали

Во втором файле, что является .html файл с PHP встраиваемого в файле:

PHP должен быть в .php файле, не a .html расширение файла.

Edit 1:

По PHP.net:

Предупреждение Эта функция была устаревшей, так как PHP 5.3.0 и REMOVED в РНР 5.4.0.

Вы должны прекратить использовать его.

Edit 2:

Вы также вторя $_SESSION,

echo $_SESSION; 

, которые должны бросать array to string conversion ошибку, если ваша обработка ошибок включена и расширение файла .php.

+0

PHP не обязательно должен находиться в файле .php. –

+0

@ Don'tPanic Не может быть в файле .html. Я знаю, что это может быть в других типах файлов, таких как '.phtml', но я просто использовал его в качестве примера, поскольку' .php', вероятно, наиболее широко используется для файлов PHP. – Script47

+0

Почему бы и нет? Это может быть любой файл, с которым вы настроили свой веб-сервер для работы с PHP. Включение PHP-кода в файлы .html является обычным явлением, и расширение файла не влияет на способность PHP интерпретировать файл. –

0

Это самый простой пример, который я мог бы придумать. Я надеюсь, что это помогает.

HTML

<form action="signin.php" method="post"> 
    Username: <input type="text" name="username"><br> 
    Password: <input type="text" name="password"><br> 
    <input type="submit"> 
</form> 

PHP [signin.php]

<?php 
    if($_POST['username'] == 'username') && $_POST['password'] == 'password') 
    { 
     session_start(); 
     $_SESSION['username'] = $username; 
     header("location: admin.php"); 
    } 
    else 
    { 
     header('location: error.php?msg=Invalid_Username'; 
    } 
?> 

PHP [error.php]

<?php 
    $msg = ''; 
    if(isset($_GET['msg'])) 
    { 
     if($_GET['msg'] == "Invalid_Username") 
     { 
      $msg = "Your username or password didn't match."; 
     } 
     else if($_GET['msg'] == "Invalid_Access") 
     { 
      $msg = 'You are not allowed on that page.'; 
     } 
    } 
    else 
    { 
     $msg = 'Unknown Error'; 
    } 
?> 
<html> 
    <body> 
     <h1>ERROR</h1> 
     <p><?php echo $msg;?></p> 
    </body> 
</html> 

PHP [админ.PHP]

<?php 
    session_start(); 
    if($_SESSION['username']) 
    { 
     echo 'your signed in'; 
    } 
    else 
    { 
     header('location: error.php?msg=Invalid_Access'); 
    } 
?> 
Смежные вопросы