Php 如果Codeigniter控制器ID无效,如何重定向

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 {

我希望标题能准确地描述我想问的问题

我的控制器使用url的第三段(intId)来搜索我的数据库,以在其视图页等中加载数据库信息。如果intId对应于我的数据库中的一行,它工作正常。。。但是,如果某个流氓决定输入一个随机的intId,页面会加载错误,因为如果intId不存在,视图文件中的必需变量自然不会设置

在我的控制器中,如何设置and if语句来确定intId是否有效,如果无效,如何设置重定向到错误页等

<?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);
}