Archivlink: javarea.de Forum > PHP, MySQL & CGI > PHPSESSID ausfiltern
Vollständigen Link anzeigen: javarea.de Forum > PHP, MySQL & CGI > PHPSESSID ausfiltern
Pages: [1]
| geschrieben von sobi am 27.07.2008 - 00:04 |
Hallo,
ich bekomme bei der Refererermittlung in einem Script oft solche Anzeigen::
| PHP-Quelltext | 1:
2:
3:
|
<?
http://www.free-templates-sobers.de/scripte.php?PHPSESSID=atub2dahs137flg6m2rbjftje6
?>
|
Gibt es einen einfachen Befehl, mit dem ich so eine Session ID aus dem Namen rausfiltern kann, oder muss ich solche Strings per EXPLODE zerlegen, das mit der PHPSESSID rausfiltern und die Strings wieder zusammen setzen?
Das Explode könnte man ja über das Fragezeichen realisieren. Blos beispielsweise solche Strings
| PHP-Quelltext | 1:
2:
3:
|
<?
http://www.javarea.de/index.php3?opencat=Javascript&subcat=System-Scripts&id=518
?>
|
dürften ja nicht zerpflückt werden.
Wie das mit EXPLODE geht, weiss ich. Was ich suche ist ein PHP Befehl, der mir wie PREG_MATCTH Zeichen löscht, nur halt nach dem Muster PHPSESSID*, also mit WildCard.
Ich hab schon gesucht aber nix gefunden.
Thx
Uli |
| geschrieben von Micha am 27.07.2008 - 13:05 |
Hi,
ich kann ja nicht soviel PHP, daher eine Lösung in JS, die Du mal nach PHP portieren müsstest:
| HTML-Quelltext | 1:
2:
3:
| var str = "http://www.free-templates-sobers.de/scripte.php?PHPSESSID=atub2dahs137flg6m2rbjftje6&foo=bar";
var regExp = new RegExp(/PHPSESSID=[a-zA-Z0-9]+(\&)?/i);
window.alert( str.replace( regExp, "") ); |
Gruß Micha |
| geschrieben von sobi am 27.07.2008 - 15:01 |
Ich hab das jetzt so gelöst::
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
|
<?php
$referer ="http://www.free-templates-sobers.de/scripte.php?opencat=5637vq&q=suchstring&PHPSESSID=khbvvbvbihbvi576";
echo "ALT = ".$referer."<br><br>";
// if (preg_match( '/PHPSESSID/', $referer)){
if (
$filter = strpos($referer,"PHPSESSID")){
$referer = substr($referer,0,$filter-1);}
echo "NEU = ".$referer."<br>";
?>
|
Man braucht entweder eine Abfrage über preg_match oder if, sonst, wenn keine PHPSESSID existiert, wird beim verbleibenden String das letzte Zeichen abgeschnitten.
Ich find die Lösung ist immer noch zu lang. Gibt's denn nicht so was mit Wildcards
$referer =(abc_replace ( "?PHPSESSID*", "", $referer))
Ich meine ich hätte so was mal irgendwo gelesen, find's aber nicht mehr.
Trotzdem besten Dank.
Uli |
| geschrieben von Micha am 27.07.2008 - 15:34 |
Hi,
also mein Script liefert mir für Deine URL aus dem letzten Beispiel folgendes:
| HTML-Quelltext | 1:
| http://www.free-templates-sobers.de/scripte.php?opencat=5637vq&q=suchstring& |
Keine Ahnung, was Dich daran nun stört. Ich dachte das ist genau das, was Du wolltest. Wenn Dich jetzt das letzte & noch stört, dann muß der Ausdruck dieses eben noch berücksichtigen:
| HTML-Quelltext | 1:
| var regExp = new RegExp(/(\&)?PHPSESSID=[a-zA-Z0-9]+(\&)?/i); |
In PHP könnte demnach folgendes gehen:
| PHP-Quelltext | 1:
2:
3:
|
<?
$newStr = preg_replace('@/((\&)?PHPSESSID=[a-zA-Z0-9]+(\&)?)/i@',"",$oldStr);
?>
|
Näheres unter http://de.php.net/preg_replace. Ich habe es nicht getestet, es könnte sein, das Du noch eine Kleinigkeit anpassen musst.
Micha |
| geschrieben von sobi am 27.07.2008 - 16:33 |
eigentlich such ich so was wie deinen letzten vorschlag oben.
bloss mit den parametern um PHPSESSID drumherum komm ich nicht klar. das beispiel filtert mir auch nix aus, da bleibt der $new genauso wie edr $old.
ich quäl mal meine literatur dazu, das prinzip kenn ich ja von der e-mail abfrage. ich muss es aber erst nochmal studieren ;)
das script läuft aber schon mal, also besten dank.
cu
uli |
| geschrieben von sobi am 27.07.2008 - 17:48 |
Hier der Code, wie man das mit einer PHP Zeile ausfiltern kann, vorher hab ich einen 2-Zeiler mit IF-Abfrage gehabt, das ist nun nicht nötig::
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
|
<?php
$referer ="http://www.free-templates-sobers.de/scripte.php?opencat=5637vq&q=suchstring&strasse=markt 7&PHPSESSID=khbvvbvbihbvi576";
// $referer ="http://www.free-templates-sobers.de/scripte.php?PHPSESSID=khbvvbvbihbvi576";
// $referer ="http://www.free-templates-sobers.de/scripte.php?opencat=12345";
// $referer ="NN";
// $referer =" ";
// $referer ="";
echo "ALT = ".$referer."<br><br>";
$referer = preg_replace("^(\?||\&)+PHPSESSID=([a-zA-Z0-9_ ])*$^", "", $referer);
echo "NEU = ".$referer;
?>
|
Sollte die schnellste Möglichkeit sein, den String zu bearbeiten...
Danke Micha
Grüße
Uli |
| geschrieben von Micha am 27.07.2008 - 18:01 |
Hallo,
| Zitat von: sobi am 27.07.2008 - 16:33 | | |
ich quäl mal meine literatur dazu, das prinzip kenn ich ja von der e-mail abfrage.
|
Es wäre doch schön, wenn Du das immer als erstes tust.
Gruß Micha
|
| geschrieben von sobi am 27.07.2008 - 18:29 |
wenn ich immer wüsste wo ich suchen müsste...
außerdem steht hier FORUM dran  |
|