2010-12-27 10 views
2

Eine Sache in der Sicherheit von codeigniter überprüft, ob die uri eine Zahl oder etwas ist, das wir erwarten! Hier ist der Code:Codeigniter Sicherheitsüberprüfung, ob uri Nummer ist, wegen Seitenumbruch

$this->load->helper('form'); 
    $this->load->library('pagination'); 
    $config['permitted_uri_chars'] = '0-9'; 
    $config['base_url'] = '/member/index'; 
    $config['per_page'] = 5; 
    $config['num_links'] = 10; 
    $query_not_voted_rows = "SELECT p_id FROM photos WHERE p_id NOT IN (SELECT distinct p_id FROM p_votes where u_id = ".$this->session->userdata('u_id').")"; 
    $config['total_rows'] = $this->db->query($query_not_voted_rows)->num_rows(); 
    $config['full_tag_open'] = '<div id="pagination">'; 
    $config['full_tag_close'] = '</div>'; 
    $this->pagination->initialize($config); 

    if($this->uri->segment(3) == '') 
    { 
     $segment_url = 0; 
    }else{ 
     $segment_url = $this->uri->segment(3); 
    } 
    $query_not_voted = "SELECT * FROM photos WHERE p_id NOT IN (SELECT distinct p_id FROM p_votes where u_id = ".$this->session->userdata('u_id').") LIMIT ".$segment_url.", ".$config['per_page']; 

Aber wenn jetzt jemand in uri Segment betritt: "kdkdkdd", dann die SQL-Brüche, weil $segment_url ist kdkdkdd und nicht die Zahl!

Die Frage ist also, wie kann man das umgehen?

Antwort

3

Dies ist meine einfache Lösung:

if($this->uri->segment(3) == '') 
     { 
      $segment_url = 0; 
     }else{ 
      if(!is_numeric($this->uri->segment(3))){ 
      redirect('404'); 
      }else{ 
      $segment_url = $this->uri->segment(3); 
      } 
     } 

Aber wenn jemand hat keine bessere Idee oder die Anleitung zu diesem bitte ...

0

nice job =)

Antwort 1 +

<? 
$cadena = "sdfio9874673o4h784"; 

for ($i=0; $i<strlen($cadena); $i++) { 
if (is_numeric($cadena[$i])) {$cadena2.=$cadena[$i];} 
} 

echo $cadena2; 
?> 

= schöner Code

Verwandte Themen