在codeigniter中单击按钮后如何删除一些会话数组段

Posted

技术标签:

【中文标题】在codeigniter中单击按钮后如何删除一些会话数组段【英文标题】:How to remove some session array segment after click button in codeigniter 【发布时间】:2017-02-23 16:48:50 【问题描述】:

我该怎么做。请帮帮我。

这是我的控制器功能

public function payment_plan() 

    $result = new stdClass();
    $result->status = FALSE;
    $post_data = $this->input->post();
    if ($post_data) 
        $payment_plan = $post_data['payment_plan'];
        $value = $post_data['value'];

        $deleted_plan = $this->input->post('key');

        $payment_plans = $payment_plan."/".$value.",";            

        $payment_session = $this->session->userdata('payment_plans');
        if($payment_session == NULL)
            $array_one = array();
            array_push($array_one, $payment_plans);
            $this->session->set_userdata('payment_plans', $array_one);
          else 
           $session_two=  $this->session->userdata('payment_plans');
           array_push($session_two, $payment_plans);               
           $this->session->set_userdata('payment_plans', $session_two);
        

        $final_session = $this->session->userdata('payment_plans');

        $this->data['payment_plans'] = $final_session;
        //var_dump($final_session);
        $result->status = TRUE;
        $this->load->view('cms/payment_plan', $this->data);
    

如果我点击查看页面$deleted_plan中的删除按钮,通过jQuery填充。

这是我的 jQuery 代码

$(".key").click(function () 

    var key = $(this).attr('id');        

    jQuery.ajax(
        type: "POST",
        url: "<?php echo base_url(); ?>" + "property" + "/" + "payment_plan",
        dataType: 'html',
        data: key: key,payment_plan: payment_plan, value: value,
        success: function (data) 
            if (data) 
                // $("#payment_plans").html(data);
            
        
    );
);

我的问题是单击删除按钮后如何删除会话数组中的数组段。

【问题讨论】:

你可以在函数 $this->session->unset_userdata('session_name'); 中使用点击事件; 如果我使用 $this->session->unset_userdata('session_name');所有数组元素未设置 你能在这里写下你的示例会话数组和想要的会话结果吗? 首先将会话存储在变量中,然后尝试拼接数组以删除发布的密钥,然后用所需的拼接数组覆盖会话。 根据您的代码,您真正要做的是将被删除的计划添加到会话变量中。每次使用 array_push() 推送 $payment_plans 时,您都在会话中添加已删除的计划。这是假设在 POST 中发送的“key”、“payment_plan”和“value”用于已删除的计划。条件$payment_session == NULL 表示会话中没有设置付款计划。如果是这种情况,那么将没有任何可删除的内容。所以我认为这个条件永远不会得到满足。 $deleted_plan 变量未设置。原因? 【参考方案1】:

试试这个,希望对你有帮助

if($deleted_plan)

    foreach($final_session as $k => $session)
    
         if(isset($session[$deleted_plan]))
         
            unset($final_session[$k][$deleted_plan]);
         
    
    $final_session = array_values($final_session);
    $this->session->set_userdata('payment_plans', $final_session);

【讨论】:

【参考方案2】:

你可以参考下面的例子:

take an array and set in session点赞

$array_one = array(0=>'plan1',1=>'plan2',2=>'plan3');
$this->session->set_userdata('payment_plans', $array_one);

现在要取消设置特定元素,首先get session into a variable like here $arra

$arra = $this->session->userdata('payment_plans');

Unset specific array element 你想取消设置就像你想remove 'plan1'

unset($arra[0]); //0 is key of plan1

Set result array into session再次

$this->session->set_userdata('payment_plans', $arra);
$arra = $this->session->userdata('payment_plans');                
print_r($arra);

您可以使用直接取消设置会话元素

$array_one = array(0=>'plan1',1=>'plan2',2=>'plan3');
$this->session->set_userdata('payment_plans', $array_one); //set session
unset($_SESSION['payment_plans'][0]); //unset specific element. 0 is key of session array
$arra = $this->session->userdata('payment_plans');  // get session array              
print_r($arra); // display session array

【讨论】:

以上是关于在codeigniter中单击按钮后如何删除一些会话数组段的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter Log Out 在单击后退按钮或键入快捷链接时注销后仍然可以访问该页面

注销后的 CodeIgniter 后退按钮

如何在codeigniter中删除浏览器历史记录?

单击后如何在 React Native 中禁用按钮

使用ajax在codeigniter中上传图片

单击按钮后事件不会触发