$ _SESSION не будет работать без имени файла в URL? - PullRequest
0 голосов
/ 17 ноября 2010

В настоящее время я работаю над сайтом, где пытаюсь использовать переменные сеанса.

У меня есть скрипт контроллера ( index.php ), который начинается с session_start(); и содержит два разных HTML-файла, включенных в операторы if.Все работает отлично, когда я перехожу на /quote/index.php, переменные сеанса, которые я установил, отражаются на странице, как и ожидалось, однако, если я удаляю 'index.php*' из URL, он указывает на /quoteстраница загружается, однако ни одна из переменных сеанса не отображается.

Я нигде не использую session_destroy в своих скриптах, а переменные сеанса не повторяют '0', поэтому я вполне уверен, что они не сбрасываются, кажется, что онипросто игнорируется без имени файла в URL!

Любое понимание того, почему это происходит, было бы здорово, спасибо

/ quote / index.php (с удалением лишних битов):

<?php
session_start();

if (isset($_GET['form']))
    {
include 'form.html.php';
exit();
    }
if (isset($_GET['fetchquote'])) 
    {
    $width = mysqli_real_escape_string($link, $_POST['width']);
    $height = mysqli_real_escape_string($link, $_POST['height']);
    $_SESSION['height'] = $height;
    $_SESSION['width'] = $width;
    }
include 'quote.html.php';
?>

Переменные сеанса отображаются в quote.html.php

Ответы [ 3 ]

1 голос
/ 17 ноября 2010

каковы два имени файла? Кажется, что один из включаемых вами файлов называется index.html и находится в самом mysite.com/quote/. И если я не ошибаюсь, если в каталоге есть index.html и index.php, тогда index.html загружается по умолчанию, если файл явно не указан в URL. Так что в вашем случае, когда вы не указываете index.php явно, загружается index.html. Конечно, это имеет место, только если в каталоге есть index.html.

0 голосов
/ 17 ноября 2010

Возможно, это как-то связано с областью действия cookie идентификатора сеанса. Поскольку, если путь cookie установлен на /quote/, файл cookie будет доступен только в /quote/ и далее.

0 голосов
/ 17 ноября 2010

Убедитесь, что вы также используете session_start() в верхней части страниц PHP, где вы хотите отобразить переменную сеанса.И убедитесь, что index.php является единственным индексом в вашем корне.

Вы проверяете, установлена ​​ли опция с помощью метода GET.Где ваша форма, использующая метод GET?

Опубликуйте весь сценарий, и вы получите гораздо лучшие ответы.

...