PHP .htaccess - Problem mit ($_SERVER["REQUEST_URI"]))

volcem

Lieutenant
Registriert
Dez. 2007
Beiträge
1.021
Guten Tag Liebe Programmierkollegen,

ich programmiere gerade eine Firmenseite um, die Seite soll einen Onlineshop bekommen, dieser ist auch soweit fertig Programmiert.

Nun "baue" ich die ganzen Sache so um dass diese in der "vorhandenen" Internetseite eingepflegt werden können.

Nun bin ich gerade dabei die Dateien zu definieren wo "login" zwingend erforderlich ist.

PHP:
//Prüfe bei folgenden Dateien ob der User angemldet ist:
if(isset($_GET['home']) && $_GET['home'] == "account") {
include("include/dir/login.php");
}

login.php sieht so aus:

PHP:
session_start();
    if( !$_SESSION['login'] && !$_SESSION["email"] && !$_SESSION["passwort"]) {
        header("Location: login&returnto=" . urlencode($_SERVER["REQUEST_URI"]));
        exit();
    }
    include_once("./include/online.php");
    $userid = $_SESSION["userid"];
    
    $sql = "SELECT passwort FROM customers WHERE userid = '$userid'";
    $res = mysql_query($sql);
    $row = mysql_fetch_array($res);
    $passwort = $_SESSION["passwort"];
    $passwort_db = $row["passwort"];
    
    if($passwort != $passwort_db) {
    header("Location: login&returnto=" . urlencode($_SERVER["REQUEST_URI"]));
        exit();
    }

Also nen simples abfragen...

Wenn der User nun nicht angemeldet ist, wird er umgeleitet auf

"www.site.de/home/account"

Die URL sieht dann so aus:
http://192.168.1.69/home/login&returnto=/home/account

Problem ist nun, er kann diese nicht aufrufen....

/home/account existiert...

Dies Kollidiert wohl mit der Variable returnto=/home/account aber wieso?
die .htaccess sollte doch dies nicht beachten:

Ausschnitt:

HTML:
RewriteRule ^home/([^/]*)$ /index.php?home=$1 [L]

Oder sehe ich vor lauter Bäumen den Wald nicht mehr?

*edit*
Irgend wie finde ich das wohl heute nicht mehr... Häng auch schon viel lange dauerhaft an dem System hier :(
 
Zuletzt bearbeitet:
Also wenn ich das richtig verstanden habe, wird /home/login&returnto=/home/account aufgerufen, was zu /index.php?home=/login&returnto=/home/account werden sollte.

Ich habe deine htaccess-Regel leicht geändert:
Code:
RewriteRule ^home/(.*)$ index.php?home=$1

damit erhalte ich in der index.php folgendes:

PHP:
	echo $_GET['home']." ".$_GET['returnto'];

HTML:
    login /home/account

Damit musst du eigentlich nur noch eine geeignete Abfrage erstellen und eventuell weiterleiten, wenn returnto gesetzt ist.

PS: Ich würde das Passwort nicht umbedingt in die Session laden, oder ist das zwingend notwendig? Ansonsten nach Verwendung mit unset() freigeben.

Was mir gerade noch aufgefallen ist:
Warum machst du die Passwortüberprüfung nicht direkt per SQL?
PHP:
$sql = "SELECT * FROM customers WHERE userid = '$userid' AND passwort = '".$_SESSION["passwort"]."'";
Dann einfach überprüfen ob es ein Ergebnis gibt. Wenn ja, stimmt das Passwort mit der Id überein.
 
Hey,

ja Du hast Recht, weiß auch gar nicht mehr wofür ich dass Passwort in der Session brauchte.
Es würde ja reichen wenn $_SESSION['userid']; gesetzt ist und anschließend in der ersten Regel zusammen mit "email" geprüft wird, ob gesetzt.

Geht ja nur darum zu prüfen ob der User angemeldet oder eben nicht angemeldet ist.

Deine rewrite Regel werde ich gleich mal testen.
Problem war ja das "/home/account" dann als Ordner erkannt wurde....
 

Ähnliche Themen

Zurück
Oben