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


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.