[PHP] verpest XHTML bij geen cookies?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • RwD
  • Registratie: Oktober 2000
  • Niet online

RwD

kloonikoon

Topicstarter
Ik ben bezig met een kleine persoonlijke website die als klein referentie kader moet dienen voor wat ik allemaal wel en niet kan op webontwikkeling gebied. Dus daarom zou ik het leuk vinden als al mijn pagina's op die website ook valideren bij de W3C validator!

Nu heb ik alle foutjes die de validator bespeurde er uit gehaald op een foutje na...
Zoals het er uit ziet voegt PHP een extra input element toe aan een form op het moment dat de client geen cookies accepteerd. Op het einde van regel 9 van de onderstaande code is dit zichtbaar waar een input element voor PHPSESSID zomaar is toegevoegd; ondanks dat ik dit element er reeds handmatig in heb staan!!! (aangepaste html voor weergave hier overigens).
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="nl"> 
<head> 
<title>Referentie - login</title> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
</head> 

<body>
<form id="loginForm" method="post" action="login.php"><input type="hidden" name="PHPSESSID" value="b9b0ac914032217a63b5ca6a1bd8b3be" />
<fieldset>
   <input type="hidden" name="PHPSESSID" value="b9b0ac914032217a63b5ca6a1bd8b3be" />
....
</fieldset>
</form>
</body>
</html>

Normaal gesproken dient een input element in een block level element te staan zoals "fieldset" welke ik gebruik. Maar PHP voegt het element ongevraagd meteen na het form element!!

Ik heb reeds geprobeerd PHP dit niet te laten doen als de client zijde geen cookies ondersteund (jammer maar helaas voor hen dan!) via "ini_set('session.use_trans_sid','0');", maar dit heeft niet moegen baten.

Weet iemand wat ik er aan moet doen zodat het document valideerd/PHP dat element niet meer toe voegt?

[ Voor 28% gewijzigd door RwD op 08-02-2006 14:29 . Reden: Topic titel moet "PHP verpest XHTML bij geen cookies?" zijn ipv "verpast" ]


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 09-06 21:17
Dit is een instelling in je PHP ini, force_session_cookies, meen ik.

Wanneer PHP merkt dat de client geen cookies accepteerd worden hidden form-velden en URL-rewriting gebruikt om de sessie ID toch mee te kunnen geven. Met bovengenoemde parameter zet je dit uit.

//Edit
De parameter heet session.use_only_cookies en kun je als het goed is ook vanuit een htacces-bestand alleen voor een bepaalde mapstructuur toepassen, of via ini_set() alleen voor die specifieke pagina.

Zie http://nl2.php.net/session en kijk ook eens naar 'session.use_trans_sid'. Deze moet volgens mij namelijk aanstaan indien je bovenstaande uitzet, om zelf wel nog een form-veld te kunnen maken voor de sessie ID.

[ Voor 49% gewijzigd door frickY op 08-02-2006 14:37 ]


Acties:
  • 0 Henk 'm!

Anoniem: 88197

ondanks dat ik dit element er reeds handmatig in heb staan!!!
Dit moet je er echt niet handmatig gaan inzetten... Dit kun je idd zoals in reply 1 staat wel uitzetten :)

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 16-06 15:56

André

Analytics dude

W&G -> P&W

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 07:23
terug open. :)

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-06 16:30

Bosmonster

*zucht*

Verder kun je het karakter & in je php/apache settings ook ergens vervangen met &_amp; (zonder underscore, gaar parser ding hier)

Dit lost het probleem op een nette manier op als je toch met trans_sid wil/moet werken.

[edit]
zie onder -> arg_seperator.output dus :)

[ Voor 38% gewijzigd door Bosmonster op 08-02-2006 15:18 ]


Acties:
  • 0 Henk 'm!

  • RwD
  • Registratie: Oktober 2000
  • Niet online

RwD

kloonikoon

Topicstarter
Ik kan helaas niet aan php.ini of aan de apache config. Echter het probleem is met enig zoekwerk toch nog opgelost! 1 van de twee regels hier beneden had ik al; die is om van & -> &amp; te maken. De tweede regel is de regels die het probleem oplost:
PHP:
1
2
ini_set('arg_separator.output','&amp;');
ini_set('url_rewriter.tags', 'a=href,area=href,frame=src,input=src,fieldset=');
Anoniem: 88197 schreef op woensdag 08 februari 2006 @ 14:35:
[...]

Dit moet je er echt niet handmatig gaan inzetten... Dit kun je idd zoals in reply 1 staat wel uitzetten :)
Ik had hem er handmatig in gezet omdat ik op dat moment hoopte dat php zou kijken of het element al toegevoegd was. Ik was gewoon positief bezig :P

[ Voor 43% gewijzigd door RwD op 08-02-2006 15:26 ]

Pagina: 1