2010-09-03 42 views
1

我想在一个页面上设置会话变量,然后将其加载到另一个页面上。此代码适用于Windows 7上的Firefox。访问我的iPod Touch上的相同页面时不起作用。使用PHP在iPhone/iPod Touch上损坏的会话变量使用PHP

第一页是这样的:

session_start(); 
$id = "e0vgrejdmkjbltrdrtqtnjgzmy1cqurfluuzodeyqjlcoey5rx0"; 
$_SESSION['id'] = $id; 

第二页面包含以下代码:

session_start(); 
$id = $_SESSION['id']; 
echo "ID is $id"; 

输出然后示出了如:

ID is 

如果我运行该代码:

echo "Cookie "; 
print_r($_COOKIE); 
echo "Session "; 
print_r($_SESSION); 

我的Windows机器上的输出是:

Cookies Array ([__utma] => 118825363.834893446.1282611798.1283521628.1283525684.13 [__utmz] => 118825363.1283397018.9.7.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=spf test [PHPSESSID] => 6333ddae9f0514f7c4744e340a6746d1 [__utmc] => 118825363 [__utmb] => 118825363.5.10.1283525684 [id] => eza3odazrtcxlty5mdutoem2ms05ndqxltrcnzvgrjjbnzrgqn0) Session Array ([id] => ezffmddgmdmxluvcmzmtruvfnc0wmdu4ltrfnzddnevfmdhfnx0) 

,并在我的iPhone的输出是:

Cookies Array ([PHPSESSID] => 8ec43ead5611dde399d763166926021d [__utma] => 118825363.1927811493.1283218120.1283521676.1283525856.6 [__utmb] => 118825363.1.10.1283525856 [__utmc] => 118825363 [__utmz] => 118825363.1283490501.4.3.utmcsr=(mydomain.com)|utmccn=(referral)|utmcmd=referral|utmcct=/) Session Array ([id] =>) 

没有错误发生,它只是似乎设置$ ID为 “” 我认为。这似乎很简单。有什么我想念你不能在苹果设备上做到这一点?

+0

第1页上的'$ id'是什么?你如何检查第2页上的“$ id”是什么?你只给了我们一半的故事。 – 2010-09-03 13:57:00

回答

1

区别必须在Cookie中。做print_r($ _ COOKIES); ,你会看到iPad/iPhone出于某种原因不想向你发送cookies,那么我们就会看到。

+0

好吧,我已经通过这些步骤并添加了这些数据。 – MikeD 2010-09-03 14:37:48

+0

我刚刚发现你应该使用$ _COOKIE而不是$ _COOKIES。我更新了这篇文章。 – MikeD 2010-09-03 14:58:50

+0

为什么要做$ id =“e0vgrejdmkjbltrdrtqtnjgzmy1cqurfluuzodeyqjlcoey5rx0”; $ _SESSION ['id'] = $ id; ?请在SESSION数组中尝试不同的键,如uid :-) – BarsMonster 2010-09-03 15:21:53

0

检查两个脚本中的session_id()。很可能会由于某些原因iPhone没有存储会话cookie,因此每次创建第二个页面时都会创建一个新会话,而不会从前一个会话存储id

在iPhone上(或在服务器上,如果无法在电话上执行此操作)使用某种类型的嗅探器来查看相应的Cookie标头是否来回传送。

0

您的问题的答案很简单。

$ _SESSION ['id']是read-only

如果你做​​下一页它将恢复到它的原始值。

要更改会话ID:

session_id('foo'); 

这是势在必行session_start()之前调用session_id('foo');

+0

我只是试图存储一个名为id的变量,它与“会话ID”无关。所以我从你的评论中发现,我可以用一个不同的名字,所以我用: '$ _SESSION ['new_id'] = $ id;' 它仍然没有工作,嗯。 PHPSESSID从一个页面更改为另一个页面。 – MikeD 2010-09-04 05:47:17

2

解决:我使用的绝对URL而不是相对的。我想这会把所有东西都弄乱。

1

由于禁用了cookie,您无法在iPhone上获得会话。

请转到Safari>设置>接受您的iPhone中的Cookie,并将其设置为接受来自访问。

然后,您将能够在PHP中创建会话。