Tutorials
Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.
Howto: Username Url's in 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