Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesje vs validator xhtml
Forum PHP.pl > Forum > PHP
slash^
Nie wiedzialem, czy temat zalozyc na forum php, czy XHTML, ale ostatecznie dalem go tu smile.gif

Otoz mam cos takiego, robie na stronie session_start(), wszystko ladnie, pieknie dziala dopuki nie przepuszcze strony przez http://validator.w3.org, wyskakuje mi wtedy takie cos:

Kod
   1.  Line 54, column 133: 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



  ...="5aa71d8d0e78b161e7762b65af3b80b6" />

                                          ^


Linia ta, to tworzona w formularzu opcja <input hidden> z ID sesji do php, nie wiem czemu, ale validator uznaje to jako blad....

wie ktos moze jak to naprawic?
czachor
tu pisze, że zapomniałeś o czymś :wink: na pewno wszystko masz w kodzie OK? wywal ten fragment i zobacz czy będzie w porządku
..i raczej dział XHTML smile.gif
slash^
Widze, co tam jest napisane. Problem w tym, że ta linia 54 wyglada tak:

Kod
  54:    <form style="margin: 0px" method="post" action=""><input type="hidden" name="PHPSESSID" value="58ecc1b68f25a99f344f17948280a4d0" />


Ta opcja hidden jest dodawana automatycznie i nie mam co z nia zrobic, a w walidatorze jest to bład!

Chodzi mi raczej o jakąs komende typu:
Kod
ini_set('arg_separator.output', '&amp;');

ale do formularzy...
stoprocent
[php:1:f3c314ed98]<?php
ini_set("url_rewriter.tags", "a=href,area=href,frame=src,input=src,form=action");
?>[/php:1:f3c314ed98]
hawk
To nie ma nic wspólnego z identyfikatorem sesji.
Dopuszczalną zawartością znacznika <form> są elementy blokowe. Takie jak walidator ci napisał. Wszystko inne - a zatem również znacznik <input> jest zabronione. <input> należy zawrzeć w jakimś elemencie blokowym, np <div> lub <p>.

I to nawet nie XHTML, w HTML też tak od zawsze było, tylko przeglądarki zlewały sobie takie reguły, a walidator trzyma się standardu.

Temat powinien być na forum XHTML.
stoprocent
W tym przypadku jest inaczej , pozniewaz php dodaje <input > hidden zaraz po <form> i nie ma mozliwoscui zawzec pola z sesja np w p albo w divie mozna natomiast zrobic tak aby PHPSESSID przekzywany byl przez formularz w inny sposob ,
zamiast pola input przekazuje dodajac zmianna do strony podanej w action w formularzu , przyklad <form action="strona.php?PHPSESSID=blablabla">
Mialem dzis z tym problem i dosc dlugo szukalem tego , rozwiazzanie znalazlem na stronach php . Ten motyw z inputem jest jako bug na php.net i w nowszych wersjach php jest juz to zmienione ponoc .
hawk
Fakt, trochę się php rozpędza smile.gif.
Ale gdyby ten <input> wstawić ręcznie?
[php:1:85439e4bc8]
<form name="..." action="..." method="post">
<div>
<input type="hidden" name="<?php echo session_name();" value="<?php echo strip_tags(SID); ?>"/>
</div>
</form>[/php:1:85439e4bc8]
POST jest lepszy niż GET :wink:
dr_bonzo
Cytat
W tym przypadku jest inaczej , pozniewaz php dodaje <input > hidden zaraz po <form> i nie ma mozliwoscui zawzec pola z sesja np w p albo


Przeciez morzesz zawrzec CALY formularz w <p> lub <div>

Kod
<div>

<form>

...</form>

</div>
stoprocent
Validator uzna to za blad , pozniewaz <form > powinien byc poza wszystkim .

@hawk: to nic nie da bo php i tak wstawi inputa bede 2 w takim wypadku .
hawk
Cytat
@hawk: to nic nie da bo php i tak wstawi inputa bede 2 w takim wypadku .

Wiem. Tzn niezleżnie od tego czy wstawiamy własnego inputa, czy doklejamy zmienną GET, trzeba tego domyślnego inputa wyłączyć jak opisałeś.
stoprocent
Jak zmineisz tak jak ja podalem to powinien przesylac SID przez parametr w linku i nie tworzyc juz inputa , choc jesli to nie poskutkuje i nie zalezy ci na wysylaniu ID sesji przez formularz to mozesz wogole to wylaczyc .
[php:1:f4d15a0953]<?php
ini_set("url_rewriter.tags", "a=href,area=href,frame=src,input=src");
?>[/php:1:f4d15a0953]
usuwajac form=action , ja tak zorbilem i hula .
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.