Я создал сайт электронной коммерции, где после размещения заказа я перенаправляю пользователей на страницу успеха с номером заказа. Если номер заказа не существует, тогда id будет передан. Но есть проблема, когда нет номера заказа или идентификатора заказа, а затем слишком успешная страница показывает некоторые предыдущие заказы, размещенные при вставке прямого url. Например: www.mywebsite.com/order/success/5000
, здесь 5000 не существует, поэтому он должен перенаправить меня на страницу ошибок 404.Предотвращать прямой доступ к url в codeigniter
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'];
}
Люди, я не» у вас есть много знаний о codeigniter, но вы должны, вероятно, поставить проверку перед перенаправлением, чтобы убедиться, что идентификатор существует, например: 'if (isset ($ order_num)) {// redirect' – user5173426
Не работает @HawasKaPujaari. stil показывая мне некоторый предыдущий заказ – nishu