CodeIgniter |有时添加购物车商品时用户会话被破坏

时间:2019-02-24 10:42:49

标签: php codeigniter session cart

您好,我正在我的车间工具项目中工作。 现在,当我按下添加到购物车按钮(我的名字叫pinjam)时,我会有时执行一些奇怪的操作,它只是返回到登录页面,因为会话被破坏了。有人发生过这种奇怪的事情吗?还是可以帮我吗? 情况就是这样。 我按下了我可以借用的许多工具之一上的“添加到购物车”按钮,然后将其发布到控制器上的add_to_cart函数中,并使用jquery / ajax重新加载了该页面上的#cart_content div新数据

控制器Siswa

function index(){
    $data['guru'] = $this->model_akun->getnamaguru();
    $data['data']=$this->model_alat->getAll();
    $this->load->view('siswa/dashboard',$data);
}

function add_to_cart(){ 
    if($this->model_alat->validate_add_cart_item() == TRUE){
        // Check if user has javascript enabled
        if($this->input->post('ajax') != '1'){
            redirect('siswa'); // If javascript is not enabled, reload the page with new data
        }else{
            echo 'true'; // If javascript is enabled, return true, so the cart gets updated
        }
    }
}function show_cart(){
    $this->load->view('siswa/cart');
}

Model_Alat

function validate_add_cart_item(){

    $id = $this->input->post('id_alat'); // Assign posted id_alat to $id
    $cty = $this->input->post('quantity'); // Assign posted quantity to $cty
    //$this->db->where('id_alat', $id); // Select where id matches the posted id
    $query = $this->db->query('select * from alat where id_alat="'.$id.'"')->result(); // Select the products where a match is found and limit the query by 1
    //$ss = $this->input->post('ajax');
    //echo $query['id_alat'];
    //echo "<script>alert(".$cty.");
     //       </script>";

    // Check if a row has been found
    if($query > 0){
        foreach ($query as $row){
            $data = array(
                'id'      => $id,
                'qty'     => $cty,
                'price'   => '0',
                'name'    => $row->nama_alat
            );

            $this->cart->insert($data); 

            return TRUE;
        }

    // Nothing found! Return FALSE! 
    }else{
        echo "<script>alert('FALSE no rows :(');</script>";

        return FALSE;
    }
}

JQUERY

<script>
$(document).ready(function() { 
    /*place jQuery actions here*/ 
    var link = "/weteies/index.php/"; // Url to your application (including index.php/)
    $("div.subalat form").submit(function() {
        // Get the product ID and the quantity 
        var id = $(this).find('input[name=id_alat]').val();
        var qty = $(this).find('input[name=quantity]').val();
        $.post(link + "siswa/add_to_cart", { id_alat: id, quantity: qty, ajax: '1' },
            function(data){
                // Interact with returned data
                if(data == 'true'){    
                    $.get(link + "siswa/show_cart", function(cart){ // Get the contents of the url cart/show_cart
                            $("#cart_content").html(cart); // Replace the information in the div #cart_content with the retrieved data
                    });            
                }else{
                    alert("Product does not exist");
                }
        });
    });
});

siswa /购物车(用于查看购物车列表)

##siswa/cart view

                                <div class="table-responsive">
                                <?php   echo form_open('siswa/update_cart'); ?>
                                    <table class="table table-bordered">
                                        <thead >
                                            <tr>
                                                <th>Alat</th>

                                                <th>Jumlah</th>
                                                <!--<th>Total</th>-->
                                                <th>Actions</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                                <?php  $a=0; $b=0;foreach($this->cart->contents() as $items): ?>

                                                <tr>
                                                    <!--<input type="hidden" id="id_peminjam" name="id_peminjam" value="'.$this->session->userdata('ses_id').'"/>-->
                                                    <td><?php   echo form_hidden('rowid['.$a.']', $items['rowid']); 
                                                                echo $items['name']; ?></td>
                                                    <td><?php   echo form_input(array('name' => 'qty['.$a.']', 'value' => $items['qty'], 'maxlength' => '2'), '', 'class="form-control form-control-sm"'); ?></td>
                                                    <!--<td><button type="button" id="'.$items['rowid'].'" class="romove_cart btn btn-danger btn-sm">Cancel</button></td>-->
                                                    <td><?php   echo form_submit('', 'Update', 'class="btn btn-accept btn-sm"');
                                                                $b=$a+1;?>
                                                </tr>
                                            <?php   $a++; endforeach; ?>
                                        </tbody>
                                    </table>
                                <?php   echo form_hidden('jumlah_alat', $b);
                                        echo form_close();?>
                                <?php   echo form_open('siswa/sub_cart'); ?>
                                    <table class="table">
                                        <tr>
                                            <td >
                                                <select name="id_guru" class="form-control form-control-sm">
                                                    <option>Pilih Guru</option>
                                                    <?php foreach($guru as $gurus): echo '<option value='.$gurus->id_akun.'>'. $gurus->nama .'</option>'; endforeach;?>
                                                </select> 
                                            </td>
                                            <td>
                                                <?php  $hitung=0; $b=0; foreach($this->cart->contents() as $items): ?>
                                                <?php echo form_hidden('id_alat'.$hitung.'', $items['id']);
                                                      echo form_hidden('jumlah_pinjam'.$hitung.'', $items['qty']); 
                                                      echo form_hidden('id_siswa', $this->session->userdata('ses_id'));
                                                      $b=$hitung+1;
                                                      $hitung++;
                                                      endforeach; 
                                                      echo form_hidden('jumlah_alat', $b);
                                                      echo anchor('siswa/empty_cart', 'Hapus Semua', 'class="btn btn-danger btn-sm col-sm-5"'); ?>
                                                <?php echo form_submit('', 'Pinjam!', 'class="btn btn-primary btn-sm col-sm-5"');?>            
                                            </td>
                                        </tr>
                                    </table>
                                <?php   echo form_close(); ?>
                            </div>

FORM siswa / dashboard

<!DOCTYPE html>

  <head>  <?php $this->load->view("admin/_partials/head.php") ?> </head>

<body id="page-top">

<!-- Navbar--> <?php $this->load->view("siswa/_partials/navbar.php") ?>

<div id="wrapper">

<!-- Sidebar--> <?php $this->load->view("siswa/_partials/sidebar.php") ?>

    <div id="content-wrapper">
        <div class="container-fluid">
            <div class="row ">
                <div class="col-md-6">
                    <div class="card mb-3">
                        <h4 class="card-header">Alat Tersedia</h4>
                        <br>
                        <div class="row card-body">
                            <?php foreach ($data as $row) : ?>
                                <div class="col-md-6">
                                    <div class="card mb-3">
                                        <div class="card-header text-center"><?php echo $row->nama_alat;?>
                                        </div>
                                        <div class="card-body">
                                            <div class="row">
                                                <div class="col-md-7">
                                                    Tersedia
                                                </div>
                                                <div class="col-md-5">  
                                                    <input value="<?php echo $row->jumlah;?>" class="form-control form-control-sm" readonly>
                                                </div>
                                            </div>
                                            <div class="subalat">
                                                <?php echo form_open(''); ?>
                                                <div class="row">
                                                    <div class="col-md-7">
                                                        Mau Brp?
                                                    </div>
                                                    <div class="col-md-5">  
                                                    <?php   echo form_hidden('id_alat', $row->id_alat);
                                                            echo form_input('quantity', '1', 'maxlength="2" class="form-control form-control-sm"'); ?>
                                                    </div>
                                                </div>                                                
                                                <br>
                                                <?php       echo form_submit('add', 'Pinjam','class="btn btn-success btn-block col-md"'); ?>
                                                <?php       echo form_close(); ?>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            <?php endforeach;?>
                        </div>
                    </div>
                </div>

                <div class="col-md-6">
                    <div class="card mb-3">
                        <h4 class="card-header">List Pinjam</h4>    
                        <!--<div class="card-body">-->
                            <div id="cart_content">
                                <?php $this->load->view('siswa/cart'); ?>
                            </div>
                        <!--</div>-->
                        <div class="card-footer small text-muted">
                            Jika jumlah alat nya 0(nol), alat akan dihapus. Page rendered in <strong>{elapsed_time}</strong> seconds.
                        </div>
                    </div>
                </div>
            </div><!-- /.row -->
        </div><!-- /.content-fluid -->

    <!-- Sticky Footer -->
    <?php $this->load->view("siswa/_partials/footer.php") ?>

    </div>
    <!-- /.content-wrapper -->

</div>
<!-- /#wrapper -->

<?php $this->load->view("siswa/_partials/scrolltop.php") ?>
<!-- Modal-->
<?php $this->load->view("siswa/_partials/modal.php") ?>
<!-- Js-->
<?php $this->load->view("siswa/_partials/js.php") ?>

</body>

<script> $(document).ready(function() { /*place jQuery actions here*/ var link = "/weteies/index.php/"; // Url to your application (including index.php/) $("div.subalat form").submit(function() { // Get the product ID and the quantity var id = $(this).find('input[name=id_alat]').val(); var qty = $(this).find('input[name=quantity]').val(); $.post(link + "siswa/add_to_cart", { id_alat: id, quantity: qty, ajax: '1' }, function(data){ // Interact with returned data if(data == 'true'){
$.get(link + "siswa/show_cart", function(cart){ // Get the contents of the url cart/show_cart $("#cart_content").html(cart); // Replace the information in the div #cart_content with the retrieved data });
}else{ alert("Product does not exist"); } }); }); }); </script> </html>

登录控制器

class Login extends CI_Controller{
function __construct(){
    parent::__construct();
    $this->load->model("model_login");
}

function index(){
    $this->form_validation->set_rules('email', 'Email', 'required|trim|valid_email');
    $this->form_validation->set_rules('password', 'Password', 'required|trim');
    if($this->form_validation->run()==FALSE){
        $session = $this->session->userdata('isLoggedin');
        if($session == FALSE){
            $this->load->view('login');
        }
        else{
            redirect('');
        }
    }
    else{
        $email=$this->input->post('email');
        $password=$this->input->post('password');
        $cek_akun=$this->model_login->auth_akun($email,$password);
        if($cek_akun->num_rows() > 0){
            $user_data=$cek_akun->row_array();
            $this->session->set_userdata('isLoggedin',TRUE);
            $this->session->set_userdata('ses_id',$user_data['id_akun']);
            $this->session->set_userdata('ses_nama',$user_data['nama']);
             if($user_data['level']=='admin'){ //level admin
                $this->session->set_userdata('level','admin');
                redirect('admin');
            }
             else if($user_data['level']=='aspiran'){ //level aspiran
                $this->session->set_userdata('level','aspiran');
                redirect('aspiran');
            }
            else if($user_data['level']=='guru'){ //level guru
                $this->session->set_userdata('level','guru');
                redirect('guru');
            }
            else if($user_data['level']=='siswa'){ //level siswa
                $this->session->set_userdata('level','siswa');
                redirect('siswa');
            }
        }
        else{
            $this->load->view('login');
            echo "<script>alert('Failed Login: Check your username and password!');
            </script>";
        }
    }
}

function logout(){
    $this->session->sess_destroy();
    $url=base_url('');
    redirect($url);}}

0 个答案:

没有答案