2014-10-06 110 views
3

我一直在我们网站的购买流程部分使用以下代码,放置在使用会话的每个阶段的顶部。可以添加session_start();到我整个网站的顶部?

<?php 
    session_cache_limiter('private_no_expire'); // must go before session start 
    session_start(); 

我想在网站上开始更广泛地使用会话,例如在客户登录区域。

我有一个名为“all.php”的文件,其中包含我的系统上每个页面开始时的所有类/对象和共享包含。我认为从所有单独的电子商务文件中删除上述代码并添加到“all.php”的顶部将是一个好主意,因为它是系统范围的,并且首先加载到页面上。

由于这样做,我的客户登录区域遇到问题。它在用户导航了几个链接后不断向用户返回登录页面。看起来,当你点击一个你已经上过的网址并不喜欢它,只是把你发回到开始。如果您将& 1 = 1添加到您之前参与过的网址中,它会欺骗系统让您访问该网页,因为它有一个新的唯一网址。所以缓存肯定搞乱了。

我没有实际使用的会话在网站的这一部分又那么它不喜欢你真的被注销......它只是送你到该页面你开始的地方,

任何人都可以摆脱任何在这里可能会出错吗?

难道是我使用session_cache_limiter('private_no_expire');

我使用上面的这一行,因为我的购买过程使用POST表单并单击后退按钮给出了关于重新提交数据的丑陋消息。

http://php.net/manual/en/function.session-cache-limiter.php

UPDATE:

评论指出,第一线帮助和问题已停止:

//session_cache_limiter('private_no_expire'); // must go before session start 

这是一个临时的解决办法,因为这意味着后退按钮导致数据重新提交警告。这只是意味着我需要正确地贯彻这一点,但我还是IKE明白为什么该行正在做的是:

http://en.wikipedia.org/wiki/Post/Redirect/Get

+1

是的,它可以从页面顶部开始,直到使用会话 – 2014-10-06 09:05:36

+0

会话本身不会导致重定向。你必须在那里有代码。 – Marek 2014-10-06 09:08:24

+0

我们需要查看更多的代码,但是我不明白'session_start()'可能会导致这个问题。我会建议的是,如果您将项目添加到购物车,则在使用header()处理其操作后将用户重定向回特定产品页面 - 这也会阻止它们刷新(并触发有关重新提交表单数据的消息),他们不会觉得需要按下后退按钮(通常) – iamgory 2014-10-06 09:25:08

回答

0

这是类似的事情,因为我们在PHP中创建一个登录面板。 一旦用户被锁定,您需要使用session_start()启动会话,当用户单击注销时,请使用ssession_unset()停止会话。这将解决您的问题。 试一下,让我知道它是否有效。

保持编码..

+0

在PHP中没有''session_stop()'这样的函数。你需要'session_destroy()' – iamgory 2014-10-06 13:12:49

+0

Hello iamgory ... !!!您也可以使用会话未设置。那次会议停止是我的不好.. – Rushit 2014-10-07 13:57:44

1

绕过这个最快,最彻底的方法是做处理表单数据的时候,而不是显示,做了处理网页上的信息,以做到这一点。

Header('Location: http://www.domain.com/page.php'); 

如果,例如,你将项目添加到购物车,再行或商品页面时,用户要么重定向到购物车页面。

Since doing this, my customer login area has encountered problems. It keeps throwing users back to the login page after they've navigated a few links. It seems when you hit a URL that you've already been on it doesn't like it and just sends you back to the start. If you add &1=1 onto a url that you've been onto before, it tricks the system into letting you visit the page because its a new unique url. So the cache is definitely messing up.

session_cache_limiter('private_no_expire')。你不需要它,因为你在做什么。

相关问题