2012-03-01 16 views
0

私はログインページを作り、あなたの提案が必要です。 私のログインシステムは現在動作しており問題はありません。しかし、私はあなたの提案が必要です。 ユーザーが私のシステムにログインすると、システムはユーザーをインデックスページに誘導し、ヘッダーメニューが変更されます。ログインページについてのご提案

コードは私の見解です。システムは、基本的にDB Checkを使用してコントローラからセッションを作成します。私は、これは良くないと思い

<?php 
     if($this->session->userdata('logged_in')) 
     { 
print<<<_A_ 
    <div class="ustMenu_yeni"> 
        <!-- AFTER LOGIN --> 
      <div class="wrap"> 
       <div class="user_welcome_msg"> 
        <strong>Hoşgeldiniz!</strong> 
        <a href="http://www.pasaj.com/ben" class="hesap_adi">fendermrt</a> 
       </div> 
       <div class="ustMenu_sol"></div> 
       <ul class="ustMenu_sag"> 
                     <li><a href="http://www.pasaj.com/firsatlarim" rel="nofollow" class="um_firsat fisritembr offline">Fırsatlar</a></li>   
                     <li> 
         <a href="http://www.pasaj.com/ben" class="um_hesabim kapali">Hesabım</a> 
         <div class="um_hesap_pop" style="display: none;"> 
          <span class="um_hesap_pop_item"><a href="http://www.pasaj.com/urunlerim_satistakiler">Satıştaki Ürünlerim </a></span> 
          <span class="um_hesap_pop_item"><a href="http://www.pasaj.com/sattiklarim">Siparişlerim </a></span> 
          <span class="um_hesap_pop_item"><a href="http://www.pasaj.com/aldiklarim">Alış İşlemlerim </a></span> 
          <span class="um_hesap_pop_item"><a href="http://www.pasaj.com/fendermrt/hediye">Hediye Setlerim </a></span> 
          <span class="um_hesap_pop_item"><a href="http://www.pasaj.com/favorimdeki_urunler">Favorilerim </a></span> 
         </div> 
        </li> 
        <li><a href="http://www.pasaj.com/satis_yeni_urun">Ürün Satın</a></li> 
        <li><a href="http://www.pasaj.com/mesaj_goster?tip=gelenler" class="um_mesaj"><span class="um_mesaj_sayisi yenimsg_yok">0</span>Mesaj Kutum</a></li> 
        <li><a href="http://localhost/pasaj/giris/cikis" class="um_cikis">Çıkış</a></li> 
       </ul> 
      </div> 

       </div> 


_A_; 
} 

     else 
     { 
print<<<_A_ 
    <div class="ustMenu_yeni"> 
        <!-- BEFORE LOGIN --> 
      <div class="wrap"> 
       <div class="ustMenu_sol"></div> 
       <ul class="ustMenu_sag"> 
              <li><a href="javascript:openCouponPopup()" rel="nofollow" class="um_firsat fisritembr offline">Fırsatlar</a></li> 
              <li><a href="http://www.pasaj.com/giris" class="um_giris">Üye Girişi</a></li> 
        <li><a href="/pasaj/kayit/" class="um_kayit">Ücretsiz Kayıt</a></li> 
        <li><a href="javascript:;" onclick="facebookLogin();" class="um_fb_connect">Facebook Connect</a></li> 

       </ul> 
      </div> 
       </div>   


_A_; 
     } 

     ?> 

セッションを呼び出す

$username = $this->input->post('username'); 
     $password = $this->input->post('password'); 

     $userID = $this->girismodel->girisKontrol($username, $password); 


     if (!$userID) { 
      $this->session->set_flashdata('login_error', TRUE); 
      redirect('http://' . site_url() . 'giris/'); 
     } else { 

      $this->session->set_userdata(array(
       'logged_in' => TRUE, 
       'userID' => $userID, 
       'username' => $username)); 

      redirect('http://' . site_url()); 

と私の見解: 私のセッションモデルがこれです。私は眺めをチェックするならばやりたくない。それについてのあなたの提案は何ですか?他のデザイン提案は何ですか?最後に

iはanasayfaという名前のディレクトリを作成し、このディレクトリには、2つのビュー

aLogin持っています - >ログイン 後bLogin - >ログイン

とその

$data = array(); 

     if (!$userID) { 
      $this->session->set_flashdata('login_error', TRUE); 
      redirect('http://' . site_url() . 'giris/'); 
      $data['menu'] = $this->load->view('anasayfa/bLogin', '', true); 
     } else { 

      $this->session->set_userdata(array(
       'logged_in' => TRUE, 
       'userID' => $userID, 
       'username' => $username)); 

      $data['menu'] = $this->load->view('anasayfa/aLogin', '', true); 

      redirect('http://' . site_url()); 
     } 

     $this->load->view('welcome_message', $data); 
のように私のコードを編集します WELCOME_MESSAGE

と使用$メニューが、それはエラーを与える

A PHP Error was encountered 

Severity: Notice 

Message: Undefined variable: menu 

Filename: views/welcome_message.php 

Line Number: 3 
+0

違いがあるかどうかはわかりませんが、何も渡されない場合は、2番目のビューのパラメータが空の配列になります。 $ this-> load-> view( 'login'、array()、TRUE); – Rooneyl

答えて

0

$データは、「メニュー」、[ユーザー 使用のセッションであっログインしている場合は、チェックを行いその後menu_logged_in.phpようなビューフォルダ内の2つのファイルを作るなどmenu_general.php

] = $ this-> load-> view( 'menu_logged_in'、 ''、true);他

$データ[ 'メニュー'] =の$ this - >ロード - >ビュー( 'menu_general'、 ''、TRUE);

を入力し、実際に表示する$ data(または表示するデータを渡すために使用する変数)を渡します。

0

私は、自分のコントローラにコンストラクタ(またはどこでも)を呼び出すカスタムヘルパ関数を追加します。

関数です。

/** 
* Logged in check 
* 
* Checks if user is logged in via SESSION. 
* 
* @return boolean 
*/ 
if (! function_exists('is_logged_in')) { 
    function is_logged_in() { 
     $_ci =& get_instance(); 
     if ($_ci->session->userdata('user_id')) { 
      return TRUE; 
     } else { 
      return FALSE; 
     } 
    } 
} 

ログインしているかどうかをコントローラで確認してください。

public function __construct() { 
    parent::__construct(); 

    // check logged in 
    if (is_logged_in() == FALSE) { 
     $this->session->set_flashdata('message', 'You need to log in.'); 
     redirect('/home'); // or wherever you login function is 
    } 
} 
+0

私はログインに応じて2つのメニューを持っていますが、あなたのシーンには2つのテンプレートを準備する必要があります。S –

+0

あなたはヘルパーであるので、どこにでも関数を置くことができます。 2つのビューを作成してください。そうでない場合は、他のビューにログインした場合にecho'edになります。 – Rooneyl

+0

私の質問を編集します。 –

関連する問題