CodeIgniter User/Admin-Login
Hallo ich bin ziemlich neu in CodeIgniter und arbeite derzeit an einem Projekt, das ist im Grunde ein admin/user-system.
Derzeit bin ich in der Lage, um ein login-Formular erstellen, und kann erfolgreich Nutzer zu unterzeichnen, nachdem überprüft der Benutzer vorhanden ist.
Ich wollte einfach schon in die richtige Richtung, wie könnte ich dies angehen zu können login eines normalen Benutzers zu einer Mitglieder-Seite und ein admin-Benutzer auf eine admin-Seite.
Dies ist, was ich im moment haben, die ist voll funktionsfähig mit bootstrap als front-end-framework. Aber es jedem Nutzer ermöglicht, aus meinem members-Tabelle, zum login.
Anzeigen:
<?php $attributes = array("class" => "form-horizontal", "id" => "loginform", "name" => "loginform");
echo form_open("login/loginchk", $attributes);?>
<h2>Please Login</h2>
<hr>
<fieldset>
<!--<legend>Login</legend>-->
<div class="form-group">
<div class="row colbox">
<div class="col-lg-4 col-sm-4">
<label for="txt_username" class="control-label">Username</label>
</div>
<div class="col-lg-8 col-sm-8">
<input class="form-control" id="txt_username" name="txt_username" placeholder="Username" type="text" value="<?php echo set_value('txt_username'); ?>" />
<span class="text-danger"><?php echo form_error('txt_username'); ?></span>
</div>
</div>
</div>
<div class="form-group">
<div class="row colbox">
<div class="col-lg-4 col-sm-4">
<label for="txt_password" class="control-label">Password</label>
</div>
<div class="col-lg-8 col-sm-8">
<input class="form-control" id="txt_password" name="txt_password" placeholder="Password" type="password" value="<?php echo set_value('txt_password'); ?>" />
<span class="text-danger"><?php echo form_error('txt_password'); ?></span>
</div>
</div>
</div>
<div class="form-group">
<div class="col-lg-12 col-sm-12 text-center">
<input id="btn_login" name="btn_login" type="submit" class="btn btn-default" value="Login" />
<input id="btn_cancel" name="btn_cancel" type="reset" class="btn btn-default" value="Cancel" />
</div>
Hier ist meine login-controller (login.php):
public function loginchk()
{
//get the posted values
$username = $this->input->post("txt_username");
$password = $this->input->post("txt_password");
//set validations
$this->form_validation->set_rules("txt_username", "Username", "trim|required");
$this->form_validation->set_rules("txt_password", "Password", "trim|required");
if ($this->form_validation->run() == FALSE)
{
$data["title"] ="SmartAgent";
//validation fails
$this->load->view("site_header");
$this->load->view("content_home", $data);
$this->load->view("site_footer");
}
else
{
//validation succeeds
if ($this->input->post('btn_login') == "Login")
{
//check if username and password is correct
$usr_result = $this->login_model->get_user($username, $password);
if ($usr_result > 0) //active user record is present
{
//set the session variables
$sessiondata = array(
'username' => $username,
'loginuser' => TRUE
);
$this->session->set_userdata($sessiondata);
redirect("site/members");
}
else
{
$this->session->set_flashdata('msg', '<div class="alert alert-danger text-center">Invalid username and password!</div>');
redirect('site/home');
}
}
else
{
redirect('site/home');
}
}
Hier ist der code, der innerhalb der Steuerung, die direkt an die Mitglieder-Seite (site.php):
public function members(){
$data["title"] ="Admin Panel";
$this->load->model("notifications");
if ($this->session->userdata('loginuser')){
$this->load->view("site_header");
$this->load->view("site_nav");
$this->load->view('members', $data);
$this->load->view("site_footer");
} else {
redirect('site/restricted');
}
}
Und Schließlich ist hier mein Modell (login_model.php):
function get_user($usr, $pwd)
{
$this->db->where('username', $usr);
$this->db->where('password', md5($pwd));
$query = $this->db->get('members');
//echo $query;
return $query->num_rows();
}
}
Genau zu klären, habe ich zwei Controller, meinen Haupt-controller standardmäßig die site.php und der login-controller genannt login.php. Im Fazit ist mein Ziel umleiten können, wenn ein admin-Benutzer members.php und um in der Lage sein, so leiten Sie einen normalen Benutzer agent.php (noch nicht erstellt wurden).
P. S ich habe bereits eine Spalte in meiner Tabelle in PhpMyAdmin namens "admin" und ich verwenden Sie einfach 'ja' oder 'Nein', um zu ermitteln, ob Sie sind oder nicht.
Hallo, vielen Dank für diesen, schauen Sie, ich bin auf eine Lernkurve und so auf diese Weise kann ich eine Menge lernen 🙂
InformationsquelleAutor Abdush Samad Miah | 2015-02-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Beispiel aus einem meiner Projekte :
In Ihrem Fall, Sie können nicht tun, weil das Modell nicht zurück, die Sie einem Benutzer, sondern einer num Zeile.
Ändern Sie einfach
Durch
Dann sollten Sie in der Lage sein, um zu testen, ob Ihre Benutzer ein admin ist oder nicht.
Wahrscheinlich, weil Sie nicht ändern Sie Ihre test if($usr_result > 0). Versuchen Sie wenn($usr_result)
Genial, hat funktioniert! ......Leider muss ein Schmerz sein, aber wenn du schreibst if($Benutzer)->is_admin == 1) ist "is_admin" eine Spalte in der db, wenn ja, wie ist der code, der weiß das. oder muss ich den code schreiben? Und wenn "is_admin" ist eine Methode, wo ist Sie geschrieben haben. In dem Modell? Controller? Sorry ein nooob :/
Ja is_admin ist einer meiner Spalten der Tabelle in meiner db. Wenn Sie Rückkehr ->Zeile() in Ihrem Modell, codeigniter gibt ein Objekt zurück, in dem jede Spalte in der select wird eine var. Wenn Sie So tun, "select id, name", Zeile() gibt ein Objekt zurück mit $obj->id und $obj->Namen. Hoffe, es ist understable 🙂
Macht auch Sinn, die beste Antwort in die einfachste form, ich danke Ihnen so sehr für Ihre Hilfe, es wird sehr geschätzt!!!
InformationsquelleAutor AdrienXL