Einfaches Login-System mit CodeIgniter Rückkehr 404 auf login
Ich versuche in meinen Kopf zu kriegen PHP
und mit der CodeIgniter
Rahmen. Ich habe vor kurzem nach diesem tutorial:
http://www.codefactorycr.com/login-with-codeigniter-php.html
Ging ich durch Sie sehr methodisch und war vorsichtig, um sicherzustellen, dass ich machte keine Fehler in den code schreiben. Aber wenn ich mein Projekt in einem browser bekomme ich diese Fehlermeldung, nachdem ich versuchen meine login-Daten ein.
Nicht Gefunden
Die angeforderte URL /LoginTut/login/VerifyLogin wurde nicht auf diesem server.
Ich lief in ein ähnliches problem, nicht zu vor langer Zeit, als ich nach einem anderen tutorial und konnte es nicht herausfinden, so gab das Projekt auf.
Dies ist, wie ich konfigurierte mein CI
routes.php
$route['default_controller'] = "login";
config.php
$config['base_url'] = 'http://localhost/LoginTut/';
Verließ ich diese leere.
$config['index_page'] = '';
Hab ich auch dafür sorgen, dass ich bin laden Sie alle relevanten Bibliotheken und Helfer.
autoload.php
$autoload['libraries'] = array('database', 'session');
$autoload['helper'] = array('url');
Unten sind alle meine PHP-Dateien..
user.php
class User extends CI_Model{
function login($username, $password){
$this -> db -> select('id, username, password');
$this -> db -> from ('users');
$this -> db -> where ('username', $username);
$this -> db -> where ('password', md5($password));
$this -> db -> limit(1);
$query = $this -> db -> get();
if($query -> num_rows() == 1){
retrun $query->result();
}
else{
return false;
}
}
}
login_view.php
<?php echo form_open('VerifyLogin'); ?>
<label for="username">Username:</label>
<input type="text" size="20" id="username" name="username"/>
<br/>
<label for="password">Password:</label>
<input type="password" size="20" id="passowrd" name="password"/>
<br/>
<input type="submit" value="Login"/>
</form>
login.php
class Login extends CI_Controller{
function _construct(){
parent::_construct();
}
function index(){
$this->load->helper(array('form'));
$this->load->view('login_view');
}
}
verify_login.php
class VerifyLogin extends CI_Controller{
function _construct(){
parent::_construct();
$this->load->model('user', '', TRUE);
}
function index(){
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
if($this->form_validation->run() == FALSE){
//Validation failed, user redirected to login page...
$this->load->view('login_view');
}
else{
//Login success. Go to members only area
redirect('home', 'refresh');
}
}
function check_database($password){
//Field validation succeeded. Validate against db
$username = $this->input->post('username');
//query db
$result = $this->user->login($username, $password);
if($result){
$sess_array = array();
foreach($result as $row){
$sess_array = array(
'id' => $row->id,
'username' => $row->username
);
$this->session->set_userdata('logged_in', $sess_array);
}
return TRUE;
}
else{
$this->form_validation->set_message('check_database', 'Invalid username or password');
return false;
}
}
}
Sollte der Benutzer in der Lage sein, um sich erfolgreich anmelden zu können und am Ende an der home.php
- controller die Lasten der home_view.php
Datei.
Dies ist die Post-Aktion des login-Formulars
http://localhost/LoginTut/login/VerifyLogin
Ich würde wirklich zu schätzen jede Hilfe zu diesem Problem, ich habe gekämpft, mit der es nun seit Tagen und Es fängt an mich richtig ärgern. Ich habe das Gefühl, Es ist etwas sehr kleines zu gehen falsch in meinem code. Ich weiß einfach nicht genügend wissen, um es herauszufinden.
ANMERKUNG: ich Las in einem forum, es könnte etwas zu tun mit ein .htaccess-problem, aber ich habe keine Ahnung, was das ist!
.htaccess-Datei
<IfModule mod_rewrite.c>
RewriteEngine On
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ index.php?/$1 [L]
#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^LoginTut.*
RewriteRule ^(.*)$ index.php?/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>
Vielen Dank.
- Haben Sie eine
.htaccess
Datei? Wenn nicht, fügen Sie eine in das Stammverzeichnis Ihres CI-installieren, das sieht dann so aus: stackoverflow.com/questions/14827335/... - Überprüft meine
.htacces
- Datei. Es ist in der root-Ordner und dessen Inhalt sind diesedeny from all
. Ich denke, das ist nicht ideal? Sollte ich paste den code in dem link, den Sie in dieser Datei? - Probieren Sie es aus 🙂
- Keine Freude, leider 🙁
- Hast du es in
http://localhost/LoginTut/
(was Sie sollten) ?deny from all
ist etwas ich würde erwarten, dass innerhalb derapplication
Ordnerhtaccess
. - Nein habe ich nicht. Ich habe es jetzt. Ich enthalten den Inhalt der Datei in meine Frage. Ich bin noch immer Fehler!
- Muss noch mehr sein als der htaccess Problem dann. Habe keine Zeit zu überprüfen, Ihre vollständige code jetzt :\
- Ok, kein problem. Danke für die Hilfe trotzdem!
- Einige echo-Anweisungen in Ihrem VerifyLogin#index-Methode, um zu sehen, wo der code immer vor dem scheitern. Ich würde beginnen mit der überprüfung, ob der code wird innerhalb der "if" oder "else" in Ihrem VerifyLogin#index-Methode.
- Es doesn ' T sogar geben Sie die index () - Methode
- Wenn ich du wäre, würde ich entfernen .htaccess-Datei für Sie jetzt, und setzen 'index.php' zurück in die
$config['index_page']
. Dann werden Sie in der Lage zu sagen ob es ein .htaccess-Problem oder ein Problem mit dem code in Ihrer app. - ich Gesicht gleiche problem ..BITTE ** HILFE **
Du musst angemeldet sein, um einen Kommentar abzugeben.
Antwortete ich Ihren anderen Beitrag auch, aber nur zu wiederholen:
Sie Ihren Namen controller "verify_login.php" aber deine Klasse ist mit dem Namen "VerifyLogin". In Codeigniter muss Ihre Klasse den gleichen Namen wie deine Datei, nur mit Großbuchstaben. Damit diese Seite korrekt funktioniert, sollten Sie entweder benennen Sie die controller-Datei "verifyLogin.php" oder benennen Sie Ihre Klasse "Verify_Login".
Schalten Sie umschreiben, für eine Weile. Zuerst fixieren Sie dieses mit den normalen URLs CodeIgniter:
CodeIgniter-URLs funktionieren so:
Wenn Sie angefordert
.../login/VerifyLogin
dass wird nicht funktionieren, weil beide login und VerifyLogin sind Controller. CodeIgniter wird "denken", dass Sie möchten, rufen Sie die Methode VerifyLogin() in der controller-Klasse login. Stattdessen sollten Sie die call -.../VerifyLogin/index
.Du Links
$config['index_page']
leer. In CodeIgniter Sie können nicht zum aufrufen von Methoden auf dem Controller direkt; Sie haben, lassen Sie CodeIgniter es für Sie tun. Dies bedeutet, CodeIgniter, muss zuerst ausgeführt und dann wird die URL analysiert und delegieren die Anfrage an den richtigen controller und die Methode. Das ist das, was die config - *index_page* ist für Sie zu starten CodeIgniter. Sie haben zu laufen alle Anfragen über diese Datei.Es ist ein index.php enthalten in CodeIgniter (es endet mit der Zeile
require_once BASEPATH.'core/CodeIgniter.php';
). Nutzen Sie diese als index_page.Wenn du das getan hast die vollständige URL wird dies:
verify_login.php
und rief die KlasseVerifyLogin
?