Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> method="post", odswiezanie strony + guzik "back"
-rb-
post
Post #1





Goście







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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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.
Go to the top of the page
+Quote Post
-rb-
post
Post #3





Goście







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.
Go to the top of the page
+Quote Post
berdyk
post
Post #4





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 30.05.2003

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


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. ?>


Ten post edytował berdyk 6.08.2005, 22:31:13


--------------------
PHP @ all.
<? while ($cash==0) { $work=0; } ?>
Go to the top of the page
+Quote Post
-rb-
post
Post #5





Goście







  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.
Go to the top of the page
+Quote Post
-rb-
post
Post #6





Goście







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()?
Go to the top of the page
+Quote Post
berdyk
post
Post #7





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 30.05.2003

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


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. ?>


Ten post edytował berdyk 7.08.2005, 09:58:54


--------------------
PHP @ all.
<? while ($cash==0) { $work=0; } ?>
Go to the top of the page
+Quote Post

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 Aktualny czas: 19.08.2025 - 10:22