Angefügter Input mit Session-ID macht Webseite invalide

Michael_K

Mitglied
Hallo,

auf meiner Webseite wird, sofern der Besucher nicht eingeloggt ist, ein kleines Login-Formular am Seitenrand angezeigt. Selbiges funktioniert soweit wie gewünscht, bis auf ein Problem: PHP fügt nach dem Form-Tag immer ein verstecktes Input-Feld mit der Session-ID an. Dieses wird natürlich nicht in ein Div-, P- oder ein sonstiges benötigtes Tag eingefasst, sodass meine Seite nach XHTML 1.0 nicht mehr valide ist.
Meine bisherigen Versuche, das Einfügen des Inputs zu verhindern oder es valide zu gestalten, fruchteten leider alle nicht. Auch Google und die Forensuche konnten mir nicht weiterhelfen.
Weiß hier jemand Rat?

Vielen Dank im Voraus! :)

Gruß, Michael
 
Hallo birnkammer, und Danke für deine Antwort :)
Allerdings glaube ich, Du hast mich etwas missverstanden, oder ich die Erklärung der arg_separator.output-Option. So wie ich das verstehe, wandelt diese ja nur das "&"-Zeichen in einer mit PHP generierten URL in ein "&amp;" um. Mein Problem ist aber keine URL, sondern ein falsch gesetztes <input>-Tag. Hier mal ein Stück Quelltext zur Verdeutlichung:

Das ist das Login-Formular, wie ich es geschrieben habe:
HTML:
<form action="login.php" method="post">
 <div>
 Benutzername: 
 <input type="text" name="name" size="15" /><br />

 Passwort (<a href="forgot_pw.php">Vergessen?</a>):
 <input type="password" name="password" size="15" /><br />

 <input type="checkbox" name="permanent_login" />Eingeloggt bleiben?
 <input name="send" type="submit" value="Login" /><br />

 Kein Benutzerkonto? Dann <a href="registrate.php">registriere Dich hier!</a>
 </div>
</form>
Und so sieht es nach der Ausgabe durch PHP aus:
HTML:
<form action="login.php" method="post"><input type="hidden" name="PHPSESSID" value="324d24e7af26b93683d68ccc0343a5c2" />
 <div>
 Benutzername: 
 <input type="text" name="name" size="15" /><br />

 Passwort (<a href="forgot_pw.php">Vergessen?</a>):
 <input type="password" name="password" size="15" /><br />

 <input type="checkbox" name="permanent_login" />Eingeloggt bleiben?
 <input name="send" type="submit" value="Login" /><br />
 Kein Benutzerkonto? Dann <a href="registrate.php">registriere Dich hier!</a>
 </div>
</form>
Wie Du siehst, fügt PHP direkt nach dem <form>-Tag ein <input type="hidden"> mit der Session-ID an. Nach XHTML 1.0 Strict darf einem <form> aber kein direktes <input>-Tag folgen, und der Validator spuckt folgende Meldung aus:
document type does not allow element "input" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag
 
Hi,

ja da hab ich wohl was falsch verstanden. Dann hab ich mir die Session-Referenz (http://de.php.net/manual/de/ref.session.php). Dort steht bereits die Lösung für dein Problem:
url_rewriter.tags strin url_rewriter.tags bestimmt, wenn Unterstützung für transparente SID aktiviert ist, welche HTML-Tags so umgeschrieben werden, dass sie die Session-ID beinhalten. Grundeinstellung a=href,area=href,frame=src,input=src,form=fakeentry,fieldset=
Anmerkung: Wenn Sie XHTML-konform sein wollen, müssen Sie den form-Eintrag entfernen und Ihre Formularfelder zwischen <fieldset>-Tags setzen.

PS: Willkommen im Forum
 
Hallo,

und vielen Dank für die schnelle Hilfe! :)
Jetzt muss ich nur noch zusehen, in wie weit ich bei meinem Hoster was an der php.ini verändern kann...
 
Und noch was gelernt, Danke :)
Hab die Änderung an den url_rewriter.tags gerade ausprobiert und bin zufrieden - "This Page Is Valid XHTML 1.0 Strict!"
 
Zurück