Requests, die nicht gesetzt sind, löschen... Wie?

mingelburns

Mitglied
Hi!

Ich habe folgendes Problem:

Ich benutze am Anfang einer Seite folgendes Script.

PHP:
<?php
session_start ();
$_SESSION["user_url"] = $_SERVER['REQUEST_URI'];
?>

Wenn nun der User auf einer Seite gelangt, die man nur im eingeloggten Zustand "betreten" darf, speichere ich die aktuelle URL inklusive Parameter ab und checke, ob der User eingeloggt ist. Ist dies nicht der Fall, so leite ich ihn zum Login-Formular weiter und von dort, wenn er sich korrekt eingeloggt hat, wieder zur ursprünglichen Seite, die er sich ansehen wollte.

Nun hänge ich an bestimmte URLs noch Parameter an, wenn er falsche Eingaben macht, damit ich eine bestimmte Fehlermeldung ausgeben kann, die sich auf die falsche Eingabe bezieht. Diese Parameter werden jedoch durch den obigen Code immer weiter angehängt und das bei mehrfachem Aufruf eben auch mehrfach.

Langer Rede kurzer Sinn
Ich möchte nun das obige Script so umwandeln, dass alle Parameter, die nicht gesetzt sind, sondern einfach nur angehängt worte sind wie &sendmsgerr oder &texterr gelöscht werden und am Ende nur gesetzte Parameter, die z.B. wichtige IDs enthalten, bestehen bleiben.

Ich bin mir bewusst, dass ich das am einfachsten per Schleife mache. Nun müsste ich aber wissen, wie ich auf die einzelnen Parameter zugreifen kann, z.B. in Array-Form.

PHP:
if (isset($_REQUEST[array-varx])) {
$neueurl = $neueurl."&".$_REQUEST[array-varx]."=".Wert der $_REQUEST[array-varx]]; }

Dadurch sollte ungesetzte Werte rausfallen.

Meine Frage ist also, wie ich genau auf die Parameter einer URL in Arrayform zugreifen kann...

Kann mir jemand weiterhelfen?

Gruß
mingel
 
Also entweder du nimmst die URI (wie du sie auch schon hast),
und splittest diese, einmal nach ? (erster Parameter) und wenn
da 2 Elemente rauskommen, sprich wenn überhaupt was hinter
dem ? kommt dann nach &. Dann hast du schonmal alle Parameter.
Diese dann jeweils einzeln nach einem =. Kommt nach dem = nichts
ignorierst du diesen und mit den anderen baust du dir die URI selbst
neu zusammen.
Das ganze dürfte auch per preg_match gehen, nur da ich bei regex selbst
ewig bastle kann ich dir nur auf das Tutorial von Tim Commans verweisen.

Eine andere alternative wäre, dass du das $_GET array durchläufst
und bei jedem Parameter schaust, ob dieser einen Wert hat oder nicht.
Wenn ja baust du dir daraus deine URI zusmmen.
 
Also ich habe es jetzt so geschrieben, aber es scheint immer noch nicht zu funktionieren, den die Parameter, die vorher gesetzt waren, gehen ebenso verloren.

Findet jemand vielleicht einen Fehler?

PHP:
<?php
session_start ();
$new_url = '';
foreach($_GET as $key => $value) { 
  if (!empty($value)) {
  $new_url = $new_url.'&'.$key.'='.$value; }
}
$url_neu = substr($new_url, 1 , strlen($new_url)-2);

$_SESSION["user_url"] = $PHP_SELF.'?'.$url_neu;
?>

Gruß
mingel
 
Zurück