2008-09-01 14 views
5

Ich muss eine kleine Website für meine Alumni-Gruppe verwalten, die von meinem ISV ​​gehostet wird. Die URL ist etwas wie www.myIsv.com/myWebSite/ das ist ziemlich hässlich und sehr zu vergessen. Der Haupt Admin des Webservers hat einen Domain-Namen www.mysmallwebsite.com registriert und legte eine index.html mit folgendem Inhalt:PHP: Sitzungsvariable kann nicht verwendet werden, wenn die Seite umgeleitet wird

<html> 
<head> 
<title>www.mysmallwebsite.com</title> 
</head> 

<frameset> 
    <frame src="http://www.myIsv.com/myWebSite/" name="redir"> 
     <noframes> 
     <p>Original location: 
      <a href="www.myIsv.com/myWebSite/">http://www.myIsv.com/myWebSite/</a> 
     </p> 
     </noframes> 
</frameset> 
</html> 

Es funktioniert gut, aber einige Features wie PHP Session-Variablen funktioniert nicht mehr! Hat jemand einen Vorschlag, das zu korrigieren?

Edit: Das funktioniert nicht, sowohl auf IE und Firefox (keine Plugins)

Dank

Antwort

4

Sitzungen sind an den Server AND der Domäne gebunden. Die Verwendung von frameset über die Domain hinweg führt zu allen Arten von Brüchen, weil das nicht so ist, wie es entwickelt wurde.

Versuchen Apache mod Rewrite mit einem "Pass-Through-Umleitung" zu schaffen, die "Proxy" Flag ([P]) in der Regel ist die magische Flagge, die Sie

Dokumentation bei http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

brauchen
0

Was meinen Sie? Sie sagen, dass wenn Sie von www.mysmallwebsite.com zu www.myIsv.com/myWebSite/ gehen, die PHP-Sitzung verloren geht?

PHP erkennt die Sitzung mit einer ID (alphanumerischer Hash, der auf dem Server generiert wird). Die ID wird von Anfrage zu Anfrage mit einem Cookie namens PHPSESSID oder ähnlichem übergeben (Sie können die Cookies sehen, die ein Webseiten-Set mit Hilfe Ihres Browsers erstellt ... auf Firefox haben Sie Firebug + FireCookie und die wunderbare Web Developer Toolbar. mit dem Sie die Liste der Cookies ohne Schweiß ansehen können).

Also ... PHP übergibt die Session-ID über den Cookie PHPSESSID. Sie können die Sitzungs-ID jedoch als einfache GET-Anforderungsparameter übergeben.

Also, wenn Sie den HTML-Link zu den hässlichen Domain-Namen setzen, vorausgesetzt, dass es die gleiche PHP-Server (mit den gleichen Sitzungen initialisiert), können Sie es so sagen ...

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?> 

I habe eine Weile nicht mit PHP gearbeitet, aber ich denke, das wird funktionieren.

0

Funktioniert Sitzungsvariablen, wenn Sie http://www.myIsv.com/myWebSite/ direkt drücken? Es scheint mir, dass die Server-Konfiguration diktieren würde, ob Sitzungen funktionieren. Wenn Sie jedoch eine Sitzung auf www.mysmallwebsite.com starten (Sie sehen nicht so aus, als würden Sie PHP verwenden, aber vielleicht sind Sie es), können Sie keine Sitzungsdaten übertragen, ohne ein Backend zu schreiben Logik, die die Sitzung von Server zu Server verschiebt.

0

Halten Sie einen session_start() am Anfang Ihres Skripts fest und prüfen Sie, ob Sie wieder auf die Variablen zugreifen können.

0

Es funktioniert nicht, weil auf den Client-Sitzungen per-Domäne sind. Alle Cookies werden für mysmallwebsite.com gespeichert, sodass myIsv.com nicht darauf zugreifen kann.

0

@ pix0r www.myIsv.com/myWebSite/ -> Session-Variable Arbeit www.mysmallwebsite.com -> Session-Variable funktioniert nicht

@Alexandru Leider ist dies nicht auf demselben Webserver

0

Welchen Browser/welche Werbung haben Sie? Es kann sein, dass Ihr Browser oder eine andere Software (möglicherweise sogar der Webserver) die Sitzungen von http://www.myIsv.com/myWebSite/ blockiert, die mit dem Frame arbeiten, da er sich auf einer anderen Site befindet und denkt, dass es sich um einen XSS-Angriff handelt.

Wenn die Sitzung bei http://www.myIsv.com/myWebSite/ ohne den Rahmen funktioniert, könnten Sie uns immer eine Umleitung von http://www.mysmallwebsite.com auf die hässliche URL, anstatt den Rahmen verwenden.

EDIT: Ich habe gerade versucht, Ihre Frame-Code auf einer Seite von mir, die Sitzungen verwendet, funktionierte firefox gut, mit mir einloggen und bleiben eingeloggt, aber IE7 loggte mich gerade wieder aus.

0

Also, wenn Sie den HTML-Link zu dem hässlichen Domain-Namen vergeben, unter der Annahme, dass es den gleiche PHP-Server (mit den gleichen Sitzungen initialisiert), können Sie es so sagen ...

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?>

aus sicherheitstechnischer Sicht ich hoffe wirklich, wirklich, wirklich, dass nicht

0

funktioniert Sie auch einen Cookie auf der Anwenderseite einstellen könnte und dann auf das Vorhandensein dieses Cookie überprüft direkt nach Umleitung, was wenn Wenn Sie sich über freundliche URLs ärgern, bedeutet dies, dass Sie keine PHPSESSID in der Abfragezeichenfolge weitergeben müssen.

0

Wenn die Leute ankommen @ www.mysmallwebsite.com würde ich leite es einfach zu http://www.myIsv.com/myWebSite/

<?php header('Location: http://www.myIsv.com/myWebSite/'); ?> 

Das ist alles was ich in www.mysmqllwebsite.com/index.php
Auf diese Weise hätte man nicht zu Sorgen Sie sich um die Kompatibilität mit BrowsedR oder über das Funktionieren der Sitzungen, machen Sie einfach die Umleitung, und Sie werden gut sein.

Verwandte Themen