php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.09.2006, 16:49  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard Session + header () = Referer

Hallo Forum,

ich hab ne Frage zu Sessions und PHPs header() funktion. Möglicherweise fehlt mir irgendwie das grundlegende Verständnis:

Ich benutze eine templatebasierte Seite, die nur über eine Datei index.php und GET Parameter alle Inhalte dynamisch einbindet. Hier findet auch der Session Mechanismus statt.

So wollte ich den Tipp aus dem Buch PHP Sicherheit beherzigen, um das Auftauchen der SessionID im Referrer verlinkter externer Seiten verhindern. Der Code (geändert auf die alten HTTP_*_VARS Arrays)

Code:
if (isset($HTTP_GET_VARS['sessID'])) 
  header("Location: ". $HTTP_SERVER_VARS['PHP_SELF'] ."?page=".$HTTP_GET_VARS['page']);
else
  header("Location: ".$HTTP_GET_VARS['page']);
steht in einer Datei (load.php), die mit einer URL als page Parameter aufgerufen wird. Enthält GET noch eine Session ID ruft sich das Script selbst auf, sonst direkt den übergebenen Link.
Das Problem ist, es funktioniert nicht. Irrt hier also der Autor? Zur Kontrolle rufe ich ein lokales Script auf, das die $GLOBALS und damit den Referrer ausgibt. Darin steht jedoch nicht 'load.php' sondern das Script index.php welches load.php aufruft, inklusive Session ID und weiterer Parameter. Die ID wird definitiv nicht über Cookies übertragen, da der entsprechende Eintrag des SERVER Arrays in diesem Falle auftaucht (experimentell ermittelt).

Kann es sein, daß der HTTP Header Location eine Art Reload ausführt, sodaß load.php gar nicht in den Referrer gelangen kann? Und hat jemand eine alternative Idee? Kann es mit einer alten PHP-Version 4.0.6 oder mit der lokalen Umgebung zusammenhängen?

Danke im Voraus.
--n
nikosch ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.09.2006, 15:27  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard Immer noch verzweifelt...

Ich brauch hier echt Hilfe. Hab weiteres ausprobiert. Firefox mit definitiv ausgeschalteten Cookies zeigt die Session ID brav im URL an, von load.php werden definitiv beide Zweige durchlaufen (z.B. wird bei Ausgabe von $GLOBALS - was natürlich den Location-Header stört - als GET Paramter eben die übermittelte Page angezeigt), aber im Referer steht wieder index.php?sessID=... usw.

Ich dachte, es könnte ein Nebeneffekt der lokalen Webserverumgebung sein, deshalb habe ich das per page= zu ladenede Script auf einen zweiten Webspace gelegt und wieder zeigt mir die Ausgabe von $GLOBALS dort schön die Session ID.

keine Idee??
Könnte es mit dem REDIRECT (302) Statuscode zusammenhängen, den der Location Header laut PHP Handbuch mitschickt?
nikosch ist offline   Mit Zitat antworten
Alt 14.09.2006, 16:07  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi.

Ich kann von dem Rechner hier gerade selbst keine Tests ausführen, aber schau dir das Ganze doch mal mit Telnet an oder auch entsprechenden Firefox-Erweiterungen, die dir zeigen, welche Header da rumgeschickt werden.

Prinzipiell solltest du mal deine PHP-Version upgraden.

Und, stimmt der Name der Session: "sessID"?

Ach ja, und warum "page"? Sind die externen Links alle Seiten? Keine news-Links, Archive, News-Feedas etc.?

Basti
Basti ist offline   Mit Zitat antworten
Alt 15.09.2006, 14:57  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Hab jetzt mal den WebScarab bemüht, die Sache ist noch etwas komplizierter. Der erste IF Zweig wurde nicht durchlaufen. Schließlich wird dieSessionID ja auch nicht per GET übergeben sondern durch session.trans_sid_id. Da scheint ein Unterschied zu bestehen. Deshalb hab ich die Sache auf eine Auswertung von HTTP_SERVER_VARS[HTTP_REFERER] geändert, aber auch hier gabs keinen Erfolg sondern ne Endlosschleife.

In der load.php steht jetzt auch ein ini_set('session.use_trans_sid' , 0);

Desweiteren hab ich probiert per header('Referer: ',true); einen leeren Referer zu übergeben.
Mein nächster Versuch galt fsockopen aber da stören mich die Header die mit ausgegeben werden und überthaupt ist das Verhalten der Seiten höchst unterschiedlich (Bilder werden nicht nachgeladen usw.). Aber das Problem mit dem Referer scheint dann nicht aufzutreten.

sessID ist korrekt, ebenso daß nur Websites Ziel des Location: headers sein sollen

Auf die PHP Version habe ich leider keinen Einfluß. Lokal hab ich die nur als Zweitversion, um unter den realistischen Bedingungen des Zielwebspace zu programmieren.
nikosch ist offline   Mit Zitat antworten
Alt 15.09.2006, 17:50  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ok, vergeßt bitte schnell, daß ich das mit dem header('Referer: ') versucht habe. Komme langsam auch schon durcheinander ob ich nun Server oder Client repräsentiere (kein Wunder den ich bin beides zugleich...)

Hab jetzt in nem Selfhtml Archiv gefunden, daß der location header Aufruf stets nur ein Redirect produziert und sich damit nie der Referer ändern kann:
Zitat:
Ein Redirect bewirkt, dass der Client seinen Request wiederholt - diesmal an die im Redirect angegebene URL.
(http://forum.de.selfhtml.org/archiv/2004/6/t82733/)
Klingt eigentlich ziemlich logisch und so werde ich mich jetzt einzig und allein auf Meta-Refresh + Link für den Notfall beschränken.

Wer trotzdem irgendwann nochmal ne ordentlich Lösung für Seitenaufrufe mit fsockopen bieten kann - und damit meine ich ohne den ganzen Header Schnickschnack oder ominöse Hexzahlen im Quelltext - kann das ja mal posten.

Bis dann --n
nikosch ist offline   Mit Zitat antworten
Alt 16.09.2006, 00:44  
CIX88
Gast
 
Beiträge: n/a
Standard

Zitat:
Mein nächster Versuch galt fsockopen
Wie sah denn dieser Versuch überhaupt aus ?
  Mit Zitat antworten
Alt 16.09.2006, 00:52  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Eine Abwandlung der POST per fsockopen Geschichte ähnlich dem hier:
http://www.php-faq.de/q/q-code-post.html
nikosch ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Session Problem karina_02 PHP Tipps 2008 6 18.05.2008 22:37
header() ??? TeazY PHP Tipps 2008 9 11.01.2008 15:40
Problem bei session Lifetime Cyberbob_at_tot PHP Tipps 2007 5 05.06.2007 17:47
session nach seitenwechsel leer... GELight PHP Tipps 2006 8 17.09.2006 15:17
Header: 2 gesendet (Session, DL Script) möchtegernchegga PHP Tipps 2006 13 08.06.2006 15:56
session array Timo Trallala PHP Tipps 2006 18 22.04.2006 13:45
[Erledigt] php session problem :( PHP Tipps 2005-2 5 21.10.2005 16:37
Session wird nicht angelegt PHP Tipps 2005-2 7 24.07.2005 13:35
Kreieren einer Session PHP Tipps 2005 11 28.05.2005 15:16
session + ETag (Header) PHP-Fortgeschrittene 3 25.04.2005 16:24
Problem: Cannot modify header information Alpha Centauri PHP Tipps 2005 11 25.04.2005 13:05
Session Problem PHP-Fortgeschrittene 3 18.02.2005 14:37
[Erledigt] Formulardaten in einer Session speichern, per Link übergeben PHP Tipps 2004-2 2 29.12.2004 15:47
[Erledigt] Hilfe...PhpBB Session Problem!! PHP Tipps 2004-2 2 15.12.2004 18:28
Warning: Cannot modify header... einbinden nicht möglich? PHP Tipps 2004 2 07.08.2004 15:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php header referer, php referer ändern, session referer, referer ändern, header referer, php referer setzen, referer header, http://www.php.de/php-fortgeschrittene/41995-session-header-referer.html, referrer session, session referrer, header referer php, php session referrer, referer php, php redirect session, php referrer ändern, php header referrer, referer session, header session id, php session referer, $session->referrer

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:21 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.