Php magento SESSION 变量在 php 中执行 javascript 代码之前被取消设置
Php magento SESSION variables getting unset before executing javascript code inside php
我正在尝试使用 php 代码中的 jQuery 显示弹出窗口。
将值设置为会话变量 $SESSION['prod_id']="123"
当用户未登录时,我将一些值设置为 session_variable 即当用户登录时我想调用 javascript(在 php 代码中)如果值为为此变量设置然后向用户显示弹出窗口并从会话中取消设置变量。
if(Mage::getSingleton('customer/session')->isLoggedIn()){
if (isset($_SESSION['prod_id'])) {
Mage::helper('company/product')->addDatabase($_SESSION['prod_id']);
$productName = $session->getData('product_session');
if (!empty($productName)){
echo "<script type='text/javascript'>
jQuery(document).ready(function(){
jQuery('.show-toast').removeAttr('style').css('display','block');
});
});
</script>";
$session->unsetData('product_session');
unset($_SESSION['prod_id']);
}
}
}
但问题是,在执行 javascript 代码之前,会话变量得到 unset.But 如果我注释掉未设置的会话行,那么它工作正常。
经过巨大的努力,我注意到 Magento 会话在服务器端,并且在 JavaScript 代码被调用之前被重置。我们需要回调函数之类的东西来重置会话。
我在 JavaScript unsetSessionVar() 中编写了一个函数,它将调用服务器端的 api 并将重置会话 unset($_SESSION ['prod_id']); 并且工作完美
if(Mage::getSingleton('customer/session')->isLoggedIn()){
if (isset($_SESSION['prod_id'])) {
Mage::helper('company/product')->addDatabase($_SESSION['prod_id']);
$productName = $session->getData('product_session');
if (!empty($productName)){
echo "<script type='text/javascript'>
jQuery(document).ready(function(){
jQuery('.show-toast').removeAttr('style').css('display','block');
unsetSessionVar();
});
</script>";
}
}
}
<script type="text/javascript">
function unsetSessionVar(){
jQuery.ajax({
url: 'company.com/api/sessionaction/unsetses/',
}).done(function() {});
}
</script>
我正在尝试使用 php 代码中的 jQuery 显示弹出窗口。
将值设置为会话变量 $SESSION['prod_id']="123"
当用户未登录时,我将一些值设置为 session_variable 即当用户登录时我想调用 javascript(在 php 代码中)如果值为为此变量设置然后向用户显示弹出窗口并从会话中取消设置变量。
if(Mage::getSingleton('customer/session')->isLoggedIn()){
if (isset($_SESSION['prod_id'])) {
Mage::helper('company/product')->addDatabase($_SESSION['prod_id']);
$productName = $session->getData('product_session');
if (!empty($productName)){
echo "<script type='text/javascript'>
jQuery(document).ready(function(){
jQuery('.show-toast').removeAttr('style').css('display','block');
});
});
</script>";
$session->unsetData('product_session');
unset($_SESSION['prod_id']);
}
}
}
但问题是,在执行 javascript 代码之前,会话变量得到 unset.But 如果我注释掉未设置的会话行,那么它工作正常。
经过巨大的努力,我注意到 Magento 会话在服务器端,并且在 JavaScript 代码被调用之前被重置。我们需要回调函数之类的东西来重置会话。 我在 JavaScript unsetSessionVar() 中编写了一个函数,它将调用服务器端的 api 并将重置会话 unset($_SESSION ['prod_id']); 并且工作完美
if(Mage::getSingleton('customer/session')->isLoggedIn()){
if (isset($_SESSION['prod_id'])) {
Mage::helper('company/product')->addDatabase($_SESSION['prod_id']);
$productName = $session->getData('product_session');
if (!empty($productName)){
echo "<script type='text/javascript'>
jQuery(document).ready(function(){
jQuery('.show-toast').removeAttr('style').css('display','block');
unsetSessionVar();
});
</script>";
}
}
}
<script type="text/javascript">
function unsetSessionVar(){
jQuery.ajax({
url: 'company.com/api/sessionaction/unsetses/',
}).done(function() {});
}
</script>