阻止在codeigniter中

时间:2015-09-06 07:50:28

标签: php codeigniter url restrict

我创建了一个电子商务网站,在下订单后,我将用户重定向到订单号的成功页面。如果订单号不存在,则传递id。但是,当既没有订单号也没有订单ID时存在问题,那么如果直接url被粘贴,则成功页面显示一些先前的订单。例如:www.mywebsite.com/order/success/5000,此处不存在5000,因此它应该将我重定向到404错误页面。

  

MY_controller

 $order_num = $this->order_model->getOrderNum($order_id);

 if(empty($order_num)){
    $order_num = $order_id.'/id';
 }

 $redirect_url = 'order/success/'.$order_num.'/';
?>
<script>
    function redirect_success(url) {
        location.assign(url);
    }
    var success = '<?=$redirect_url?>';
    redirect_success(success);
</script>
  

My_Model

 public function getOrderNum($order_id = ''){
   $returnVal = false;

   $sql = "SELECT order_num FROM order_table";
   $sql .= " WHERE order_id = '{$order_id}'";    

 $query  = $this->db->query($sql);

  if($query->num_rows() > 0){
     $result    = $query->result_array();
     $row       = $result[0];
     $returnVal = $row;
   }

   return $returnVal['order_num'];
 }

1 个答案:

答案 0 :(得分:0)

一种方法是检查订单/成功控制器是否页面引用来自订单/地点页面。

因此,在顺序/成功中,如果未按顺序/地点设置http_referer标头,则重定向到404。

按顺序添加/成功/控制器:

if( !isset($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], "order/place") === -1 ) {
    $this->load->helper('url');
    redirect('/page404');
}