簡體   English   中英

防止在Codeigniter中直接訪問URL

[英]Prevent direct url access in codeigniter

我已經建立了一個電子商務網站,在下訂單后,我將用戶重定向到帶有訂單號的成功頁面。 如果訂單號不存在,則將傳遞ID。 但是,如果粘貼直接URL時,既沒有訂單號也沒有訂單ID,那么成功頁面也會顯示一些先前的訂單,這是一個問題。 例如: 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>

我的模型

 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'];
 }

一種方法是檢查訂單/成功控制器中的頁面引用者是否來自訂單/地點頁面。

因此,為了順序/成功,如果未設置http_referer標頭,或者未從順序/位置設置http_referer標頭,請重定向至404。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM