Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]problem z headerami
Forum PHP.pl > Forum > Przedszkole
Th0e
Witam! mam problem z zastosowaniem headerów. a mianowicie robię skrypt na dużego lotka snitch.gif i taki oto kod działa bez zarzutów:

  1. <form method="post">
  2. <a><br />liczba 1</a><input maxlength="2" size="2" type="text" name="liczba1">
  3. <a><br />liczba 2</a><input maxlength="2" size="2" type="text" name="liczba2">
  4. <a><br />liczba 3</a><input maxlength="2" size="2" type="text" name="liczba3">
  5. <a><br />liczba 4</a><input maxlength="2" size="2" type="text" name="liczba4">
  6. <a><br />liczba 5</a><input maxlength="2" size="2" type="text" name="liczba5">
  7. <a><br />liczba 6</a><input maxlength="2" size="2" type="text" name="liczba6">
  8. <br /><input type="submit" value="złóż lotka">
  9.  
  10. <?php // SKRYPT SKRYPT SKRYPT SKRYPT SKRYPT SKRYPT SKRYPT SKRYPT
  11. $liczba1 = $_POST['liczba1'];
  12. $liczba2 = $_POST['liczba2'];
  13. $liczba3 = $_POST['liczba3'];
  14. $liczba4 = $_POST['liczba4'];
  15. $liczba5 = $_POST['liczba5'];
  16. $liczba6 = $_POST['liczba6'];
  17.  
  18. $losowanie1 = rand(1,49);
  19. $losowanie2 = rand(1,49);
  20. $losowanie3 = rand(1,49);
  21. $losowanie4 = rand(1,49);
  22. $losowanie5 = rand(1,49);
  23. $losowanie6 = rand(1,49);
  24.  
  25. if (!empty($liczba1) && !empty($liczba2) && !empty($liczba3) && !empty($liczba4) && !empty($liczba5) && !empty($liczba6) && $liczba1 == $losowanie1 && $liczba2 == $losowanie2 && $liczba3 == $losowanie3 && $liczba4 == $losowanie4 && $liczba5 == $losowanie5 && $liczba6 == $losowanie6){
  26. echo "<br /> Wytypowane przec Ciebie liczby to:". $liczba1 .",". $liczba2 .",". $liczba3 .",". $liczba4 .",". $liczba5 .",". $liczba6 ."";
  27. echo "<br /> Liczby wylosowane w loterii: ". $losowanie1 .",". $losowanie2 .",". $losowanie3 .",". $losowanie4 .",". $losowanie5 .",". $losowanie6. "";
  28. echo "<br /> Gratulacje!";
  29. }
  30.  
  31. elseif (!empty($liczba1) && !empty($liczba2) && !empty($liczba3) && !empty($liczba4) && !empty($liczba5) && !empty($liczba6)){
  32. mysql_query("update uzytkownicy set zloto= `zloto`-1 WHERE nick='$nick'")or die(mysql_error());
  33. cho "<br /> Wytypowane przec Ciebie liczby to:". $liczba1 .",". $liczba2 .",". $liczba3 .",". $liczba4 .",". $liczba5 .",". $liczba6 ."";
  34. echo "<br /> Liczby wylosowane w loterii: ". $losowanie1 .",". $losowanie2 .",". $losowanie3 .",". $losowanie4 .",". $losowanie5 .",". $losowanie6. "";
  35. echo "<br /> Niestety przegrałeś. Straciłeś 1 złota.";
  36. }


jednak wygrany mógłby ciągle odświeżać stronę i otrzymywać wygraną, więc powinno się tutaj zastosować header. Ale... takim sposobem:

  1. if (!empty($liczba1) && !empty($liczba2) && !empty($liczba3) && !empty($liczba4) && !empty($liczba5) && !empty($liczba6) && $liczba1 == $losowanie1 && $liczba2 == $losowanie2 && $liczba3 == $losowanie3 && $liczba4 == $losowanie4 && $liczba5 == $losowanie5 && $liczba6 == $losowanie6){
  2. header("Location: miasto_loteria.php?co=win");
  3. mysql_query("update uzytkownicy set zloto =`zloto`+5000000 WHERE nick='$nick'")or die(mysql_error());
  4.  
  5. }
  6.  
  7. elseif (!empty($liczba1) && !empty($liczba2) && !empty($liczba3) && !empty($liczba4) && !empty($liczba5) && !empty($liczba6)){
  8. mysql_query("update uzytkownicy set zloto= `zloto`-1 WHERE nick='$nick'")or die(mysql_error());
  9. header("Location: miasto_loteria.php?co=lose");
  10. if($_GET['co'] == 'lose'){
  11. echo "<br /> Wytypowane przec Ciebie liczby to:". $liczba1 .",". $liczba2 .",". $liczba3 .",". $liczba4 .",". $liczba5 .",". $liczba6 ."";
  12. echo "<br /> Liczby wylosowane w loterii: ". $losowanie1 .",". $losowanie2 .",". $losowanie3 .",". $losowanie4 .",". $losowanie5 .",". $losowanie6. "";
  13. echo "<br /> Niestety przegrałeś. Straciłeś 1 złota.";
  14. }
  15. }
  16.  


jedynie zmieni mi się adres i wykona zadanie do bazy mysql, jednak żaden text nie zostanie wyświetlony.

Gdy dam
  1. if($_GET['co'] == 'lose'){
  2. echo "<br /> Wytypowane przec Ciebie liczby to:". $liczba1 .",". $liczba2 .",". $liczba3 .",". $liczba4 .",". $liczba5 .",". $liczba6 ."";
  3. echo "<br /> Liczby wylosowane w loterii: ". $losowanie1 .",". $losowanie2 .",". $losowanie3 .",". $losowanie4 .",". $losowanie5 .",". $losowanie6. "";
  4. echo "<br /> Niestety przegrałeś. Straciłeś 1 złota.";
  5. }
poza klamrami elseif to pokaże mi tylko 2 i 3 echo, a zamiast wytypowanych przez siebie liczb wyświetli tylko przecinki.
Dane w $liczba1-6 na pewno są bo inaczej by nie wykonywało tych ifów biggrin.gif tylko czemu się nie wyświetlają? a i u samej góry strony mam:

  1. <?php ob_start(); ?>
co pozwala na dawanie headerów w dowolnych miejscach.

Pozdrawiam.
bostaf
Cytat(Th0e @ 28.10.2012, 21:10:03 ) *
Dane w $liczba1-6 na pewno są bo inaczej by nie wykonywało tych ifów

W wierszu 1 tej ostatniej poprawki jest if($_GET['co'] == 'lose'){. Nie sprawdzasz, czy $liczba... są niepuste.
nospor
Cytat
jednak wygrany mógłby ciągle odświeżać stronę i otrzymywać wygraną, więc powinno się tutaj zastosować header. Ale... takim sposobem.......jedynie zmieni mi się adres i wykona zadanie do bazy mysql, jednak żaden text nie zostanie wyświetlony.

Problem ostatnimi czasy przewijał się wielokrotnie na forum.

1)Przed header musisz komunikat który chcesz wyświetlić zapisać w sesji
2)Na tej innej stronie na którą przekierowujesz sprawdzasz czy w sesji jest komunikat
3) Jak jest to wyświetlasz ten komunikat po czym kasujesz go z sesji by się już nam nie pałętał pod nogami
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.