codeigniter错误循环与页面重定向

时间:2016-01-04 12:12:04

标签: php codeigniter redirect

你好我已经使用一个概念创建了一个更新查询,如果id有效,那么它应该更新数据,否则它不会这样做但是当任何条件遇到它时重定向并说页面重定向到循环为什么是这发生了吗?

控制器

public function confirm() {
    if($this->session->userdata('is_logged_in') == true) {
        $invc = "#".$this->input->get('id');

        if($invc == true) {
            $this->data_update->update_trans($invc);
        } else {
            redirect('home/confirm');
        }
    } else {
        redirect('user/login');
    }
}

这是我的模型文件

public function update_trans($invc_id) {
        $get_trans  = $this->db->get_where('transaction', array("invc_id" =>  $invc_id));
        $user_id    = $get_trans->row()->userid;
        $amount     = $get_trans->row()->ammount;

        if(!empty($user_id)) {
            $check     = $this->db->get_where('account', array("user_id" =>  $user_id));
            if($check->row()->balance == true) {
                $new_amount = ($amount + $check->row()->balance);
                $dataupdate = array(
                    'user_id' => $user_id,
                    'balance' => $new_amount
                );

                $this->db->where('id', $user_id);
                $this->db->update('account', $dataupdate);

                $this->db->where('invc_id', $invc_id);
                $this->db->update('transaction', array('status' => 'Confirmed'));
                redirect('home/confirm?id='.$invc_id);
            } else {

                $data1 = array(
                    'user_id' => $user_id,
                    'balance' => $amount
                );

                $this->db->insert('account', $data1);
                $this->db->where('invc_id', $invc_id);
                $this->db->update('transaction', array('status' => 'Confirmed'));

                redirect('home/confirm?id='.$invc_id);
            }
        } else {
            redirect('home/confirm');
        }
    }

这是我的观点文件

<?php
require('sidebar.php');
    ?>
        <!-- Body Content -->
        <div id="body">
        <?php 
            if($this->input->get('id') == true) {
        ?>
            <div class="msg">
                <h4>Your Payment Has been confirmed successfully</h4>
            </div>
        <?php } else { ?>
            <div class="msg">
                <h4>Payment Not confirmed</h4>
            </div>
        <?php } ?>
        </div>

        <div id="break">&nbsp;</div>

    </div>

我不知道为什么,但它给了我同样的错误这个网页有一个重定向循环可以任何人帮我解决这个问题

2 个答案:

答案 0 :(得分:1)

在你的函数中,它每次都在其他部分(重定向(&#39; home / confirm&#39;);)因此显示错误。你的功能应该是这样的..

public function confirm() {
    if($this->session->userdata('is_logged_in') == true) {
        $invc = "#".$this->input->get('id');
        if($this->input->get('id')) {
            $this->data_update->update_trans($invc);
        } else {
            redirect('home/confirm');
        }
    } else {
        redirect('user/login');
    }
}

希望这能解决您的问题。

答案 1 :(得分:1)

尝试使用confirm()函数:

public function confirm() 
{
    if($this->session->userdata('is_logged_in') == true) {

        $id = intval($this->input->get('id'));
        $invc = "#".$id;

        if($id > 0) {
            $this->data_update->update_trans($invc);
        } else {
            redirect('home/confirm');
        }
    } else {
        redirect('user/login');
    }
}

您期望此"#".$this->input->get('id')会返回true或false。

如果仍然面临同样的问题,请查看更多内容,而不是检查$_GET中的内容:

if($this->session->userdata('is_logged_in') == true) {
    print_r($_GET); // will return you an array
}