user2666633
user2666633

Reputation: 340

Dealing with url request in CodeIgniter

I just started learning codeigniter and i must say its pretty easy but I have a problem dealing with wrong urls, for example:

if I have an anchor tag like this http://example.com/info/2 in the controller if I have

public function info( $x ) {
   $data['body'] = "Personal_info";
   $data['details'] = $this->person_model->get_detail( $x );
   $this->load->view('view', $data);
}

the controller grabs the links

segment (3)

and then grab the details of the id from the database. now for instance if a user manually edit the link on the browser and change the

segment(3)

to lets say 7 and there is no id in the database as 4.

how do I handle such a problem? I am a beginner so please pardon me

Upvotes: 0

Views: 90

Answers (2)

brenjt
brenjt

Reputation: 16297

You could use empty method to check if there is data and if not redirect away from the page.

public function info( $x ) 
{
    $details = $this->person_model->get_detail( $x );
    if(empty($details))
        redirect('other/url');

    $data['body'] = "Personal_info";
    $data['details'] = details;
    $this->load->view('view', $data);
}

This way it doesn't throw errors and potentially attempt to display something that doesn't exist.

Upvotes: 2

Sudhir Bastakoti
Sudhir Bastakoti

Reputation: 100195

you can check if the passed id exists in database before trying to fetch related data, like:

$data_exists = $this->person_model->data_exists( $x );
if( $data_exists ) {
    $data['details'] = $this->person_model->get_detail( $x );
    $this->load->view('view', $data);
}
else {
   //load some view for showing no such id exists in db
}

where data_exists() can be a function in model which returns TRUE or FALSE depending on existance of your id in database.

Upvotes: 1

Related Questions