如何在我的网站上使用prestashop登录系统与其他网页(店外)?

时间:2014-10-21 10:34:58

标签: php cookies prestashop-1.6

亲爱的朋友们,我已经在现有网站上安装了prestashop。我当前的网站有一个我已经建立的登录系统。

由于为我的系统安装了prestashop,我想把现有的登录名改为prestashop登录。

至于prestashop文档,要在prestashop之外访问prestashop cookie,我创建了一个测试页面来检索cookie数据,如下所示,

include_once('path_to_prestashop/config/config.inc.php');
include_once('path_to_prestashop/config/settings.inc.php');
include_once('path_to_prestashop/classes/Cookie.php');
$cookie = new Cookie('ps');
print_r($cookie);

但这不起作用,浏览器说

它包含重定向循环。

我尝试停用SEO friendly urlcannonical url to no-direct,因为有些帖子建议。

现在,如果我转到测试页面,它会重定向到prestashop索引页面,而不是显示cookie数据。

我该怎么做才能解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:3)

当您将config/config.inc.php PrestaShop重定向包含到商店域名时。

以下代码导致classes/shop/Shop.php中的此行为:

$shop = new Shop($id_shop);
if (!Validate::isLoadedObject($shop) || !$shop->active)
{
  // No shop found ... too bad, let's redirect to default shop
  $default_shop = new Shop(Configuration::get('PS_SHOP_DEFAULT'));

  // Hmm there is something really bad in your Prestashop !
  if (!Validate::isLoadedObject($default_shop))
    throw new PrestaShopException('Shop not found');

  $params = $_GET;
  unset($params['id_shop']);
  $url = $default_shop->domain;
  if (!Configuration::get('PS_REWRITING_SETTINGS'))
    $url .= $default_shop->getBaseURI().'index.php?'.http_build_query($params);
  else
  {
    // Catch url with subdomain "www"
    if (strpos($url, 'www.') === 0 && 'www.'.$_SERVER['HTTP_HOST'] === $url || $_SERVER['HTTP_HOST'] === 'www.'.$url)
      $url .= $_SERVER['REQUEST_URI'];
    else
      $url .= $default_shop->getBaseURI();

    if (count($params))
      $url .= '?'.http_build_query($params);
  }
  $redirect_type = Configuration::get('PS_CANONICAL_REDIRECT') == 2 ? '301' : '302';
  header('HTTP/1.0 '.$redirect_type.' Moved');
  header('location: http://'.$url);
  exit;
}

您可以覆盖Shop类以禁用脚本的重定向。

要执行此操作,请首先定义PS_DISABLE_SHOP_REDIRECT常量,然后再添加config/config.inc.php

define('PS_DISABLE_SHOP_REDIRECT', true);

然后将以下代码粘贴到重写类之前:

if (defined('PS_DISABLE_SHOP_REDIRECT')) {
  $id_shop = Configuration::get('PS_SHOP_DEFAULT');
}