Tutorials

Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.

Zurück zur Übersicht

Howto: Username Url's in Codeigniter

#Tutorials#PHP

Codeigniter

Da ich mich gerade in Codeigniter einarbeite und auf der Suche nach einer Möglich war, bei der ich als erstes Segment hinter der URL gleich einen Benutzernamen schreiben kann, habe ich etwas gefunden, was ich euch nicht vorenthalten möchte. Das Ganze funktioniert mit Hooks.

Und so funktioniert es:

1. Aktiviere Hooks in ‘application/config/config.php’, suche und ersetze die Hooks Configuration mit folgenden Einstellungen.

$config['enable_hooks'] = TRUE;  

2. Konfiguriere als nächstes ein ‘pre-system’ hook in ‘application/config/hooks.php’...


$hook=array(
        'pre_system' => array(
                array(
                         'class'    => 'Userlookup',
                         'function' => 'check_uri',
                         'filename' => 'Userlookup.php',
                         'filepath' => 'hooks',
                         'params'   => NULL,
                      ),
        ),
);

3. Nun kanns losgehen. Erstelle eine Datei mit dem Namen ‘Userlookup.php’ in ‘application/hooks’, Danach schreibt ihr eine Klasse, die wie folgt aussieht:


<?php defined('BASEPATH') or die('No direct script access allowed');

class Userlookup{

    protected $uri_username;
    protected $connection_method;

    protected $hostname;
    protected $username;
    protected $password;
    protected $database;

    public function __construct()
    {
        // Konfiguriere die Datenbankverbindung
        include(APPPATH.'config/database'.EXT);
        $this->hostname = $db[$active_group]['hostname'];
        $this->username = $db[$active_group]['username'];
        $this->password = $db[$active_group]['password'];
        $this->database = $db[$active_group]['database'];
    }

    public function check_uri()
    {
         // Als erstes muss das Uri Segment inspiziert werden
         $request_uri = explode('/',substr($_SERVER['REQUEST_URI'], 1));
         $this->uri_username = array_shift($request_uri);
         $connection_router = array_shift($request_uri);

         //Ist eine Methode angegeben? Wenn nein gehe auf die index() Funktion
         $this->connection_method = empty($connection_router) ? 'index' : $connection_router;
         // Verbinde mit der Datenbank und schaue, ob es den User gibt
         mysql_connect($this->hostname, $this->username, $this->password) AND mysql_select_db($this->database);
         $res = mysql_query("SELECT user_id FROM user WHERE user_url='".$this->uri_username."'");
         if ($row = mysql_fetch_object($res))
         {
                // Wenn es den User gibt gehe auf den Controller User
                $_SERVER['REQUEST_URI'] = '/user/'.$this->connection_method.'/'.$row->user_id;
         }
         mysql_free_result($res);
    }
}

4. Und schon ist es geschafft. Ihr surft nun Beispielsweise: example.com/maxmustermann, dann wird der Controller User aufgerufen und falls nichts mehr angeben ist die index Funktion. geht man auf example.com/maxmustermann/info wird die Methode Info im User Controller aufgerufen. Als 3tes Segment wird immer die User-ID übergeben, damit man im Controller auch die richtigen Daten aufrufen kann.

Viel Spaß mit dem Script!


Kommentare

Es gibt noch keine Kommentare. Sei der Erste!

Hinterlasse einen Kommentar

Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Kommentar wird gespeichert
Danke für deinen Kommentar! Sobald er freigegeben wurde erscheint er hier.