2016-11-09 5 views
0

私はCodeIgniterに1つのコントローラを持っています。私は誰もコントローラにアクセスすることを許可したくなかった。このコントローラにはフォーム提出のためだけにアクセスできます。どうしたらいいですか?以下にコントローラコードが与えられています。フォームへのコントローラのアクセスのみを許可するにはどうしたらいいですか?

public function editad($uniqueid = ''){ 
     $this->load->model('Ads'); 
     $this->load->model('Postingad'); 
     $data = 
     if($uniqueid == ''){ 
      show_404(); 
     } 
     $checkbox = $this->Ads->products($uniqueid); 
     $product = json_decode($this->input->post('products')); 
     $checked = $this->input->post('product_category'); 
     for($i = 0; $i < count($checkbox); $i++){ 
      $checkboxes[] = $checkbox[$i]['Product']; 
     } 
     for($i = 0; $i < count($checkbox); $i++){ 
      if(!in_array($checkbox[$i]['Product'], $product)){ 
       if($checkbox[$i]['Image'] != 'http://wallpapercraze.com/images/wallpapers/nowallpaper-585747.jpeg'){ 
        unlink('./uploads/'.$checkbox[$i]['Image']); 
       } 
       $this->Ads->deletecheckbox($uniqueid,$checkbox[$i]['Product']); 
      } 
     } 
     $files = array(
      'electronics'=>'efile', 
      'kitchen'=>'kfile', 
      'decoratives/Interior'=>'dfile', 
      'Home Decor'=>'hdfile', 
      'Furnitures'=>'ffile', 
      'Toys'=>'tfile', 
      'Vehicles'=>'vfile', 
      'Other'=>'ofile' 
     ); 
     $config['upload_path']   = './uploads/'.$uniqueid; 
     $config['allowed_types']  = 'gif|jpg|png'; 
     $this->load->library("upload", $config); 
     for($i = 0; $i < count($checked); $i++){ 
       $filenamefield = $files[$checked[$i]]; 
       if($_FILES[$filenamefield]['size'] > 0){ 
        if($this->upload->do_upload($filenamefield)){ 
         $upload_data = $this->upload->data(); 
         $filename = $upload_data['file_name']; 
         $checkboxinfo = array(
          'UniqueID'=>$uniqueid, 
          'Product'=>$checked[$i], 
          'Image'=>$uniqueid.'/'.$filename 
         ); 
         $this->Postingad->checkbox($checkboxinfo); 
        } 
       } 
       else{ 
        $checkboxinfo = array(
         'UniqueID'=>$uniqueid, 
         'Product'=>$checked[$i], 
         'Image'=>'http://wallpapercraze.com/images/wallpapers/nowallpaper-585747.jpeg' 
        ); 
        $this->Postingad->checkbox($checkboxinfo); 
       } 
     } 
     echo '<pre>'; 
     print_r($upload_data); 
     echo '</pre>'; 
    } 
+0

使用CSFRトークンも及び方法のbegginningでそれを確認する必要があります。有効でない場合は、他のページにリダイレクトします。 – Tpojka

答えて

0

_で関数名を開始してください。

一部の機能が公開アクセスから隠されることがあります。関数を非公開にするには、名前の接頭辞としてアンダースコアを追加するだけで、URL要求を介して提供されることはありません。

このsimilair質問にこのについて詳しく読む:CodeIgniter - Private functions

public function editad($uniqueid = ''){フォームでpublic function _editad($uniqueid = ''){

+0

私に例を説明できますか?あなたの答えに感謝します。 –

+0

私の答えが変更され、例が追加されました – AgeDeO

+1

PHP(CIを含む)標準に関して、メソッドの可視性を変更する方が良い考えです。名前の先頭にアンダースコアを付けることができますが、可視性を 'private'または' protected'に変更し、そのメソッドは[child's]クラスの外部からは許可されません。 – Tpojka

関連する問題