0

我有一个文件,其中有这段代码

 session_start();
 session_register("name");
 $name = "test";

当我在 chrome 中看到 cookie 时,它​​说这是在根文件夹中。

我的问题是这个会话保存在我的本地主机 xampp 的哪里以及我的会话保存在 go daddy 共享主机的哪里。

如果我有 session_start(); $_SESSION['id'] ="一些价值"; ,我可以在所有页面中使用这个值,这是我从阅读有关会话时所理解的,如果我错了,请纠正我。

我在共享主机中使用了它,但是当我在另一个页面中调用会话变量时,它是空的,我不知道我的主机是否具有会话保存写入权限或者它可能为空的原因是什么。

4

6 回答 6

1

会话保存有 2 种设置:

  1. 在共享内存中。
  2. 在文件中。

在文件的情况下,您可以访问会话数据,而在内存的情况下,您不能。

访问会话数据使用此函数获取文件夹路径session_save_path();

注意:- 主机保护这些类型的文件夹,使其无法直接访问

检查会话设置是否在文件夹或内存中的另一件事phpinfo();

如果选择了文件您可以通过相同的功能显式更改路径session_save_path();请检查: 检查这里

于 2012-04-16T12:50:19.200 回答
0

要使用会话,您需要执行以下操作:

session_start(); 

然后你可以这样做:

$_SESSION['id'] ="some value";

并使用它:

$id = $_SESSION['id'];

session_register是一个不推荐使用的功能,你不应该使用它。无论如何,您以错误的顺序使用它(您应该对值做的最后一件事是注册它,您正在注册一个空值$name变量)。

于 2012-04-16T12:47:39.127 回答
0

会话在服务器中保存为名为例如 1234 的文件。这是一个文本文件。它保存在 php.ini 可配置的路径中。

客户端保存 cookie。cookie 的内容等于 sessione 文件的名称 1234。每个请求的浏览器都发送 cookie 内容,因此服务器读取 cookie 的内容并检查是否存在相应的会话。对于使用会话的问题...为我们提供了更多代码!

于 2012-04-16T12:45:17.470 回答
0

默认情况下,使用 Go Daddy 4GH 托管会话将保存到与您的 /html 目录处于同一级别的 /tmp 目录。您可以使用这些步骤找到完整路径。

找到您的绝对托管路径

1. Log in to your Account Manager.
2. Click Web Hosting.
3. Next to the hosting account you want to use, click Launch.

在服务器部分,您的主机帐户的绝对主机路径将显示。

如果这不是您要保存会话的位置,您可以在 php.ini 文件中更改它或在脚本中使用 session_save_path() 函数。

有关您的 XAMPP 堆栈的信息,您可以在此处查看

于 2012-04-20T22:50:14.133 回答
0

会话存储在服务器上,但会话 ID 作为长随机 ID 存储在用户计算机上。用户无法编辑会话,但是他们可以窃取会话 ID 并将其用于未经授权的帐户。

您可能在 php.ini 中将 register_globals 设置为 1。强烈建议您关闭它,因为它可能会被恶意使用,但这可以解释为什么设置 $name 也可以设置 $_SESSION['name']。它基本上允许从那一点设置所有变量。

于 2012-04-16T12:41:30.220 回答
0

您需要将新值另存为

$_SESSION['name'] = "test";

$_SESSION['name']不等于$name

因此保存价值$name = "test";不会被保存在$_SESSION['name']

您必须调用 session_start(); 在每个页面上检索保存的会话,从一个页面传播到所需页面。或在 php.ini 文件中设置为 on/1(不推荐)

变量存储的位置$_SESSION由 PHP 的 " session.save-path" 配置决定。通常这/tmp在 Linux/Unix 系统上是“”。如果不是 100% 确定,请使用 phpinfo() 函数查看您的特定设置,方法是在您的域的 DocumentRoot 中创建一个包含此内容的文件:

<? phpinfo() ?>

查看以下链接了解更多详情

session.save_path

于 2012-04-16T12:41:39.127 回答