如何在访问者的计算机上存储Drupal 6中的会话/ cookie

Sbh*_*bry 5 drupal drupal-views drupal-6

我已经使用Finder模块和Views模块创建了一个客户端网站的搜索.问题是我的客户希望每次用户选择并搜索特定区域中的商家时,应将其作为会话或cookie存储在访问者的计算机上.这将确保重复访问者看到他之前所做的相同搜索.请查看网站:http://naplesres.designbracket.com/

此外,我还想知道如果基于之前的搜索,我可以以这样的方式配置视图:仅在其本地区域的业务上传递在网站上使用的其余视图中,即在Auto,Beauty等页面上.

任何形式的文件链接帮助,如何去做的指针将深表感谢.

谢谢

Joh*_*ala 10

如果您需要跟踪某些内容并且需要与未登录的用户合作,您要做的就是使用cookie来跟踪它.您无法使用会话为Drupal中的匿名访问者存储内容,因为它与用户对象相关联.

这里有一个描述 - http://www.w3schools.com/PHP/php_cookies.asp - 但是让我进入它.

你开始使用setcookie(name,value,expire) - 我们假设我们想要调用这个值business_search,我们将使用'80204'的测试值,这是一个邮政编码 - 这个效果一样好如果你使用'丹佛,CO'.我们不希望它过期六个月,所以我们想要打电话:

setcookie('business_search', '80204', time() + 3600 * 24 * 180);
Run Code Online (Sandbox Code Playgroud)

那段时间大约有六个月的时间被添加到现在的时间.

之后获取cookie会更容易 - 只需使用$ _COOKIE ['business_search'],它就会返回值.所以,我们可以使用这段代码:

<?php
function saveSerch($search_term) {
  setcookie('business_search', $search_term, time() + 3600 * 24 * 180);
}

function readSearch() {
  return $_COOKIE['business_search'];
}
?>
Run Code Online (Sandbox Code Playgroud)


FGM*_*FGM 3

当然可以,但这不是正常的 Drupal 方式。您通常所做的是将信息存储在会话中(使用sess_write/ sess_read),或者如果用户已登录,则存储在用户帐户信息中。

将信息保存在 cookie 中意味着它可以在客户端被篡改,并且您需要使您的代码更加万无一失,就像任何用户生成的数据一样。

如果将其保留在会话中,则只要会话存在,它就会保留,但此后就会消失。对于匿名用户来说,确实没有更好的办法了。OTOH,对于登录用户来说,存储信息意味着$user->data只要您不删除它们,它们就可用,因为它们将存储在表中users

还要记住,从匿名切换到登录时,drupal会话cookie会重新生成,但保留会话内容,因此您可以将数据放入匿名会话中,并在用户登录时仍然拥有它,然后将它们存储在他的帐户数据中。查看includes/session.inc有关其工作原理的详细信息。