Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V  < 1 2 3 >  
Reply to this topicStart new topic
> odświeżanie strony, zapis
skowron-line
post 29.03.2006, 10:38:41
Post #21





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


To ma byc tak:
wpisujesz jakis text i naciskasz submit wtedy on wyciaga ostatni wpis porownuje go z tym co wpisales jesli jest inny to zapisuje.
Potem jak nacisniesz F5 to znow sprawdza i jesli jest taki sam to go odrzuca.

P.S trzeba dopisac jeszcze jesli pola sa puste zeby nie zapisywal do bazy

Ten post edytował skowron-line 29.03.2006, 10:39:41


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
nospor
post 29.03.2006, 10:41:49
Post #22





Grupa: Moderatorzy
Postów: 34 759
Pomógł: 5780
Dołączył: 27.12.2004




Cytat
wpisujesz jakis text i naciskasz submit wtedy on wyciaga ostatni wpis porownuje go z tym co wpisales jesli jest inny to zapisuje.
Ale Twoj skrypt co pokazales, tego nie realizuje. Po wcisnieciu submita, ty ostatni wpis do bazy zapisujesz w polu ukrytym, a potem sprawdzasz, czy to pole ukryte zgadza się z tym co wpisales. Tylko sęk w tym, ze zmienna pola ukrytego, nie jest jeszcze utworzona... Nie po pierwszym submicie. A po refreshu tez nie będzie, gdyz refresh wysyla jeszcze raz poprzednio wyslany formularz


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
skowron-line
post 30.03.2006, 10:16:35
Post #23





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


nospor zwracam honor przeanalizowalem ten skrypt i nie dziala jak nalezy.

Ten post edytował skowron-line 30.03.2006, 10:16:51


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Krisu
post 31.03.2006, 19:55:20
Post #24





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

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


Da sie zrobic jakos tak, zeby dodaj i zapisz bylo w jednym pliku??
Jak wtedy mam uzywac zmiennych?

  1. <form method="post" action="dodaj.php">
  2. <input class="input" name="pseudo"><br>
  3. <textarea rows="3" cols="28" name="komentarz"></textarea>
  4. <center><input class="input" type="button" value="komentuj" onclick="location='index.php'" /></center>
  5. </form>

  1. <? 
  2. $komentarz = $_POST["komentarz"];
  3. $pseudo = $_POST["pseudo"];
  4. ?>
  5. <?
  6. $plik="../txt/turniej/komentarz.txt";
  7. $text="$komentarz||$pseudo|| \n";
  8. $temp=implode(file($plik));
  9. $fp=fopen($plik ,"w");
  10. fwrite($fp ,$text);
  11. fwrite($fp ,$temp);
  12. ?>


Ten post edytował Krisu 31.03.2006, 20:21:44
Go to the top of the page
+Quote Post
tes
post 11.04.2006, 01:21:35
Post #25





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 23.06.2004
Skąd: Rzeszów

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


nospor, a mógłbyś napisać jak potem z tej sesji wyrzucasz indentyfikator tak aby było gotowe na kolejne użycie formularza ?


--------------------
czemuja?
Go to the top of the page
+Quote Post
nospor
post 11.04.2006, 06:47:36
Post #26





Grupa: Moderatorzy
Postów: 34 759
Pomógł: 5780
Dołączył: 27.12.2004




@tes ja go nie wyrzucam. Jak pisalem, generuję unikalne identyfikatory. Przy kolejnym uzyciu formularza, generowany jest kolejny unikatowy identyfikator smile.gif


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pilsener
post 19.04.2006, 08:31:30
Post #27





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Porównać IP gościa i czas - moim zdaniem najlepszy i uniwersalny sposób.

$_SERVER['REMOTE_ADDR'] - pobiera IP gościa
time() - czas

Można zapisać IP i czas w bazie txt/sql (dużo baz standardowo zapisuje IP i czas dodania, wtedy już jesteśmy w domu), lub przejściowo w zmiennych.

Potem wystarczy użyć prostego warunku IF - jeśli IP są różne to wysyła, jeśli identyczne to liczy różnicę czasów, jeśli różnica czasów jest mniejsza niż np. 60 sekund to nie pozwala wysłać.
Go to the top of the page
+Quote Post
free
post 16.11.2006, 13:44:16
Post #28





Grupa: Zarejestrowani
Postów: 269
Pomógł: 0
Dołączył: 6.02.2006

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


Ja stosuje prosta metode, poprostu za pomocą JS lub php przenosze gościa do nowej strony z podziekowaniami lub z wyswietleniem wynikow /w zaleznosci od potrzeb/.
JS:
  1. <?php
  2. ...
  3. {
  4. echo '<script language="JavaScript">window.location="Twojastrona.php";</script>';
  5. }
  6. ...
  7. ?>


php:
  1. <?php
  2. adres('adres.php');
  3. ?>

gdzie funkcja adres ma postac:
  1. <?php
  2. function adres($url) {
  3. if (!headers_sent()) {
  4. header('Location: http://' . $_SERVER['HTTP_HOST'] .
  5.  dirname($_SERVER['PHP_SELF']) . '/' . $url);
  6. } else {
  7. die('Nie mogę przekierować. Wysłano już nagłówki (wyjście).');
  8. }
  9. }
  10. ?>
Go to the top of the page
+Quote Post
Cypherq
post 19.04.2007, 14:42:07
Post #29





Grupa: Zarejestrowani
Postów: 181
Pomógł: 9
Dołączył: 28.08.2006
Skąd: Katowice

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


O rany, zaczęliście całą religię do tego problemu dobudowywać tongue.gif Ja używam czegoś co jednocześnie jest filtrem antyspamowym. Tworzę przy dodawaniu komentarza cookie z czasem dodania ostatniego komenta i później przy dodawaniu następnego, sprawdzam kiedy dodany był poprzedni.

Chyba, że czegoś nie doczytałem i problem rzeczywiście wymaga większego sprytu? ;>


--------------------
"Zero 'errorów' nic nie oznacza. Walidator sprawdza tylko składnię. Kod strony jest jak psu z d**y wyjęty i to, że walidator świeci się na zielono nie oznacza, że ta kupa jest ładna" - mike
Go to the top of the page
+Quote Post
Sedziwoj
post 19.04.2007, 15:41:41
Post #30





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Może większego nie, ale jak ja szybko piszę i odpowiadam na wiele postów, to musiał byś wiedzieć czy to było w tym dziale i czy to ten sam post czy następny...
Czasem jest szybka wymiana zdań i ciężko ustalić czy się coś dodaje drugi raz czy pierwszy.


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
l0co
post 6.09.2007, 12:58:17
Post #31





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 18.08.2007
Skąd: Bydgoszcz

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


Niepotrzebnie zakładałem nowy wątek - więc dopisuję tu swoje trzy grosze na temat techniki z headerem - czyli Redirect After Post pattern (w linku).

Rozwiązanie które proponuję nie wymaga żadnego kombinowania z "natywnym" kodem aplikacji ani z kombinowaniem na bazie danych. Zadziała dla wszystkich skryptów aplikacji napisanych wcześniej i nie będzie też trzeba wymyślać nowych sposobów zabezpieczania dla kolejnego formularza - skryptu.


--------------------
l0co
Go to the top of the page
+Quote Post
WebCM
post 30.12.2007, 14:52:26
Post #32





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

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


Jeżeli chcemy tylko ochronić skrypt przed przypadkowym wciśnięciem F5, dobrym rozwiązaniem jest wysyłanie formularzy za pomocą AJAX. smile.gif W wyznaczonym miejscu (np. między nawigacją) otrzymujemy taki wynik (np. komentarze, informację o przebiegu akcji, wypełniony formularz + błędy do poprawy), jaki otrzymalibyśmy, wysyłając je tradycyjnie. Oczywiście kod JS powinien nadpisywać atrybuty <form> lub submit i przejąć kontrolę nad formularzem.

Ten post edytował WebCM 30.12.2007, 14:54:37


--------------------
„Jesteśmy różni, pochodzimy z różnych stron Polski, mamy różne zainteresowania, ale łączy nas jeden cel. Cel ten to Ojczyna, dla której chcemy żyć i pracować.” Roman Dmowski
Go to the top of the page
+Quote Post
nospor
post 30.12.2007, 14:57:21
Post #33





Grupa: Moderatorzy
Postów: 34 759
Pomógł: 5780
Dołączył: 27.12.2004




źle.
Ajax/js nie jest rozwiązaniem na problemy. Owszem, ma to wspomóc ale nie zastąpic. Zabezpieczenia po stronie serwera muszą być, niezależnie czy wspomagasz się js/ajax czy nie. Bo jak ktoś sobie wyłączy js to albo twoja strona nie bedzie dla niego dostępna, albo co gorsza - Twoja strona będzie bezbronna bo nie pomyslales ze ktos moze nie uzywac js.


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
be2k
post 26.01.2008, 12:50:49
Post #34





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 14.07.2006

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


to moze i ja dorzuce swoje 3 grosze.

# rozwiazanie w stylu js/ajax jest moim zdaniem chybione, bo po co wogole angazowac ajaxa do rzeczy tak banalnej jak wyslanie formularza.

# rozwiazanie z dodawaniem ukrytego pola do formularza po kliknieciu submit w formularzu tez nie bedzie dzialalo, bo klikniecie F5 powoduje wyslanie ponownie TEGO SAMEGO formularza, wiec nie zostanie wyslany nowy z nowo wygenerowanym polem - a chodzi tutaj chyba o zabezpieczenie przez refresh'em a nie ponownym klikaniem w submit.
kolega wczesniej podawal przyklad:
  1. <?php
  2. if(isset($_POST['AddReply']) && !isset($_POST['Re'])) $class->AddReply();
  3. ?>

a w forumularzu:
  1. <form action="" method="post">
  2. <?php if(!empty($_POST)) echo '<input name="Re" type="hidden" value="1">'; ?>
  3. <input name="AddReply" type="hidden" value="1">
  4. ...
  5. </form>

i tak jak napisalem to oczywiscie nie dziala, bo klikniecie F5 (refresh) nie powoduje ponownej generacji formularza czyli pole
  1. <input name="Re" type="hidden" value="1">

nie zostanie wyslane z formularzem

# rozwiazanie z zapisywaniem IP oraz czasu i sprawdzanie czy nowy post jest z tego samego IP co ostatni, jesli tak to ile minelo czasu - jest rowniez niepoprawne. po pierwsze co jesli dodaje dwa posty w roznych topicach w bardzo krotkim czasie? z tym oczywiscie mozna sobie poradzic, bo mozna sprawdzac czy nowy post jest z tego samego topicu czy nie, ale na jakiej zasadzie ma byc liczony czas po ktorym mozna ponownie dodac posta? 60 sekund jak zaproponowal kolega wyzej? to klikne F5 po 65 sekundach. 120 sekund? to klikne F5 po 125 sekundach? 240 sekund? itd. To rozwiazanie moze byloby i dobre, ale na calkowicie inny problem. Na spamerow, trolli czy inne typu wynalazki, czyli zablokowanie mozliwosci wysylanie duzej ilosci postow przez tego samego uzytkownika w krotkim czasie. Ale bynajmniej nie jest to rozwiazanie na refresh o ktory sie w tym topicu rozchodzi.

# rozwiazanie z przechwytywaniem wyjatkow z bazy owszem dziala, ale tylko jesli zapisujemy tresc formularza do bazy. a co jesli ma byc zapisywany do pliku, wyslany mailem, czy cokolwiek innego ma sie z nim dziac?

# rozwiazanie z dodawaniem atrybutow UNIQUE do pol bazy zadziala jak wyzej - tylko w przypadku, gdy dane z formularza maja wyladowac w bazie.



Wiec jak to najlepiej zrobic i tak zeby dzialalo zawsze?

# jednym z rozwiazan jest to o czym zapewne wiekszosc z was wie. czyli przekierowanie w pliku do ktorego odwoluje sie akcja formularza.
jesli mamy formularz:
  1. <form action="wykonaj_akcje.php">
  2. ...
  3. </form>


to w pliku wykonaj_akcje.php zapisujemy:
  1. <?
  2. //jakies akcje
  3. header("Location: akcja_wykonana.php")
  4. ?>


# drugie rozwiazanie, ktore ja osobiscie najczesciej stosuje, jest to o czym pisal nospor.
w momencie generowania formularza generujemy pole typu "hidden" z jakims hashem/tokenem czy jak tam kto woli nazywac. ma to byc jakis unikalny ciag znakow/liczb:
  1. <input type="hidden" id="hash" name="hash" value="<?=generateHash();?>">
  2. <?php
  3. function generateHash()
  4. {
  5. return md5(time() * rand()); //samo time() nie wystarczy, gdyz jego wartosc zmienia sie co sekunde a to za malo
  6. }
  7. ?>


wartosc tego pola zapisujemy do sesji, do cookie, do pliku albo do bazy - jak komu w danej chwili wygodniej/jakie ma mozliwosci.
w przypadku zapisu da bazy tabela z postami bedzie miala dodatkowe pole "hash". po kliknieciu F5 (refresh) zostanie wyslany ten sam formularz, czyli dokladnie z tym samym hashem - nie bedzie on od nowa wygenerowany. teraz wystarczy sprawdzic czy dany hash mamy juz w sesji, w bazie, w cookie, w pliku czy gdziekolwiek indziej i problem z powtorzeniem zalatwiony
i tutaj juz nie chodzi o sprawdzenie czy to ten sam uzytkownik, to samo IP, ponownie ten sam tekst czy cokolwiek innego - sprawdzamy dokladnie to o co chodzi - czy jest proba ponownego wyslania tego samego formularza.
Go to the top of the page
+Quote Post
mroczek
post 9.11.2008, 13:23:14
Post #35





Grupa: Zarejestrowani
Postów: 18
Pomógł: 4
Dołączył: 13.03.2007

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


Jeżeli chcemy zrobić to za pomocą sesji to sugerując się wskazówkami be2k możemy to zrobić w następujący sposób:

Dodajemy wpis do formularza pamiętając, że same wywołanie funkcji nie wyświetli danych. Musimy dodać echo:
  1. <input type="hidden" id="hash" name="hash" value="<?php echo generateHash();?>">


Funkcja generateHash():
  1. <?php
  2. function generateHash()
  3. {
  4. return md5(time() * rand());
  5. }
  6. ?>


A teraz nasz plik php, który odbiera dane z formularza:
  1. <?php
  2. if (!$_SESSION['adduser'] || $_POST['hash'] != $_SESSION['adduser'] ){
  3. $_SESSION['adduser'] = $_POST['hash']; //dodajemy zmienną sesyjną adduser
  4. //wszystko co ma się wykonać po prawidłowym wysłaniu formularza
  5. }
  6. else
  7. {
  8. echo "Ten formularz był już wysłany";
  9. }
  10. ?>


Po odświeżeniu strony jeszcze raz zostaną wysłane wszystkie zmienne z formularza do skryptu. Jeżeli zawartość sesji adduser już istnieje i jest identyczna jak zawartość $_POST['hash']; tzn. że ten formularz był już wysłany.


--------------------
spaceofcode.blogspot.com
"Wszyscy wiedzą, że czegoś nie da się zrobić, aż znajduje się taki jeden, który nie wie, że się nie da, i on to robi."
- Albert Einstein
Go to the top of the page
+Quote Post
mlattari
post 27.02.2009, 01:31:26
Post #36





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

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


hmm... najprościej to chyba przed przetwarzaniem i zapisem danych sprawdzić czy np.
  1. <?php
  2. if($_SESSION['poszłoooo']=='0') {}
  3. ?>

no i oczywiście po zapisaniu danych do bazy ustawiasz $_SESSION['poszlooo']='1' a jak już będzie bezpiecznie to znów zmieniasz wartość na '0' czyli można wysyłać formularz :-)
A jeżeli np. ma być jeden komentarz na stronkę przy każdej sesji to można

  1. <?php
  2. if (!$_SESSION[$_SERVER[PHP_SELF]]) { } else {}
  3. ?>


czy coś podobnego :-)

Pozdrawiam

Ten post edytował mlattari 27.02.2009, 01:39:42
Go to the top of the page
+Quote Post
piotr94
post 12.11.2009, 16:39:52
Post #37





Grupa: Zarejestrowani
Postów: 331
Pomógł: 30
Dołączył: 11.11.2008
Skąd: Kraków

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


u mnie problem znika wraz z samym tokenem - za każdym razem po wysłaniu skryptu zapisany wcześniej klucz z obrazka antyspamowego jest czyszczony do postaci '', wtedy przy naciśnięciu F5 skrypt wyświetli komunikat z prośbą o przepisanie poprawnego kodu z obrazka, a to oznacza że za pomocom F5 się nie będzie dało zdublować wpisu. Druga rzecz to oczywiście sesja + adresy IP, ale o tym już pisano wyżej ;-)


--------------------
http://www.piotr94.net21.pl/ - wykonanie stron i serwisów internetowych
Jeśli moje wypowiedzi były dla Ciebie pomocne, kliknij "Pomógł" i odwdzięcz się ;)
Go to the top of the page
+Quote Post
Thorang Hoog
post 17.12.2009, 23:28:55
Post #38





Grupa: Zarejestrowani
Postów: 41
Pomógł: 9
Dołączył: 8.02.2009

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


Hmm jak tak czytam wasze wypowiedzi to o mało nie popadam w paranoję blinksmiley.gif "Czy aby na pewno dobrze to rozwiązałem". Zapisanie w sesji informacji w stylu $_SESSION['poszło']==true sprawdza się jeśli masz tylko jeden formularz a i też nie zawsze bo wystarczy otworzyć stronę z formularzem w nowej zakładce i zmienna zostanie wyczyszczona.
Jak już doszliście do wspólnego wniosku jeśli dane nie są wysyłane do bazy danych sprawa się komplikuje. Pomyślałem więc kiedyś, że wykonam hash md5 z wysłanych danych przez użytkownika i zapiszę w sesji ale jako jedną z wartość tablicy winksmiley.jpg
A żeby się nie nazbierało multum kluczy to sesja wygasa po 30 minutach braku aktywności. Czekam na maratończyka co mi serwer zapcha aarambo.gif
Dobre jest też rozwiązanie usera powyżej. Skrypt po odświeżeniu zacznie się domagać prawidłowego klucza z obrazka.
...
Chociaż po otwarciu w nowej zakładce formularza po wypełnieniu tego pierwszego trzeba będzie odświeżać obrazek itp. itd...
Trudno o idioto-odporny program sciana.gif
;P

Ten post edytował Thorang Hoog 17.12.2009, 23:32:49
Go to the top of the page
+Quote Post
andycole
post 1.10.2010, 22:55:14
Post #39





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 14.12.2004

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


Temat trochę leciwy, ale jako że przyklejony to chyba ważny i swoje 5 groszy do niego też wrzucę.

# Zgadzam się z Wami, że JS to nie rozwiązanie. Z problemem musi sobie radzić skrypt po stronie serwera na wypadek jeżeli JS będzie wyłączone.
# Co do unikalności wpisów w bazie. Jest to dodatkowy indeks, dodatkowe obciążenie przy jego przebudowywaniu (pomijając już kwestię miejsca na dysku).

Osobiście korzystam z przekierowania zaraz po wysłaniu formularza. Wszelkie komunikaty o powodzeniu/błędach trzymam w jednej zmiennej sesyjnej.
Go to the top of the page
+Quote Post
radziopoke
post 7.02.2011, 17:13:44
Post #40





Grupa: Zarejestrowani
Postów: 125
Pomógł: 14
Dołączył: 2.06.2010

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


Odkopię trochę temat bo i ja zacząłem poszukiwać sposobu na zablokowanie ponownego wysłania danych. Więc opowiem o swoim sposobie jak wykryć, czy strona została odświeżona lub czy ktoś wycofał się na stronę, która również chce ponownie wysłać dane bo takie przypadki wg mnie zdarzają się częściej.
No to to rzeczy:
2. Kolejne to sprawdzam czy dane ciasteczko jest takie same jak zmienna przesłana przez formularz
Kod
<?php
if (!isset($_COOKIE['krok'])) //sprawdzam czy ciasteczko kontrolujące istnieje
{
  setcookie('krok', 0, time()+259200); //jeżeli nie przypisuje mu wartość 0 i ustawiam tam na jakiś okres czasu )czym dłużej tym lepiej)
}
//jeżeli formularz został wysłany otrzymamy zmienną $_POST['krok']
if ($_COOKIE['krok']==$_POST['krok'])
{
  $refresh='nie';//jeżeli zmienna z formularza jest równa ciasteczku oznacza to, że nie było odświeżenia strony
  setcookie('krok', $_POST['krok']+1, time()+259200);i ustawiamy wartość ciasteczka o 1 większą
}
else
{
  $refresh='tak';
}
?>
... //jakiś tam kod html
<?php
  if ($refresh=='nie') //strona nie była odświeżana więc można przesłać dane
  {
    echo 'Przesłane dane: '.$_POST['krok'];
  }
  else
  {
    echo 'strona została odświeżona!!!'; //albo można pominąć blok else
  }
?>

<form action="" method="POST">
<input type="hidden" name="krok" value="'.$_COOKIE['krok'].'">;
<input type="text" name="jakiesdane">
<input type="submit">
</form>
...


Jedno ciasteczko, a może nadać się na kilku podstronach, bo nawet wycofanie się na stronę, która musi przetworzyć dane nic nie da smile.gif
Oczywiście przydało by się by jeszcze strona sprawdzała czy ciasteczka są włączone

ps. jest to skrypt, który sam wymyśliłem bo te sposoby, które podawaliście jakąś mi nie pasowały smile.gif skrypt wpisany tutaj został z lekka okrojony od mojego, wprawdzie mówiąc został napisany od nowa i dlatego jakieś literówki mogą się znaleźć smile.gif

Ten post edytował radziopoke 7.02.2011, 17:14:41
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 22.10.2019 - 00:23