2017-12-20 10 views
0

ユーザがユーザ情報を変更できるように、codeigniterで関数を作成しようとしました。何らかの理由でCodeigniterが動作しないユーザ情報のクエリ

フォームに記入して送信すると、レコードが更新されず、空白のページが表示されます。 (私はPHPエラーを有効にしています) 合計で同じビューページに4つの異なるフォームがあります。これは、更新の私のコントローラ機能である

<div class="main"> 
    <table class="gegevensupdaten"> 
     <form action="<?php echo base_url() . "GwController/update_email"?>" method="post"> 
      <tr> 
       <td><h4>E-mail adres wijzigen</h4></td> 
       <td><?php echo form_input(array('type'=>'email','id'=>'email', 'name'=>'email', 'placeholder' => 'Nieuw e-mail adres:', 'size'=>70));?></td> 
       <td><?php echo form_input(array('type'=>'password','id'=>'wachtwoord', 'name'=>'wachtwoord', 'placeholder' => 'Uw wachtwoord:', 'size'=>70));?></td> 
       <td><?php echo form_input(array('type'=>'hidden','id'=>'user_id', 'name'=>'user_id', 'value' => $_SESSION['user_id'], 'size'=>70));?></td> 
       <td><button type="submit" name="emailwijzigen" class="btn btn-primary">Opslaan</button></td> 
      </tr> 
     </form> 

     <form action="<?php echo base_url() . "GwController/update_adres"; ?>" method="post"> 
      <tr> 
       <td><h4>Adres wijzigen</h4></td> 
       <td><?php echo form_input(array('id'=>'straat', 'name'=>'straat', 'placeholder' => 'Nieuw straatnaam', 'size'=>70));?></td> 
       <td><?php echo form_input(array('id'=>'huisnummer', 'name'=>'huisnummer', 'placeholder' => 'Nieuwe huisnummer', 'size'=>70));?></td> 
       <td><?php echo form_input(array('id'=>'woonplaats', 'name'=>'woonplaats', 'placeholder' => 'Nieuw stad/woonplaats', 'size'=>70));?></td> 
       <td><?php echo form_input(array('id'=>'postcode', 'name'=>'postcode', 'placeholder' => 'Nieuwe postcode', 'size'=>70));?></td> 
       <td><?php echo form_input(array('type'=>'password','id'=>'wachtwoord', 'name'=>'wachtwoord', 'placeholder' => 'Uw wachtwoord:', 'size'=>70));?></td> 
       <td><?php echo form_input(array('type'=>'hidden','id'=>'user_id', 'name'=>'user_id', 'value' => $_SESSION['user_id'], 'size'=>70));?></td> 
       <td><button type="submit" class="btn btn-primary">Opslaan</button></td> 
      </tr> 
     </form> 

     <form action="<?php echo base_url() . "GwController/update_wachtwoord"; ?>" method="post"> 
      <tr> 
       <td><h4>Wachtwoord wijzigen</h4></td> 
       <td><?php echo form_input(array('type'=>'hidden','id'=>'user_id', 'name'=>'user_id', 'value' => $_SESSION['user_id'], 'size'=>70));?></td> 
       <td><?php echo form_input(array('type'=>'password','id'=>'nieuwwachtwoord', 'name'=>'nieuwwachtwoord', 'placeholder' => 'Uw nieuwe wachtwoord: ', 'size'=>70));?></td> 
       <td><?php echo form_input(array('type'=>'password','id'=>'herhaalwachtwoord', 'name'=>'herhaalwachtwoord', 'placeholder' => 'Herhaal uw nieuwe wachtwoord', 'size'=>70));?></td> 
       <td><?php echo form_input(array('type'=>'password','id'=>'wachtwoord', 'name'=>'wachtwoord', 'placeholder' => 'Uw oude wachtwoord:', 'size'=>70));?></td> 
       <td><button type="submit" class="btn btn-primary">Opslaan</button></td> 
      </tr> 
     </form> 

     <form action="<?php echo base_url() . "GwController/update_beschrijving"; ?>" method="post"> 
      <tr> 
       <td> <h4>Beschrijving wijzigen</h4></td> 
       <td> <?php echo form_textarea(array('type'=>'textarea','id'=>'beschrijving', 'name'=>'beschrijving', 'placeholder' => 'Uw nieuwe beschrijving..','cols'=>70));?></td> 
       <td><?php echo form_input(array('type'=>'hidden','id'=>'user_id', 'name'=>'user_id', 'value' => $_SESSION['user_id'], 'size'=>70));?></td> 
       <td><button type="submit" class="btn btn-primary">Opslaan</button></td> 
      </tr> 
     </form> 
    </table> 
</div> 

: これは私が私のビューファイルに持っているものである

<?php 


class GwController extends CI_Controller { 

    // index functie - hierin laad ik de view file 'gegevenswijigen' in het mapje views. 
    public function index() 
    { 
     $this->load->view('gegevenswijzigen'); 
    } 




     function __construct() 
     { 
      parent::__construct(); 
      //Laad het Update_model in models folder 
      $this->load->model('Update_model'); 
     } 




     //Controller functie om email van een gebruiker te veranderen 
     function update_email() 
     { 
      $id= $this->input->post('user_id'); 
      $data = array(
      'email' => $this->input->post('email') 
     ); 



      $wachtwoord = $_POST['wachtwoord']; 

       //check gebruiker in database 
      $this->db->select('*'); 
      $this->db->from('users'); 
      $this->db->where(array('user_id'=>$_SESSION['user_id'], 'wachtwoord' => $wachtwoord)); 
      $query = $this->db->get(); 

      $user = $query->row(); 
      //Als gebruiker bestaat 
      if ($user->user_id) { 
    $this->Update_model->update_email($id, $data); 
    header ('location:https://kadokado-ferran10.c9users.io/user/profile'); 
} 
     } 


      //Controller functie om het adres van een gebruiker te veranderen 
      function update_adres() 
      { 
       $id= $this->input->post('user_id'); 
       $data = array(
       'straat' => $this->input->post('straat'), 
       'huisnummer' => $this->input->post('huisnummer'), 
       'woonplaats' => $this->input->post('woonplaats'), 
       'postcode' => $this->input->post('postcode') 
      ); 


      $wachtwoord = $_POST['wachtwoord']; 

       //check gebruiker in database 
      $this->db->select('*'); 
      $this->db->from('users'); 
      $this->db->where(array('user_id'=>$_SESSION['user_id'], 'wachtwoord' => $wachtwoord)); 
      $query = $this->db->get(); 

      $user = $query->row(); 
      //Als gebruiker bestaat 
      if ($user->user_id) { 
    $this->Update_model->update_email($id, $data); 
    header ('location:https://kadokado-ferran10.c9users.io/user/profile'); 

} 

      } 



      //Controller functie om gebruikerswachtwoord te veranderen 
      function update_wachtwoord() 
      { 
       $id= $this->input->post('user_id'); 
       $nieuwwachtwoord = $this->input->post('nieuwwachtwoord'); 
       $herhaalwachtwoord = $this->input->post('herhaalwachtwoord'); 
       if($nieuwwachtwoord == $herhaalwachtwoord){ 
       $data = array(
       'wachtwoord' => $this->input->post('nieuwwachtwoord'), 

      ); 


       $wachtwoord = $_POST['wachtwoord']; 

       //check gebruiker in database 
       $this->db->select('*'); 
       $this->db->from('users'); 
       $this->db->where(array('user_id'=>$_SESSION['user_id'], 'wachtwoord' => $wachtwoord)); 
       $query = $this->db->get(); 

       $user = $query->row(); 
       //Als gebruiker bestaat 
       if ($user->user_id) { 
       $this->Update_model->update_email($id, $data); 
       header ('location:https://kadokado-ferran10.c9users.io/user/profile'); 

      } 

} 



    //Controller functie voor profiel beschrijving bewerken 
    function update_beschrijving() 
    { 
     $id= $this->input->post('product_id'); 
     $data = array(
     'beschrijving' => $this->input->post('beschrijving'), 
     ); 

     $this->update_model->update_wachtwoord($id,$data); 
     header ('location:https://kadokado-ferran10.c9users.io/user/profile'); 
    } 




    } 
} 

これらはすべて私のモデル関数です:

class Update_model extends CI_Model{ 
    // Model update functie om email te veranderen 
    function update_email($id,$data){ 
     $this->db->where('user_id', $id); 
     $this->db->update('users', $data); 
     $_SESSION['email'] = $data['email']; 
     header ('location:https://kadokado-ferran10.c9users.io/user/profile'); 
    } 

    //Model update gebruiker adres veranderen 
    function update_adres($id,$data){ 
     $this->db->where('user_id', $id); 
     $this->db->update('users', $data); 
     $_SESSION['straat'] = $data['straat']; 
     $_SESSION['huisnummer'] = $data['huisnummer']; 
     $_SESSION['postcode'] = $data['postcode']; 
     $_SESSION['woonplaats'] = $data['woonplaats']; 
     header ('location:https://kadokado-ferran10.c9users.io/user/profile'); 
    } 

    //Model update gebruiker wachtwoord veranderen 
    function update_wachtwoord($id,$data){ 
     $this->db->where('user_id', $id); 
     $this->db->update('users', $data); 
     $_SESSION['wachtwoord'] = $data['wachtwoord']; 
     header ('location:https://kadokado-ferran10.c9users.io/user/profile'); 
    } 

    //Model update gebruiker beschrijving veranderen 
    function update_beschrijving($id,$data){ 
     $this->db->where('user_id', $id); 
     $this->db->update('users', $data); 
     $_SESSION['beschrijving'] = $data['beschrijving']; 
     header ('location:https://kadokado-ferran10.c9users.io/user/profile'); 
    } 
} 

は任意のものをいなぜそれが動作していないか知っていますか? ヘルプの任意の種類は

+2

私はなぜ、あなたは別のフォームの各フィールド、ユーザーの情報をseparetedごとに置く必要がありますか? – Mary

+0

犯罪はありませんが、私は、この時間と時間を、SOの初心者の人たちと再び見ています。初心者は車輪を再創造し、常に安全でないか、少なくとも1つのバグである独自の認証システムを作ります。あなたの周りに見たあなたの他の投稿によって判断すると、いくつかの問題があります。あなたの日から2時間をとり、 'Ion_Auth'で始めて始めましょう。あなたの必要とするすべての機能が含まれています。 – Alex

+0

@mary私は4つの異なるフォームが必要なので、同時にすべてのフィールドの代わりに1つのフィールドを変更することもできます –

答えて

0

は、私はあなたが実際に PHPエラーを有効にするか、あなたが通知を得られるような問題が明らかにされているだろう持っていることは疑問だが認識されます。

例えば、function update_email()とする。

あなたはこれをやっている:

if ($user["user_id"]) { 
    $this->Update_model->update_email($id, $data); 
} 

あなたがrow()例えばを使用しているとして、しかし$userは(あなたがそれらを有効にした場合、この通知を示すだろう)の配列ではありませんあなたが原因の$this->Update_model->update_emailを打つことはありませんので、彼らが更新されていません...「のレコードが更新され取得されていない、それは空白のページを表示」:今

if ($user->user_id) { 
    $this->Update_model->update_email($id, $data); 
} 

$user = $query->row();あなたは、オブジェクトのように、ユーザーにアクセスする必要があります前述のエラー。エラーが予想される場合は、そのエラーをコントローラにリダイレクトする必要があります。 あなたの今のやり方のようにリダイレクトしないでください。そうでなければ空白のページが表示されます。なぜなら、モデルが決してヒットしないと何も起こらないからです。


さらに、私はあなたがなぜあなたはこれを簡単に行うことができたときに、この//check gebruiker in databaseを行うすべての関数で、聞いている:

<?php 

class Curr_user_model extends CI_Model { 

    /** 
    * Gets current user id 
    * @return int|null 
    */ 
    public function id() { 
     return isset($_SESSION['user_id']) ? $_SESSION['user_id'] : NULL; 
    } 

    /** 
    * Checks if user exists for realz 
    * @return boolean TRUE if user with id() exists in db, FALSE otherwise 
    */ 
    public function exists() { 
     $id = $this->id(); 
     if (is_null($id)) { 
      return false; 
     } 
     $this->db->where('user_id', $id); 
     return $this->db->count_all_results('users') == 1; 
    } 

    /** 
    * Gets current user details as object 
    * @return object 
    */ 
    public function details() { 
     $query = $this->db->get_where('users', array('user_id' => $this->id())); 
     return $query->row(); 
    } 

} 

// extend this on any page that should be fully protected, and the 
// curr_user field will be globally accessible to the extended classes! 
class MY_Admin_Controller extends CI_Controller { 

    public $curr_user; 

    public function __construct() { 
     parent::__construct(); 
     $this->load->model('curr_user_model'); 
     if ($this->curr_user->exists()) { 
      $this->curr_user = $this->curr_user_model->details(); 
     } else { 
      // redirect to login, user isn't supposed to be here... yet 
      redirect('somepage/login'); 
     } 
    } 

} 

// user will *never* be able to reach anything in this controller unless he is logged in 
class GwController extends MY_Admin_Controller { 

    public function index() { 
     print_r($this->curr_user); 
     echo 'user id: ' . $this->curr_user->user_id; 
    } 

} 

をするだけMY_Admin_Controllerで任意のコントローラを拡張し、それが常にリダイレクトしますユーザーがログインしていない場合はログインページにアクセスします。ユーザーがページを訪問したり、実行したり、操作したりすることが許可されているかどうかを常に確認する必要はありません。 MY_Admin_Controller.phpcoreフォルダに保存されています。

+0

コメントは議論の対象外です。この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/161828/discussion-on-answer-by-alex-codeigniter-updating-user-information-queries-not-w)。 –

関連する問題