Frage

Meine PHP-Anwendung verwendet 404 Dokumente HTML-Dateien zu erzeugen, so dass mehrere Abfragen auf die gleiche HTML-Datei nur die Erzeugung verursachen einmal ausführen.

Ich möchte Anfragen an die HTML-Dateien abzufangen, so dass der Benutzer eine etablierte PHP Session, um die Dateien zu ziehen haben muss.

Im besten Fall Sitzungs-ID würde in der URL verwendet werden, und zwingt sie als weitere Authentifizierung verwendet werden könnten. Um zum Beispiel eine SessionID und machen nur bestimmte HTML-Dateien zugänglich würden Sie ausgeben Sie sich anzumelden.

Ich bin mir bewusst, dass meine Cookies durch Änderung ich einen Antrag fälschen könnte, aber das ist in Ordnung.

Wie würde ich mich über das Tun dies?

War es hilfreich?

Lösung

So etwas wie dies funktionieren könnte (ich habe es nicht getestet):

RewriteCond %{HTTP_COOKIE} PHPSESSID=([a-zA-Z0-9]+)
RewriteCond %{REQUEST_FILENAME} %{REQUEST_FILENAME}-%1.html
RewriteRule ^ %{REQUEST_FILENAME}-%1.html

Es wird davon ausgegangen, dass Sie "-$session_id.html" auf Dateinamen ($session_id ist die PHP-Session-ID).

anhängen

Es sollte sicher sein, und der Vorteil ist, dass Dateien, die vom Web-Server ohne Aufruf an all PHP direkt bedient werden.

Andere Tipps

SetEnvIf HTTP_COOKIE "PHPSESSID" let_me_in
<Directory /www/static/htmls>
  Order Deny,Allow
  Deny from all
  Allow from env=let_me_in
</Directory>  

Natürlich Benutzer kann manuell solche Cookies in seinem Browser erstellen (es gibt Erweiterungen, die für Firefox tun, und Sie können Ihren Browser-Cookie-Speicher immer bearbeiten).

Sie könnten die Apache Modul mod_rewrite Anfragen umleiten von .html URLs an einen PHP-Skript:

RewriteEngine on
RewriteRule \.html$ script.php [L]

Der angeforderte URI-Pfad und Abfrage ist dann in der $_SERVER['REQUEST_URI'] Variable.

Setzen Sie Dateien zwischengespeichert aus Ihrem Web-Root, aber immer noch in einem Ort, wo PHP auf sie zugreifen kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top