Allgemeine Entität "PHPSESSID" nicht definiert

Registrierer

Erfahrenes Mitglied
Hallo Forumgemeinde,

es ist zwar ein HTML Problem, Ursache ist aber der PHP Code.
Ich habe es gern wenn meine Seiten Valide sind und lasse sie nach Fertigstellung immer bei http://www.validome.org prüfen.
Folgendes Problem tritt dabei auf:
Innerhalb eines href-Attributes wird
termin=1&PHPSESSID=od9sm3k8tn2iv40a4rcfdpd4c0">
das ^ & bemängelt weil es nicht als & definiert ist.
nur das eben "1&PHPSESSID=od9sm3k8tn2iv40a4rcfdpd4c0" dynamisch erzeugt wird und ich darauf keinen Einfluss habe, ich lasse eigentlich nur die 1 erzeugen, warum "&PHPSESSID=" angehängt wird weiss ich nicht.
Jetzt habe ich die allgemeine Entität "PHPSESSID" nicht definiert und keine Standardentität definiert. Nur, wie ändere ich das?
Jemand einen Lösungsanzatz?
 
Moin,

wenn die PHP-Einstellung session.use_trans_sid aktiviert ist, werden URLs von PHP automatisch in dieser Art erweitert, sofern eine Session gestartet und die Session-ID nicht in einem Cookie gespeichert werden konnte.

Das Problem selbst kannst du über die PHP-Einstellung arg_separator.output abstellen, indem du dieser Einstellung den Wert & zuweist (die Standardeinstellung ist & )
 
Das Problem selbst kannst du über die PHP-Einstellung arg_separator.output abstellen, indem du dieser Einstellung den Wert & zuweist (die Standardeinstellung ist & )

Na Klasse, Danke für die schelle Hilfe. Ich frag mal meinen Privider ob der das macht ;-) Auf meiner Local Maschine läuft es korrekt, online... naja. Danke.
 
Diese Einstellung müsstest du auch über eine .htaccess ändern können, du brauchst deinen Provider also nicht unbedingt belästigen(zumal diese für solche Dienstleistungen oftmals Bares verlangen)
 
--- Diese Einstellung müsstest du auch über eine .htaccess ändern können ---

Das natürlich prima, allerdings hab ich mich mit .htaccess bisher nur sehr stiefmütterlich befasst. Das der Eintrag "php_value arg_separator.output &" rein muss hab ich mir schon erlesen, aber der alleinige Eintrag sorgt für Internal Server Error! Auf die schnelle noch ein Tipp vom Chef?
 
Schade, dann hast du nicht die nötigen Rechte, diese Einstellung auf Verzeichnisebene zu überschreiben.

Du kannst es noch per ini_set() auf Skriptebene probieren:
PHP:
ini_set('arg_separator.output','&');
 
Herzlichen Dank, das hat funktioniert.
Dann gleich noch eine kleine Frage weil ich nicht recht weiss wo ich zur Lösung ansetzen kann.

In einem Formular "<form action="index.php" method="post"><b>Anzeige na..." wird beim Abruf "<form action="index.php" method="post"><input type="hidden" name="PHPSESSID" value="9ompvh5814pb3eo5k7" /><b>Anzeige na..." die Session ID mit übermittelt. So weit, so gut. Nur: am Ende steht "/>" statt ">", was bei meiner Docdef. "HTML 4.01 Transitional" eben wieder als Fehler interpretiert wird.
Weisst Du wo das Schlusstag definiert sein könnte? Sonst bliebe mir ja nur die Möglichkeit STRICT zu verwenden. Vielleicht ist das wieder gaaanz eifach ;-)

L.G. Helmut
 
Mir ist keine PHP-Funktionalität bekannt, die dafür verantwortlich sein könnte.

Womit schaust du dir den Quelltext denn an?
Firebug macht soetwas bspw. von sich aus, was nicht bedeutet, dass es wirklich drinnen steht.
 
Im Quelltext des Browsers ist das nicht zu sehen, sondern nur wenn ich die Seite von validator.w3.org validieren lasse und dort der Quelltext ausgegeben wird.
Nur dann wird das versteckte Feld mit der Session ID angezeigt.
 
Ahso,

da bei dir session.use_trans_sid aktiviert ist, wird ja, sofern kein Session-Cookie gesetzt werden kann(was bei dem Validator der Fall sein wird), dieses Feld im Formular angelegt. Eine Einstellung, mit der man die XHTML-konforme Schreibweise verhindern kann, ist mir da nicht bekannt.

Was du machen kannst, ist generell das Ezeugen dieser Formularfelder verhindern:
Code:
ini_set('url_rewriter.tags',"a=href,area=href,frame=src");

Du müsstest diese Felder dann selbst erzeugen, wenn kein Session-Cookie gesetzt werden konnte,...(ohne Slash am Ende natürlich :-) )
 
Zurück