$ _SESSION在URL中没有文件名时不能正常工作?

时间:2010-11-17 12:00:16

标签: php session-variables

我目前正在开发一个我正在尝试使用会话变量的网站。

我有一个以session_start();开头的控制器脚本( index.php ),并在if语句中包含两个不同的HTML文件。当我转到/quote/index.php时,一切都很常规,我设置的会话变量会按预期在页面上回显,但是如果我从URL中删除“index.php *”,那么它指向的只是/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 个答案:

答案 0 :(得分:1)

这两个文件名是什么? 似乎您所包含的文件之一名为index.html,并且位于mysite.com/quote/本身。如果我没有错,如果在目录中有index.html和index.php,则默认情况下会加载index.html,除非在url中明确指定了该文件。因此,在您未明确指定index.php的情况下,似乎正在加载index.html。当然,只有当目录中存在index.html时才会出现这种情况。

答案 1 :(得分:0)

确保您还在要回显会话变量的PHP页面顶部使用session_start()。并确保index.php是根目录中的唯一索引。

您正在检查是否通过GET方法设置了选项。你的表格在哪里使用GET方法?

发布您的整个脚本,您将获得更好的答案。

答案 2 :(得分:0)

这可能与会话ID cookie的有效范围有关。因为如果cookie path设置为/quote/,则Cookie只会在/quote/及更高版本中提供。