gpt4 book ai didi

session - 如何在 Magento 之外创建 Magento session ?

转载 作者:行者123 更新时间:2023-12-02 10:35:28 24 4
gpt4 key购买 nike

我可以使用下面的流行方法完美地访问 Magento 之外的现有 session 。

require 'app/Mage.php';
$mageRunCode = isset ( $_SERVER ['MAGE_RUN_CODE'] ) ? $_SERVER ['MAGE_RUN_CODE'] : '';
$mageRunType = isset ( $_SERVER ['MAGE_RUN_TYPE'] ) ? $_SERVER ['MAGE_RUN_TYPE'] : 'store';
$app = Mage::app ( $mageRunCode, $mageRunType );
Mage::getSingleton ( 'core/session', array ('name' => 'frontend' ) );

这很好用,但我实际上如何在 Magento 之外创建一个 Magento session 来填充 log_url、log_visitor 等表以及将访问者数据分配给 session ?

目前,用户直接从另一个网站到达我网站上的页面。此特定页面位于 Magento 外部,但我需要使用以下代码访问其访客 ID:

Mage::getSingleton ( 'log/visitor' )->getId()

如果用户之前访问过我的 Magento 商店,则此方法可以正常工作,但如果没有访问过,则它仅返回 bool 值 false。我想要做的是检查是否为访客 ID 设置了值,如果没有,请在 Magento 外部的第一页上创建访客,以便我可以在此页面上使用访客 ID。同样重要的是,一旦用户进入我的 Magento 商店,相同的访客 ID 将应用于我的目录的整个导航,即相同的 session 。有什么想法吗?

最佳答案

嗯,我已经明白了。尽管我必须承认这不是最干净的解决方案,但它的工作原理完全符合我的希望。对于其他想要这样做的人,我已将代码摘录粘贴在下面:

require 'app/Mage.php';
$mageRunCode = isset ( $_SERVER ['MAGE_RUN_CODE'] ) ? $_SERVER ['MAGE_RUN_CODE'] : '';
$mageRunType = isset ( $_SERVER ['MAGE_RUN_TYPE'] ) ? $_SERVER ['MAGE_RUN_TYPE'] : 'store';
$app = Mage::app ( $mageRunCode, $mageRunType );
$core_session = Mage::getSingleton ( 'core/session', array ('name' => 'frontend' ) );
$write = Mage::getSingleton ( 'core/resource' )->getConnection ( 'core_write' );

$url = Mage::getUrl ( '*/*/*', array ('_current' => true ) );

Mage::getSingleton ( 'core/session' )->setLastUrl ( $url );

$visitor_id = $_SESSION ['core'] ['visitor_data'] ['visitor_id'];

if (! empty ( $visitor_id )) {
Mage::getSingleton ( 'log/visitor' )->setId ( $visitor_id );
} else {
Mage::getSingleton ( 'customer/session' )->setWishlistItemCount ( 0 );
Mage::getSingleton ( 'catalog/session' )->setCatalogCompareItemsCount ( 0 );

$write->query ( "INSERT INTO log_url_info (url, referer) VALUES (?, ?)", array ($url, Mage::helper ( 'core/http' )->getHttpReferer ( true ) ) );
$url_id = $write->lastInsertId ();
$log_visitor = Mage::getSingleton ( 'log/visitor' )->initServerData ()->setFirstVisitAt ( now () )->setIsNewVisitor ( true )->setLastVisitAt ( now () )->setLastUrlId ( $url_id )->save ();
$write->query ( "INSERT INTO log_url (url_id, visitor_id, visit_time) VALUES (?, ?, ?)", array ($url_id, $log_visitor->getId (), now () ) );
$core_session->setVisitorData ( $log_visitor->getData () );

$visitor_id = $log_visitor->getId ();
}

我希望这对其他人有帮助,这样他们就不会像我一样抓狂。

关于session - 如何在 Magento 之外创建 Magento session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9048180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com