Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: method="post"
Forum PHP.pl > Forum > Przedszkole
rb
prosze mi podac przyklad skryptu wysylania formularza metoda "post", ale tak zeby:

1.Skrypt przetwarzajacy dane z formularza po swoim zakonczeniu powinien przekierowac przegladarke na inna strone. Odswiezenie jej
NIE POWINNO wywolac powtórnego submita, a cofajac sie guzikiem back w przegladarce NIE POWINNO dojsc do sytuacji, w której
formularz zostanie wywolany ponownie.

czy to wogole jest mozliwe?
mike
Cytat(rb @ 2005-08-05 12:47:18)
czy to wogole jest mozliwe?

Oczywiście.

plik index.php
  1. <?php
  2.  
  3. if( ! empty( $_GET[ 'result' ] ) )
  4. {
  5. echo 'Rezultat: ' . $_GET[ 'result' ];
  6. }
  7.  
  8. ?>
  9. <form action=\"action.php\" method=\"post\">
  10. <!-- jakieś pola formularza -->
  11. </form>


plik action.php
  1. <?php
  2.  
  3. // jakieś przetwarzanie danych
  4.  
  5. $blnResult = 'ok'; // lub 'zonk' jeżeli się nie udało (przetwarzanie danych)
  6.  
  7. header( 'index.php?result=' . $blnResult );
  8.  
  9. ?>


Coś w tym stylu. Kod pisany z palca ale mam nadzieję że nie wkradł się żaden błąd.
rb
dzieki mike_mech za twoja porade, to dziala. problem w tym ze nie wiem jak dobrac sie do zmiennych z formularza jak juz header zadziala.
berdyk
bo ich już nie ma jak już header() zadziała. $_POST bedziesz miał tylko na tej stronie na której jesteś po przesłaniu formularza. bezośredniego dostępu do wartość z pól formularza nie będziesz mało po "przekierce".
jesli headre musi zadziałać to musisz wykombinować coś co zapisze ci batrdziej trwale informacje z formularza. np. plik tekstowy zresztą o przetwarzaniu danych pisał Ci mike_mech w trezciej lini kodu pliku action.php do którego przesyłasz dane z formularza, ale to jest dalej przed header()
  1. <?php
  2.  
  3. // jakieś przetwarzanie danych
  4.  
  5. $blnResult = 'ok'; // lub 'zonk' jeżeli się nie udało (przetwarzanie danych)
  6.  
  7. // ale dalej przed przekierką
  8.  
  9. header( 'index.php?result=' . $blnResult );
  10.  
  11. ?>
rb
  1. <?php
  2. [COLOR=red]if(isset($_REQUEST['s1']))
  3. {
  4.  
  5. if(!empty($_REQUEST['s1']))
  6. {
  7. $blnResult = 'ok';
  8. }
  9. if(empty($_REQUEST['s1']))
  10. {
  11. $blnResult = 'zonk';
  12. }[/COLOR]
  13. header('Location: index.php?result=' . $blnResult);
  14. }
  15. ?>


Na czerwono u mnie to wlasnie ta trzecia linijka z przykladu mike_mech.
$_REQUEST['s1'] to jest zmienna z formularza przeslana
metoda "post". no i wlasnie o to chodzi ze wartosc tej zmienna "$s1" potrzebuje
na stronach wywolanych przez header, obojetnie czy ?result=ok czy tez ?result=zonk. prosze o podanie przykladu jak to to rozwiazac.
rb
zmotywowaliscie mnie waszymi podpowiedziami do samodzielnego dzialania i (wydaje mi sie) rozwiazalem problem.
robie to sesjami.

  1. <?php // index.php
  2.  
  3. $s1 = $_POST['s1'];
  4. $result = $_GET['result'];
  5.  
  6. if( ! empty($_GET['result']))
  7. {
  8. echo 'Rezultat: ' . $_GET['result'] . $_SESSION['plz'];
  9. }
  10.  
  11. ?>
  12. <form action=\"<? echo $_SERVER[PHP_SELF] ?>\" method=\"post\">
  13. <input type=\"text\" name=\"s1\" value=\"\" />
  14. <input type=\"submit\" value=\"Suche starten\" />
  15. </form>


  1. <?php
  2.  
  3. if(isset($_REQUEST['s1']))
  4. {
  5.  
  6. if(!empty($_REQUEST['s1']))
  7. {
  8. $_SESSION['plz'] = $_REQUEST['s1'];
  9. $blnResult = 'ok';
  10. }
  11. if(empty($_REQUEST['s1']))
  12. {
  13. $blnResult = 'zonk';
  14. }
  15.  
  16. header('Location: index.php?result=' . $blnResult);
  17. }
  18.  
  19. ?>


Dziala bez zarzutu. nie wiem tylko czy dla przypadku jezeli $blnResult = 'zonk' tez musze uzyc(ponownie) session_start()? no i gdzie wlasciwie powinienem wpisac
session_destroy()?
berdyk
Myślę ze kiedyś jak bedziesz już jakiś budował większy projekt to będziesz musial użyć sesji, ale teraz jest ona tak mi sie wydaje jest nie potrzebna. pomyśl dalej nad metodą _GET

Pisz kod bardziej czytelny niz to co zapodaleś

  1. <?php
  2.  
  3. if(isset($_REQUEST['s1'])){
  4.  if(!empty($_REQUEST['s1'])){
  5. $_SESSION['plz'] = $_REQUEST['s1'];
  6. $blnResult = 'ok';
  7.  }
  8.  if(empty($_REQUEST['s1'])){
  9. $blnResult = 'zonk';
  10.  }
  11.  header('Location: index.php?result=' . $blnResult . '&s1=' . $_REQUEST['s1']);
  12. }
  13.  
  14. ?>
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.