我创建一个登录页面,需要你的建议。 我的登录系统现在正在运行,没有问题。但是,我需要你的建议。 当用户登录我的系统时,系统会将用户引导至索引页面并更改标题菜单。
代码在我看来。系统基本上是通过DB Check从控制器创建会话。 我的会话模型是:
$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());
和我称之为会话
的观点 <?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_;
}
?>
我认为这不好。如果在视图中检查,我不想这样做。您对此有何看法或观点?其他设计建议可能是什么?
最后 我创建了一个名为anasayfa的目录,这个目录有两个视图,
aLogin - &gt;登录后 bLogin - &gt;登录前
并编辑我的代码
$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上使用$ menu
但是它给出了错误
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: menu
Filename: views/welcome_message.php
Line Number: 3
答案 0 :(得分:0)
在视图文件夹中创建两个文件,如menu_logged_in.php和menu_general.php
然后检查是否有登录的用户会话 使用
$ data ['menu'] = $ this-&gt; load-&gt; view('menu_logged_in','',true);
否则
$ data ['menu'] = $ this-&gt; load-&gt; view('menu_general','',true);
并将$ data(或用于传递数据的变量)传递给您渲染的实际视图。
答案 1 :(得分: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
}
}