Session_ID und Spiders / Robots

LongDonJohn

Mitglied
Hallo zusammen,

bin da gerade auf etwas gestoßen, was mir Kopfschmerzen bereitet:

Ich habe auf meiner Seite ein Kontaktformular und bald auch einen Loginbereich für einen ausgewählten Personenkreis. Um diese Funktionen so komfortabel wie möglich zu realisieren, steht am Anfang meiner index.php das ganz normale

PHP:
session_start();

Damit klappt alles auch wunderbar. Nun bin ich aber auf die Tatsache gestoßen, dass Suchmaschinenspider wie der Googlebot keine Session IDs annehmen und diese dann in der URL mit transportieren. Das stellt zum einen ein Sicherheitsrisiko dar, aber was noch viel schlimmer ist: scheinbar mögen die Robots keine Session IDs, weshalb man schlimmstenfalls mit seiner Seite bei den Suchmaschinen rausfliegt.

Also habe ich mir folgendes überlegt:

Es würde ja völlig ausreichen, die Session erst dann zu starten, wenn der Benutzer seinen Namen in das Feld einträgt. Da kein Robot einen Namen in ein Feld einträgt, erhält er somit auch keine Session ID und die indizierten Seiten werden mit der richtigen URL gespeichert.

Dafür habe ich die index.php so umgebaut:

PHP:
if(isset($_POST['name']) or isset($_SESSION["name"])){
     session_start();
}

Nun startet er die Session, sobald das Feld "name" ausgefüllt wurde und der Benutzer auf "Abschicken" klickt, vergisst die Daten aber beim Klick auf einen anderen internen Link und die Session ist wieder futsch.

Habe darauf hin im Internet recherchiert und entdeckt, dass man eine robots.txt anlegen kann, allerdings habe ich nur gefunden, dass man dort definieren kann, welche Verzeichnisse ein Robot nicht indizieren soll. Und selbst das ist keine Garantie dafür, dass sich der Robot dann auch daran hält.

Hat jemand eine Idee für mein Problem? Ansonsten würde mir nämlich nurnoch einfallen, eine Variable "Userstatus" zu definieren, die beim Klick auf Abschicken beispielsweise auf den Wert "true" gesetzt wird und diese Variable dann immer in der Adresszeile mit zu übergeben - und das halte ich für sehr unelegant...
 
Du könntest prüfen, ob ein $_REQUEST-Arrayelement mit dem Bezeichner der Sitzungs-ID existert:
PHP:
isset($_REQUEST[session_name()])
 
Vielleicht habe ich gerade ein Brett vor dem Kopf, aber was ist der Bezeichner der Sitzungs_ID? Kann man Sessions einen Namen geben, und wenn ja, wie?
 
Zurück