Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Cache
Forum PHP.pl > Forum > PHP
spenalzo
Podczas wypełniania formularza sprawdzana jest poprawność wypełnienia pól. Jeżeli jakieś pola są puste, to użytkownik dostaje link do cofnięcia się (poprzez JS). I tutaj jest problem: mimo że nie wysłałem nigdzie nagłówków o cache'u a mimo to przeglądarka pokazuje, że strona wygasła... Co z tym zrobić?

Dodam, że korzystam z IE 6.0
lark
Ja to robię tak...
[php:1:ad16090aa4]<?php
//Obsługa formularza, jeśli go zatwierdzono
if(eregi ("^[[:alnum:]]+$", $HTTP_POST_VARS[author])) {
$a = TRUE;
} else {
$a = FALSE;
print("Proszę podać swoje imię, ewentualnie nick.<BR>");
}

//Sprawdzenie czy użytkownik wprowadził adres email w poprawnym formacie
if(eregi("^([[:alnum:]]|_|.|-)+@([[:alnum:]]|.|-)+(.)([a-z]{2,4})$", $HTTP_POST_VARS[email])) {
$b = TRUE;
} else {
$b = FALSE;
print("Proszę wprowadzić poprawny adres e-mail.<BR>");
}

//Jeżeli dane spełniają; wszystkie kryteria zarejestrowananie nowego użytkownika
if($a AND $cool.gif
{

?>[/php:1:ad16090aa4]

I jak delikwent nie wypełni pola, lub wypełni źle, to również cofam go przez java script:history.back() i działa jak złoto. Pola wypełnione nadal są wypełnione. I nic nie wygasa. Acha używam tylko Mozilli, ale wątpię aby to miało jakieś znaczenie.
rzseattle
jesli w adresie URL masz ?zmienna=costam to przegladarka uznaje strone za potrzebujaca odswiezenia do poprawnego dzialania.

najprostszy sposob na rozwiazanie problemu to w js napisac cos co sprawdzi ci poprawnosc formularza na miejscu bez przekierowywania
np cos takiego
Kod
function sprawdz(form)

{

var i;

for (i=0;i<form.length;i++)

{

  if (form.elements[i].type=="text")

  {

   if(form.elements[i].value=="")

   {

    return false;

   }

  }

}

}
spenalzo
No tak jak napisałem, używam javascriptu a strona wygasa. Należy zauwzyć także, że jeżeli jest to wina IE 6.o to jest problem bo około 30% ludzi używa tej wersji.

Ale problem rozwiązałęm już - zapisuję całe dane w sesji, cofam użytkownika normalnym linkiem i wklejam tekst do formularza. Tzn. nie napisałem jeszcze tego, ale raczej będzie działać.
lark
Cytat
jesli w adresie URL masz ?zmienna=costam to przegladarka uznaje strone za potrzebujaca odswiezenia do poprawnego dzialania.


Bzdury opowiadasz... normalnie bzdury.
Poza tym sprawdzenie formularza przez JS to lekkie nieporozumienie.
spenalzo
Cytat
jesli w adresie URL masz ?zmienna=costam to przegladarka uznaje strone za potrzebujaca odswiezenia do poprawnego dzialania.

No faktycznie mam - ?krok=2. Ale czy tak jest? Chyba że w IE 6.0 bo np. w Mozilli czy IE 5.0 takie formularze działały OK.
e-Gandalf
Sprawdzenie formularza przez JS to moim zdaniem obowiazkowa rzecz w kazdym formularzu. Dzieki temu uzytkownik bez potrzeby tysiecy przeladowan wie gdzie popelnil blad.

Jednoczesnie, obowiazkowo TRZEBA sprawdzic tez forumlarz po stronie serwera, poniewaz Rule Nr1 - Never trust the User.
Co do cofania, to zamiast cofac, mozna wymusic reload... wowczas na pewno przeladuje.
lark
Cytat
No faktycznie mam - ?krok=2. Ale czy tak jest? Chyba że w IE 6.0 bo np. w Mozilli czy IE 5.0 takie formularze działały OK.


addcomments.php?id=9 - taki URL mam skrypcie który sprawdza formularz.
Sprawdziłem właśnie w IE6 nie wygasa strona, a sprawdzam tym sposobem co opisałem. Powrót przez JS jest błyskawiczny, a formularz sprawdzam tylko Server-Side.
spenalzo
Sprawdziłem jeszcze raz i wygasa - mogę Wam zrobić AVIka ze zrzutem ekranu :-D
rzseattle
Cytat
Poza tym sprawdzenie formularza przez JS to lekkie nieporozumienie.

a czego ci brakuje w takiej weryfikacji - wyrażenia regularne są i czego więcej do szczescia trzeba. Oczywiście jezeli chcesz porównać dane z forma np z danymi z bazy danych to juz nie js no ale wtedy mozesz zrobic zwyklego linka a values do inputow wyslac sesja.
Js ma ta zalete ze mozna w nim wychwycic wszystkie bledy w stylu "podaj email: hdssdsk." itd co jest bardzo wygodne i dla ciebie (nie zasmiecasz kodu php pobiezna weryfikacja) i dla usera (szybka akcja, brak przeladowania, focus na zle wypełnione pole)

Wiec czemu mowisz ze to nieporozumienie?questionmark.gif

Cytat
Bzdury opowiadasz... normalnie bzdury.


Fakt nie jestem pewien (opisałem jedynie własne obserwacje) no ale moze ktos w koncu definitywnie wyjasni jak z tym jest?questionmark.gif
spenalzo
Dobra, chłopcy, już rozwiązałem swój problem :-) Nie zagryzajcie się!
rzseattle
To teraz moze powiiesz jak go rozwiazales?
lark
Cytat
Wiec czemu mowisz ze to nieporozumienie?questionmark.gif


Chociażby dlatego, że user sobie może wyłączyć w przeglądarce obsługę JS i cała Twoja robota idzie na marne.
spenalzo
Cytat
Ale problem rozwiązałęm już - zapisuję całe dane w sesji, cofam użytkownika normalnym linkiem i wklejam tekst do formularza. Tzn. nie napisałem jeszcze tego, ale raczej będzie działać.


Cytat
Chociażby dlatego, że user sobie może wyłączyć w przeglądarce obsługę JS i cała Twoja robota idzie na marne.

Właśnie dlatego nie mogę się przekonać do JS.
e-Gandalf
Cytat
a czego ci brakuje w takiej weryfikacji - wyrażenia regularne są i czego więcej do szczescia trzeba.
[..]
Wiec czemu mowisz ze to nieporozumienie?questionmark.gif


Bo JSa nie mozesz byc pewien. JS jest dla uzytkownika, ale nie mozesz oprzec sie wylacznie na JS sprawdzajac czy email jest prawidlowym adresem. Albo czy pole name nie jest puste.

Cytat
Fakt nie jestem pewien (opisałem jedynie własne obserwacje) no ale moze ktos w koncu definitywnie wyjasni jak z tym jest?questionmark.gif


Przegladarka ZAWSZE zaladuje strone w dwoch wypadkach:

1) reload
2) nowy URL (czyli np. mozemy dawac losowa zmienna w URLu zawsze inna...)

Reszta zalezy od przegladarki - czasem wystarczy ustawic META no-cache, czasem nie...

Jesli np. wysylasz formularz i cos nie poszlo, warto zrobic z poziomu php reload ze wskazaniem na adres formularza
spenalzo
Dodam jeszcze, że przy kliknięciu "Back" czy "Forward" strona również wygasa i to że linki są w postaci strona.php/zm1/zm2/.
rzseattle
Cytat
Chociażby dlatego, że user sobie może wyłączyć w przeglądarce obsługę JS i cała Twoja robota idzie na marne.

w sumie to tu masz racje, ale i tak mysle ze wiekszosc z nas nie musi sie obawiac ze ktos wylaczy js bo wtedy i tak najwyzej co moze zrobic to podac dane a nie uzyskac dostep do danych (identyfikacja zawsze i tak jest na servie) a js jest bardzo wygodny (jak juz wczesniej wspominalem) i jak dla mnie to taki system ma o wiele węcej plusow niz minusow pozatym mozna zawsze zrobic weryfikacje i w php i w js
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.