wbb domain.de/username weiterleitung auf das profil

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

wbb domain.de/username weiterleitung auf das profil

Beitragvon chrisp » 08.02.2009 18:32

Hi...

ich bin schon eine ganze weile drann zu versuchen, eine weiterleitung auf das profil vom woltlab forum profil zu machen..

aktuell erreicht man das profil eines users über die url:

http://www.domain/profile.php?userid=2

wobei die userid natürlich bei jedem user anders ist ..

aussehen sollte es jedoch, dass man über:

http://www.domain.de/username

zum profil des jeweiligen users kommt.


ich habe nun follgendes in die .htaccess geschrieben:

Code: Alles auswählen
RewriteRule ^\/(.*?)$ /misc.php?action=user?username=$1



in der misc.php hab ich dann follgendes geschrieben:



Code: Alles auswählen

/** rewrite username zu userid anfang **/

if($action == "user") {

$username = $_GET['username'];
$id = $db->query_first("SELECT userid FROM bb".$n."_users WHERE username == $username);

}


/** rewrite username zu userid ende **/



jetzt komme ich grad irgendwie nicht weiter ...
.. ich gebe da ja die anweisung, er soll aus der datenbank die userid holen, die zum usernamen gehört, die eingegeben wurde... aber wie leite ich dann den besucher weiter ?

bin mir auch nicht sicher, ob das bisher so alles richtig ist.

was ich auch gern haben möchte ist, dass er wiederrum zu einer bestimmten seite weiterleitet, wenn es den usernamen nicht gibt, der eingegeben wurde.

vielleicht kann mir da ja einer weiter helfen.


ich nutze das woltlab board 2.3.6 mit ner mysql datenbank. php5.
chrisp
.
.
 
Beiträge: 3
Registriert: 08.02.2009 18:23

Beitragvon Gumbo » 08.02.2009 18:46

Erst einmal bezweifle ich, dass die genannte Regel überhaupt funktioniert. Viel eher müsste/sollte sie etwa so aussehen:
Code: Alles auswählen
RewriteRule ^([a-z]+)$ /misc.php?action=user&username=$1
Weitergehend birgt auch das PHP-Skript einige Lücken, weswegen ich es vermutlich so machen würde:
Code: Alles auswählen
if ($action == "user" && isset($_GET['username'])) {
    $id = $db->query_first("SELECT userid FROM bb".$n."_users WHERE username='".mysql_real_escape_string($_GET['username'])."'");
    if (!empty($id)) {
        header('Location: http://example.com/profile.php?userid='.$id, true, 302);
        exit;
    } else {
        // Fehler
    }
}
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon chrisp » 08.02.2009 20:34

cool .. danke auf jedenfall schonmal.

der link, wo der dann weiterleitet, ist dann jedoch:

http://diedomain.de/profile.php?userid=Array

hm..

EDIT:

also ich hab mal $id auszählen lassen und der gibt mir an das da 2 variabeln drinn sind. also hat der daraus n array gemacht.
frage mich nur warum... wenn ich mir die einzelnen arrays auslesen lasse ist auch nur der platz 0 belegt... versteh ich nicht... naja.egal.

also so klappt es jetzt:
Code: Alles auswählen
header('Location: http://example.com/profile.php?userid='.$id[0], true, 302);



EDIT2:

nur zum Verständnis... was genau bedeutet "true, 302" ?
chrisp
.
.
 
Beiträge: 3
Registriert: 08.02.2009 18:23

Beitragvon ReMichael » 07.03.2009 00:42

chrisp hat geschrieben:EDIT2:

nur zum Verständnis... was genau bedeutet "true, 302" ?


Schau dir mal die Dokumentation an: http://www.php.net/manual/de/function.header.php

Der optionale Parameter replace gibt an, ob der Header einen vorhergehenden gleichartigen Header ersetzten soll, oder ob ein zweiter Header des selben Typs hinzugefügt werden soll. Standardmäßig wird ersetzt; wenn Sie als zweites Argument FALSE übergeben, können Sie so mehrere Header desselben Typs erzwingen.


Und die 302 gibt den HTTP-Response-Code an. 302 = Found
ReMichael
.
.
 
Beiträge: 52
Registriert: 09.12.2005 23:25


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast