2010-11-17 76 views
0

我目前正在尝试使用会话变量的网站上工作。

我有与session_start();开始,有包括内if陈述两种不同的HTML文件控制器脚本(的index.php)。一切工作都时髦,当我去/quote/index.php,我已经被设置为呼应预期页面上的会话变量,但如果我从URL中移除“index.php *”,使其指向刚刚/quote页面加载但是,没有一个会话变量显示。

我没有在我的脚本中使用session_destroy任何地方,并且会话变量没有回显“0”,所以我相当确定他们没有被取消设置,似乎他们只是忽略没有文件名网址!

任何了解为什么这是发生将是真棒, 感谢

/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'; 
?> 

变量在报价呼应了会议。 html.php

+0

确保对根的其他HTML文件没有命名“的index.html”或“index.htm的” – Codex73 2010-11-17 12:07:42

回答

1

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

+0

刚编辑我的问题包含的代码,我希望你描述的会是什么情况,但很可惜,没了!谢谢你的回答。 – BigRob 2010-11-17 12:33:03

0

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

如果一个选项是通过GET方法来设置你正在检查。你的表单在哪里使用GET方法?

发布你的整个脚本,你会得到更好的答案。

0

这有可能是与会话ID的Cookie有效期范围。因为如果cookie path设置为/quote/,则此cookie将仅在/quote/及更高版本中可用。