ďťż

[HTML] Po naciśnięciu buttona i odświeżanie

       

Podstrony


telcocafe

Mam taki kod na początku skryptu:
$kom = $_POST['kom']; if (!empty($kom)) { // instrukcje } <form action="plik.php" method="post"><textarea rows="10" cols="70" name="kom"></textarea><input type="submit" value="Dodaj"></form>
Czyli jeśli $kom nie jest pusty zostają wykonywane instrukcje. Wszytko OK tylko że jeśli nacisnę odświerz stronę to instrukcje są wykonywane ponownie. Pomyślałem że będe unieważniaj na końcu zmienną $_POST['kom'], więc za instrukcjami daję linijkę unset($_POST['kom']) ale to nic nie daje $_POST['kom']='' również. Próbowałem jeszcze wysyłać przy okazji ukryty input z informacją którą potem sprawdzałem dodatkowo w warunku i zeroałem na końcu, ale to też nic nie daje. Jak mogę to rozwiązać?



Po wykonaniu instrukcji zapisz ciasteczka ważne np 10 min lub ile tam chcesz i za każdym razem sprawdzasz czy istnieje ciasteczko, jeżeli nie to wykonujesz operację.

zamiast
if (!empty($kom))
daj
if (!empty($_POST["kom"]))

loguś: to będzie ten sam efekt...
Ciasteczka, to jest dobry sposób...
Czy to nie jest przypadkiem temat o PHP? :D



Ok dzięki. Ale czy da się w jakiś sposób usunąć zawartość tablicy $POST?

To zależy. Możesz usunąć tak, że dalej w tym samym skrypcie nie będziesz mógł $_POST użyć.

Napisz, co chcesz osiągnąć :)


loguś: to będzie ten sam efekt...
Nie będzie ten sam efekt, a ten co proponuje loguś jest dużo bezpieczniejszy ;) Na niektórych serwerach register globals jest wyłączony :)
@bryn: aaaa, faktycznie, nie zauważyłem :)

Unieważnianie na końcu nic nie da, bo i tak wpierw wykonają się instrukcje od góry ;)

Wyczyszczenie tablicy to chyba powinno zadziałać:
$_POST='';
Użytkownik miszczu49 edytował ten post 19 marzec 2007, 20:51

Na niektórych serwerach register globals jest wyłączony :)
Wyłączone register_globals nie zabrania zrobić $kom = $_POST['kom']; :P

Żeby nie było, że ot - możesz jeszcze po wykonaniu instrukcji przekierować użyszkodnika na innąÂ stronę, jeśli Ci to nie przeszkadza ( header();).
Użytkownik bryn edytował ten post 19 marzec 2007, 20:28

Wyczyszczenie tablicy to chyba powinno zadziałać:
$_POST='';

Nie działa próbowałem.
Dlaczego wszyscy myślą, że jak do zwykłej zmiennej przypiszę wartość z POSTA od tej samej nazwie to twierdzą, że korzysta się z register_globals. Nie! To zwykłe "bezpieczne" zmienne! :)

Chcę aby bez żadnych przekierowań tablica POST była pusta po odświeżeniu ;)


Nie działa próbowałem.
Dlaczego wszyscy myślą, że jak do zwykłej zmiennej przypiszę wartość z POSTA od tej samej nazwie to twierdzą, że korzysta się z register_globals. Nie! To zwykłe "bezpieczne" zmienne! :)

Chcę aby bez żadnych przekierowań tablica POST była pusta po odświeżeniu ;)

Po odświeżeniu tablica POST nie będzie pusta, bo przeglądarka znów ją wysyła do skryptu. Nic nie zdziałasz.

session_start(); session_register('wykonac'); $kom = $_POST['kom']; if ($_SESSION['wykonac'] != 'nie') { // instrukcje $_SESSION['wykonac'] = 'nie'; } <form action="plik.php" method="post"><textarea rows="10" cols="70" name="kom"></textarea><input type="submit" value="Dodaj"></form>

;)
Użytkownik Pancha edytował ten post 20 marzec 2007, 23:49

loguś: to będzie ten sam efekt...
Ciasteczka, to jest dobry sposób...
Czy to nie jest przypadkiem temat o PHP? :D

PHP też obsługuje Cookies :P

BTW: a może by sprawdzać, czy instrukcja już się wykonała? Nie zawsze można, bo to zależy od tego, co ma się wykonać, ale jeśli np. dodajesz dane do bazy, to możesz sprawdzić, czy one już zostały dodane :P


session_start(); session_register('wykonac'); $kom = $_POST['kom']; if ($_SESSION['wykonac'] != 'nie') { // instrukcje $_SESSION['wykonac'] = 'nie'; } <form action="plik.php" method="post"><textarea rows="10" cols="70" name="kom"></textarea><input type="submit" value="Dodaj"></form>

;)

OKi wasze sposoby działają :) Dzięki wielkie!

Dobra ostatni raz odświeżam ten topic :P
Mam zapewne banalny problem. Robię sobie w pętli for formularze które właściwośc action mają ustawioną na strona.php?e=[wartosć]
I teraz mój problem ponieważ w pole wartość chcę wpisać zawartość zmiennej $i z fora (ta zmienna do zwiększania o jeden) robię to tak:
echo "<form action='strona.php?e=$i'><input type='tekst' value='OK'></form> ale kiedy kliknę w jeden z submitów w pasku adresu pokazuje się tylko znak zapytania. Z resztą sprawdzałem zawrtość $_GET i nic tam nie ma. Jak to zrobić?

<input type="hidden">

moment, nie type "tekst", tylko "text" i musisz jeszcze mieć ustawione "name"


moment, nie type "tekst", tylko "text" i musisz jeszcze mieć ustawione "name"
To pisałem z pamięci normalnie jest dobrze :P

<input type="hidden">
Jak to wykorzystać? Można jaśniej? //edit wiem :P
Użytkownik p_p_c++ edytował ten post 22 marzec 2007, 20:59
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.