kostenloser Webspace werbefrei: lima-city


Loginsystem mit CakePHP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    seth93

    seth93 hat kostenlosen Webspace.

    Hallo,

    ich ntuze seit kuirzem das Framework CakePHP.
    Kennt sich jemand damit aus?
    Ich versuche grad ein Loginsystem da zu realisieren und habe folgendes Tutorial gefunden:
    http://www.endyourif.com/login-system-with-cakephp-in-under-10-minutes/#codesyntax_1

    Allerdings kommt eine Fehlermeldung, wenn ich folgendes in die app_controller.php einfügen:
    var $components = array('Auth');
     function beforeFilter() {
      $this->Auth->userModel = 'User';
      $this->Auth->fields = array('username' => 'email', 'password' => 'password');
      $this->Auth->loginAction = array('admin' => false, 'controller' => 'users', 'action' => 'login');
      $this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'index');
     }


    Hab eben alles auskommentiert bis auf:
    var $components = array('Auth');


    und das scheint auch der Fehler zu sein.
    Diese Zeile erzwingt iwie einen Header und dann kommt die Meldung, dass der Header bereits gesendet wurde.


    Und dann versteh ich den Filter nicht:
    function beforeFilter() {
      $this->Auth->allow('add');
      parent::beforeFilter();
     }


    Den soll man anscheinend nutzen, ob Seiten für User zu sperren.
    Allerdings kommt bei mir folgende Meldung:
    Fatal error: Call to a member function allow() on a non-object in /var/www/httpdocs//app/controllers/users_controller.php on line 7

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. flashmob-riedlingen

    flashmob-riedlingen hat kostenlosen Webspace.

    Also prinzipiell finde ich in deinem Code keinen Fehler.
    Steht die Zeile
    var $components = array('Auth');
    direkt unter "class AppController extends Controller {"?
    Könntest du mal die komplette Fehlermeldung posten?

    Fatal error: Call to a member function allow() on a non-object in /var/www/httpdocs//app/controllers/users_controller.php on line 7

    Diese Meldung sagt lediglich aus, dass die Auth-Komponente nicht initialisiert wurde. Also wenn dein erstes Problem gelöst ist verschwindet diese Meldeung auch ;)

    Den soll man anscheinend nutzen, ob Seiten für User zu sperren.

    Stimmt nicht ganz, "allow()" wird benutz um (wie der Name schon sagt) den Zugriff zu erlauben. Die Auth-Komponente blockt von Haus aus den Zugriff auf alle Seiten.

    Grüße
    Stefan
  4. Autor dieses Themas

    seth93

    seth93 hat kostenlosen Webspace.

    Hab s schon gelöst.
    Das Problem war glaub ich, dass ich paar Leerzeilen beim Model hatte ^^
    Kann mich nicht mehr richtig dran erinnern.

    Hab jetzt noch eine Frage zu URL.
    Ich hab das mit scaffolds und displayField nicht richtig verstanden.
    Damit kann man "schöne URLs" machen.

    Hab das derzeit so gelöst:
    if(!empty($this->params['pass'])){
    			$id = $this->params['pass'][0];
    			$this->set('program', $this->Program->findByArticleId($id));
    		}
    		else{
    			$this->set('program', $this->Program->findAllByCategory_id(1));				
    		}


    Wenn die Domain www.example.de/controller/action/id
    aufgerufen wird, sollte man automatisch weitergeleitet werden auf
    www.example.de/controller/action/id/text

    Beispiel:
    http://book.cakephp.org/view/425/redirect

    Entfernt man das "redirect", dann wird man automatisch wieder dahin geleitet.

    Ich hab das jetzt vorerst mit Meta-Redirect gelöst, was aber sehr unschön ist.


    Kann man im Controller Sachen auslesen und dann ein redirect machen?

    $this->set('program', $this->Program->findByArticleId($id));


    Diese Zeile liefert mir ja den Text, aber ich weiß nicht, wie ich die Daten im Controller ntuze.


    Lg
  5. flashmob-riedlingen

    flashmob-riedlingen hat kostenlosen Webspace.

    Also wenn ich das richtig verstehe willst du auf den Rückgabewert von $this->Program->findByArticleId($id) zugreifen um eine redirect URL zu erzeugen?
    Da kannst du ganz einfach direkt drauf zugreifen:

    $article = $this->Program->findByArticleId($id);
    $this->redirect('/controller/action/' . $article);


    Sorry falls ich dich falsch verstanden hab.
  6. Autor dieses Themas

    seth93

    seth93 hat kostenlosen Webspace.

    Ne, ist korrekt danke :D
    Als ich es letztens so ähnlich probierte gings nicht.
    Jedenfalls ist $article in dem Fall ein Array (nur so zur Info).
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!