Ошибка простых сессий PHP - PullRequest
0 голосов
/ 15 января 2010

Я действительно обнаружил свою проблему, но я действительно хочу знать, почему это проблема. У меня было две страницы. Я начал сеанс на этой странице и нажал «Отправить». Затем у меня была ссылка на session2.php, который запустил этот сеанс и смог получить информацию из form1.php. Я только учусь о сессиях, и это было очень простое упражнение, чтобы узнать, что может делать сессия.

В этом и заключается проблема, у меня в голове была ссылка на таблицу стилей, и у нее был пустой href, ну, это был href = "#", и когда это было там, session2.php не запускал сеанс из form1.php и захватывал информация из формы. Без этого href = "#" в теге style он работал нормально, и он также работал нормально, если это был поддельный тег стиля href = "нечто.css", но href = "" тоже не работает.

Почему это? У меня они есть только потому, что это шаблон, который я сделал для рабочего процесса, может быть, я больше не могу включить ссылку css в свой шаблон, чтобы предотвратить будущие проблемы.

Вы можете видеть, что этот сайт работает здесь , если я не объяснил себя.

form1.php

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>

<head>
<title></title>
<!--//CSS STYLESHEETS//-->
<link rel="stylesheet" href="#" type="text/css">
</head>

<body>
<a href="sessions2.php">Go to session 2</a>
<!--form stuff is in here-->
</body

session2.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>

<head>
<title></title>
</head>

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


  ?>
  </body>
</html>

Ответы [ 3 ]

1 голос
/ 15 января 2010

Для того, чтобы работать так, как вы хотите, вы должны сначала начать сеанс. Звучит просто, потому что это так. Когда вы говорите session_start, php сначала ищет принятый cookie-файл сессии для обработки контента.

С http://php.net/manual/en/function.session-start.php

Примечание. Чтобы использовать сеансы на основе файлов cookie, метод session_start () должен быть вызван до вывода чего-либо в браузер.

1 голос
/ 15 января 2010

Ваша вторая страница должна выглядеть так:

<?php
    session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
       <title></title>
    </head>
    <body>
    <?php
        $username = $_SESSION['name'];
        echo $username;
    ?>
    </body>
</html>

Обратите внимание, что session_start() должно появляться до того, как на экран выводится любое содержимое.

В соответствии с примечанием на session_start странице справки PHP :

Примечание. Чтобы использовать сеансы на основе файлов cookie, необходимо вызывать session_start () перед выводом чего-либо в браузер.

0 голосов
/ 15 января 2010

Пытаетесь ли вы вывести материал на страницу перед отправкой заголовков? Что произойдет, если вы поместите таблицу стилей после вызова session_start ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...