Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法在firefox和safari浏览器中设置会话变量_Php_Wordpress_Woocommerce_Session Variables - Fatal编程技术网

Php 无法在firefox和safari浏览器中设置会话变量

Php 无法在firefox和safari浏览器中设置会话变量,php,wordpress,woocommerce,session-variables,Php,Wordpress,Woocommerce,Session Variables,我正在使用Ajax设置会话变量,它在chrome中运行良好,但在safari和Firefox浏览器中不起作用 这是我的Ajax方法: add_action('wp_ajax_wdm_add_user_custom_data_options', 'wdm_add_user_custom_data_options_callback'); add_action('wp_ajax_nopriv_wdm_add_user_custom_data_options', 'wdm_add_user_custom

我正在使用Ajax设置会话变量,它在chrome中运行良好,但在safari和Firefox浏览器中不起作用

这是我的Ajax方法:

add_action('wp_ajax_wdm_add_user_custom_data_options', 'wdm_add_user_custom_data_options_callback');
add_action('wp_ajax_nopriv_wdm_add_user_custom_data_options', 'wdm_add_user_custom_data_options_callback');
function wdm_add_user_custom_data_options_callback()
{
    //Custom data - Sent Via AJAX post method
    $product_id = $_POST['custom_data_4']; 
    $custom_data_1 = $_POST['custom_data_1']; 
    $custom_data_2 = $_POST['custom_data_2'];
    $custom_data_3 = $_POST['custom_data_3'];


    $_SESSION['product_idd'] = $product_id;
    $_SESSION['custom_data_1'] = $custom_data_1;
    $_SESSION['product_pos'] = $custom_data_2;
    $_SESSION['product_lmm'] = $custom_data_3;
       die();
}
当我试图打印上述Ajax方法中的$\u SESSION和$\u POST值时,所有浏览器都可以正常工作,但当我试图在下面的函数中分配上述SESSION变量时:-

function kia_add_cart_item_data( $cart_item, $product_id ){

   if(isset($_SESSION['product_pos']) && $_SESSION['product_idd']==$cart_item['product_id']){
            $posnumber=$_SESSION['product_pos'];
        }else{
            $posnumber=1;
        }
        if(isset($_SESSION['product_lmm']) && $_SESSION['product_idd']==$cart_item['product_id']){
            $lmmnumber=$_SESSION['product_lmm'];
        }else{
            $lmmnumber=1;
        }

        $array['product_id'] = $product_id;


        $cart_item['product_pos'] = $posnumber;
        $cart_item['product_lmm'] = $lmmnumber;
    return $cart_item;

}
在Firefox和safari浏览器在chrome中运行良好的情况下,我得到了其他部分的价值


请帮助我为什么我不能在Firefox和safari中获得会话值。

根据我的说法,你需要在这里使用wordpress会话

$wp_session = WP_Session::get_instance();
例如:

$wp_session = WP_Session::get_instance();
$wp_session ['product_idd'] = $product_id;
上面是在会话中存储值,下面是如何获取值

$wp_session = WP_Session::get_instance();
echo $wp_session ['product_idd'];

尝试使用这种方法,让我知道它是否对您有效

实际上,我忘记了在jQuery.ajax中传递async:false。现在它可以正常工作了

Async:false在ajax中做什么


async:false将保留rest代码的执行。一旦得到ajax的响应,只有到那时,代码的其余部分才会执行“

会话的开始在哪里。我在function.php函数form_startSession(){if(!session_id()){session_start();}的顶部定义了它添加动作('init','form_startSession',1);在函数内部尝试并打印$_SESSION,我必须在这里定义?add SESSION_start();在这两个函数中,当我通过phpinfo()检查时,我发现session.save_path在服务器上没有值。这有问题吗?你可以这样做:ini_set('session.save_path','/path/to/your/folder')我必须在php.ini文件中定义它吗?如果你有ini文件的访问权限,你需要在那里访问它,如果没有,你可以在index.php或config.phpDid中执行此代码,你可以在php.ini文件中更改它?它可以挂起你的浏览器。