Php 如果Codeigniter控制器ID无效,如何重定向
我希望标题能准确地描述我想问的问题 我的控制器使用url的第三段(intId)来搜索我的数据库,以在其视图页等中加载数据库信息。如果intId对应于我的数据库中的一行,它工作正常。。。但是,如果某个流氓决定输入一个随机的intId,页面会加载错误,因为如果intId不存在,视图文件中的必需变量自然不会设置 在我的控制器中,如何设置and if语句来确定intId是否有效,如果无效,如何设置重定向到错误页等Php 如果Codeigniter控制器ID无效,如何重定向,php,codeigniter,variables,redirect,controller,Php,Codeigniter,Variables,Redirect,Controller,我希望标题能准确地描述我想问的问题 我的控制器使用url的第三段(intId)来搜索我的数据库,以在其视图页等中加载数据库信息。如果intId对应于我的数据库中的一行,它工作正常。。。但是,如果某个流氓决定输入一个随机的intId,页面会加载错误,因为如果intId不存在,视图文件中的必需变量自然不会设置 在我的控制器中,如何设置and if语句来确定intId是否有效,如果无效,如何设置重定向到错误页等 <?php class Brands extends CI_Controller {
<?php
class Brands extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('Products_model');
}
public function products_lookup_by_id($intId)
{
$config = array(
'base_url' => base_url() . '/brands/' . $intId . '/',
'total_rows' => $this->Products_model->total_rows_brands($intId),
'per_page' => 25,
'uri_segment' => 3
);
$this->pagination->initialize($config);
$data = array(
'offset_no' => $this->uri->segment(3),
'total_rows' => $config['total_rows'],
'per_page' => $config['per_page'],
'nav1' => $this->Products_model->nav1(),
'nav2' => $this->Products_model->nav2(),
'nav3' => $this->Products_model->nav3(),
'nav4' => $this->Products_model->nav4(),
'nav5' => $this->Products_model->nav5(),
'nav6' => $this->Products_model->nav6(),
'nav7' => $this->Products_model->nav7()
);
if ($data['total_rows'] > 0)
{
$data['from'] = $data['offset_no'] + 1;
}
else
{
$data['from'] = 0;
}
if (($data['total_rows'] - $data['offset_no']) < $data['per_page'])
{
$data['to'] = ($data['offset_no'] + ($data['total_rows'] - $data['offset_no']));
}
else
{
$data['to'] = $data['offset_no'] + $data['per_page'];
}
$query = $this->Products_model->query_brands($intId);
foreach ($query as $row)
{
$data['title'] = $row['my_brand'];
$data['description'] = $row['description'];
$data['breadcrumb'] = $row['my_brand'];
$data['images'] = 'brands/' . $row['intId'];
}
$data['section_page'] = 'Brands';
$data['section_page_link'] = 'brands';
$data['items1'] = $this->Products_model->items1_brands($data['per_page'], $data['offset_no']);
$this->template->load_header('products/header_view', $data);
$this->template->load_mainview('products/mainview_view', $data);
$this->template->load_grid('products/grid_view', $data);
$this->template->load_footer('footer_view', $data);
}
}
验证行总数
值,在$config
初始化后添加以下代码
if (empty($config['total_rows'])) {
// redirect
}
您可以修改$this->Products\u model->total\u rows\u brands($intId)功能:
function total_rows_brands($intId)
{
if (! is_numeric($intId)) {
return FALSE;
}
$query = $this->db->get_where('your_table', array('id' => $intId));
if (! $query) {
return FALSE;
}
....
}
然后在控制器中:
public function products_lookup_by_id($intId)
{
$data = $this->Products_model->total_rows_brands($intId);
if (! $data) {
redirect('your_500_error_controller');
}
加载->模型(“产品\模型”);
}
公共功能产品按id查找($intId)
{
$config=array(
'base_url'=>base_url()./brands/'.$intId./',
“总行数”=>this->Products\u model->total\u rows\u brands($intId),
“每页”=>25,
“uri_段”=>3
))
############# This code for $intId record check ####
$productRecord = $this->Products_model->total_rows_brands($intId);
如果(!count($productRecord)>0){
$heading=“404未找到页面”;
$message=“找不到您请求的页面。”;
//显示错误($heading,$message);
显示错误($message,500,$heading);
}
#############产品记录结束检查代码###
$this->pagination->initialize($config);
$data=数组(
“偏移量编号”=>this->uri->segment(3),
“总计行数”=>$config[“总计行数”],
“每页”=>$config[“每页”],
'nav1'=>this->Products\u model->nav1(),
“nav2”=>$this->Products\u model->nav2(),
“nav3”=>$this->Products\u model->nav3(),
'nav4'=>this->Products\u model->nav4(),
“nav5”=>$this->Products\u model->nav5(),
“nav6”=>$this->Products\u model->nav6(),
“nav7”=>$this->Products\u model->nav7()
);
如果($data['total_rows']>0)
{
$data['from']=$data['offset_no']+1;
}
其他的
{
$data['from']=0;
}
如果($data['total_rows']-$data['offset_no'])<$data['per_page'])
{
$data['to']=($data['offset_no']+($data['total_rows']-$data['offset_no']);
}
其他的
{
$data['to']=$data['offset_no']+$data['per_page'];
}
$query=$this->Products\u model->query\u brands($intId);
foreach($queryas$row)
{
$data['title']=$row['my_brand'];
$data['description']=$row['description'];
$data['breadcrumb']=$row['my_brand'];
$data['images']='brands/'.$row['intId'];
}
$data['section_page']='Brands';
$data['section_page_link']='brands';
$data['items1']=$this->Products\u model->items1\u brands($data['per\u page'],$data['offset\u no']);
$this->template->load_header('products/header_view',$data);
$this->template->load_mainview('products/mainview_view',$data);
$this->template->load_grid('products/grid_view',$data);
$this->template->load_footer('footer_view',$data);
}
}
############# This code for $intId record check ####
$productRecord = $this->Products_model->total_rows_brands($intId);
$this->pagination->initialize($config);
$data = array(
'offset_no' => $this->uri->segment(3),
'total_rows' => $config['total_rows'],
'per_page' => $config['per_page'],
'nav1' => $this->Products_model->nav1(),
'nav2' => $this->Products_model->nav2(),
'nav3' => $this->Products_model->nav3(),
'nav4' => $this->Products_model->nav4(),
'nav5' => $this->Products_model->nav5(),
'nav6' => $this->Products_model->nav6(),
'nav7' => $this->Products_model->nav7()
);
if ($data['total_rows'] > 0)
{
$data['from'] = $data['offset_no'] + 1;
}
else
{
$data['from'] = 0;
}
if (($data['total_rows'] - $data['offset_no']) < $data['per_page'])
{
$data['to'] = ($data['offset_no'] + ($data['total_rows'] - $data['offset_no']));
}
else
{
$data['to'] = $data['offset_no'] + $data['per_page'];
}
$query = $this->Products_model->query_brands($intId);
foreach ($query as $row)
{
$data['title'] = $row['my_brand'];
$data['description'] = $row['description'];
$data['breadcrumb'] = $row['my_brand'];
$data['images'] = 'brands/' . $row['intId'];
}
$data['section_page'] = 'Brands';
$data['section_page_link'] = 'brands';
$data['items1'] = $this->Products_model->items1_brands($data['per_page'], $data['offset_no']);
$this->template->load_header('products/header_view', $data);
$this->template->load_mainview('products/mainview_view', $data);
$this->template->load_grid('products/grid_view', $data);
$this->template->load_footer('footer_view', $data);
}