Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Doklejana PHPSESSID - nie XHTML
LamaMASTER
post
Post #1





Grupa: Zarejestrowani
Postów: 160
Pomógł: 0
Dołączył: 27.03.2006

Ostrzeżenie: (0%)
-----


Witam,
Przy używaniu sesji, gdy session_use_trans_sid jest ustawione na on, sesja doklejana jest do linków - wiadoma rzecz. Ta nieszczęsna sesja jednak dokleja się tak:
Kod
&PHPSESSID=4d7cb8abad2943a844c2332734b57f8a

a nie:
Kod
&PHPSESSID=4d7cb8abad2943a844c2332734b57f8a

Dlatego walidator wywala błędy.
Jak zrobić, aby doklejana sesja była poprawna?
Próbowałem:
  1. <?
  2. {kod z sesjami}
  3. $content = ob_get_contents();
  4. $content = str_replace('&PHPSESSID', '&amp;PHPSESSID', $content);
  5. echo $content;
  6. ?>

Ale nie zadziałało, bo sesja jest doklejana już całkiem przy kompilowaniu skryptu. Nie wiem co zrobić. Swoją drogą zauważyłem, że twórcy php nie wiedzą co to XHTML (np. znaczniki FONT w hightlight_string).

Znalazłem następny błąd. Ten głupi php wstawia mi:
Kod
<input type="hidden" name="PHPSESSID" value="6886c6f9a3b7e462f8a3513ce7e203e1" />

W każdym formularzu. Nie miałbym pretensji gdyby nie to, że wstawia mi to zaraz po <form ...>, a tam musi być chociażby div przed tym, żeby byka nie wywaliło. Co na tą głupotę poradzić?

Ten post edytował LamaMASTER 11.07.2006, 21:34:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
hwao
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




  1. <?php
  2. function SessionInput($content) {
  3.  return preg_replace('@<input type="([^"]+)" name="PHPSESSID" value="([^"]+)" />@i', '<fieldset>0</fieldset>', $content);
  4. }
  5.  
  6. ob_start('SessionInput');
  7. ?>
  8.  
  9. To jakis wsciekly input
  10. <input type="hidden" name="PHPSESSID" value="tujestsesja" />

To działa wiec problem musi byc gdzie indziej

Zrób tak:
  1. <?php
  2. function SessionInput($content) {
  3.  
  4. [b]file_put_contents( './dev.txt', $content );
  5. [/b]
  6.  return preg_replace('@<input type="([^"]+)" name="PHPSESSID" value="([^"]+)" />@i', '<fieldset>0</fieldset>', $content);
  7.  }
  8. ?>

I sprawdz czy w tym pliku znajduje sie ten input dodawany przez sesje, jezeli tak to znaczy ze robi ona to po dzialaniu tego skryptu, musisz znalesc miejsce w skrypcie (zapewne destruktor, chocby sesji) ktore wykonywane jest pozniej niz dodawanie przez sesje tego inputa






Chyba znalazlem rozwiazanie - jezeli te podane przezemnie nie skutkuje bedziesz musial przestawic jedna rzecz (podobnie jak z amp'ami).

Kod
[img]file:///C:/DOCUME%7E1/hwao/USTAWI%7E1/Temp/moz-screenshot.jpg[/img][img]file:///C:/DOCUME%7E1/hwao/USTAWI%7E1/Temp/moz-screenshot-1.jpg[/img][img]file:///C:/DOCUME%7E1/hwao/USTAWI%7E1/Temp/moz-screenshot-2.jpg[/img]; The URL rewriter will look for URLs in a defined set of HTML tags.
; form/fieldset are special; if you include them here, the rewriter will
; add a hidden <input> field with the info which is otherwise appended
; to URLs.  If you want XHTML conformity, remove the form entry.
; Note that all valid entries require a "=", even if no value follows.
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="


Czyli musisz dac
  1. <?php
  2. ini_set('url_rewriter.tags', "a=href,area=href,frame=src,input=src,fieldset=");
  3. ?>

Chociaz jak cos jest nie potrzebne to mozna usunac znacznie wiecej (ale generalnie to nie wadzi, poza tym dodawanym inputem)

Chyba juz wszystko jasne? (IMG:http://forum.php.pl/style_emoticons/default/Rkingsmiley.png)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 22:43