Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Rejestracja Na Etapy
Forum PHP.pl > Forum > Przedszkole
Matimor
Witam
Tworzyłem rejestracje na kilka etapów w osobnych plikach lecz teraz pojawia się taki problem, że można ominąć np. pytania do rejestracji wpisując adres www.adres/step2.php. Moje pytanie polega na tym, jak zrobić aby cała rejestracja odbywała się od kroku 1 do 4 po kolei czyli jak wpisze www.adres/step2.php to przekieruje mnie na step1 a jeżeli wejdę ze step1 na step2 to będzie normalnie. Lub można też zamaskować link, czego nie potrafię.

Proszę o pomoc dry.gif
Wicepsik
Zrób w jednym pliku i na sesjach najlepiej.
bikerszymek
Moze ktos ma inny pomysl ale ja bym ustalil jakas zmienna sesyjna po kazdym z etapow i bez niej nie mozna by bylo przystapic do kolejnego (automatycznie przekierowanie do wymaganego). pzdr

edit: Zostalem uprzedzony
f1xer
  1. //zawartość pliku step1.php
  2. <form action="step2.php" method="post">
  3. //tutaj dajesz formularz
  4. <input type="hidden" name="next_step" value="2" />
  5. </form>


  1. //zawartość pliku step2.php
  2. if ($_POST['next_step']!=2){
  3. echo ('Próbujesz mnie oszukać');
  4. }
  5. ?>
  6. <form action="step3.php" method="post">
  7. //tutaj dajesz formularz
  8. <input type="hidden" name="next_step" value="3" />
  9. </form>
  10.  


tak na szybko reszta analogicznie czyli w step3.php next_step ustawiasz na 4
Solimo
Aby nic nie przepisywać chyba najszybciej przekazywać w ukrytych polach form'a dane z poprzednich kroków. Jeżeli step2 nie otrzyma odpowiednich danych w _POST to przekieruje do step1. Nie zapomnij po ostatnim kroku/etapie przewalidować wszystkich danych, ponieważ moża podmienić _POST np. za pomocą JavaScript.
Matimor
Możecie mi pokazać jak to mniej więcej ma wyglądać, nie wiem za dużo na temat sesji. Ale mi się wydaję, że ten pomysł na zmienne będzie lepszy, ponieważ budowa w jednym pliku mi nie odpowiada.
Solimo
To zrób ze zmiennymi skoro tak Ci bardziej pasuje. Pamietaj o walidacji po ostatnim kroku.
f1xer
a i jeszcze wypadałoby abyś przy każdym kroku badał $_SERVER['HTTP_REFERER']; i badał czy user dostał się tutaj z poprzedniego kroku
Matimor
Cytat(f1xer @ 22.08.2009, 22:38:37 ) *
  1. //zawartość pliku step1.php
  2. <form action="step2.php" method="post">
  3. //tutaj dajesz formularz
  4. <input type="hidden" name="next_step" value="2" />
  5. </form>


  1. //zawartość pliku step2.php
  2. if ($_POST['next_step']!=2){
  3. echo ('Próbujesz mnie oszukać');
  4. }
  5. ?>
  6. <form action="step3.php" method="post">
  7. //tutaj dajesz formularz
  8. <input type="hidden" name="next_step" value="3" />
  9. </form>
  10.  


tak na szybko reszta analogicznie czyli w step3.php next_step ustawiasz na 4



To co mi podałeś to ukrywa sumbity i nie można w ogóle przejść na kolejny etap.
f1xer
w jaki sposób może Ci to ukryć submit? podaj swój kod.
Fifi209
Jak na moje oko tam w ogóle nie ma submitu...

Zrób na sesjach, bo pomysł z ukrytym polem jest dobry na laików. Wystarczy firebug i zmienię wartość tego pola. smile.gif
Matimor
  1. echo' <form action="step2.php">';
  2. require "regulamin.txt"; /* Regulamin z Pliku */
  3. echo"<center><input type='hidden' name='next_step' value='$lang[akceptuj]'/></center>";


Jak dam za hidden submit to jest normalnie.
Quantum
Cytat(f1xer)
a i jeszcze wypadałoby abyś przy każdym kroku badał $_SERVER['HTTP_REFERER']; i badał czy user dostał się tutaj z poprzedniego kroku


a słyszał o CURLOPT_REFERER ? co do hidden, CURLOPT_POSTFIELDS.. sesje.. tylko i wyłącznie
Matimor
Jak ma to wyglądać z sesjami, nie orientuję się za bardzo w tym dziale.

PS: Czytałem gdzieś kiedyś na kurshtml.boo.pl jak robi się etapy ale nie mogę teraz tego znaleźć.
Quantum
http://pl.php.net/manual/pl/book.session.php

przy przejściu do następnego etapu dajesz np $_SESSION['etap']++;
Matimor
  1. echo' <form action="step2.php">';
  2. require "regulamin.txt";
  3. echo"<center><input type='submit' name='next_step' value='$lang[akceptuj]'/></center>";
  4. $_SESSION['etap']++;


Formularz 2
  1. if(empty($_SESSION["etap"]))
  2. {
  3. echo '<meta http-equiv="Refresh" content="0; URL=step1.php"; />';
  4. }
  5. echo' <form action="step3.php">';
  6. require "regulamin.txt";
  7. echo"<center><input type='submit' name='next_step' value='$lang[akceptuj]'/></center>";
  8. $_SESSION['etap']++;



Namieszałem raczej haha.gif
Quantum
ja bym to zrobił na switch, dużo prościej winksmiley.jpg

  1. <?
  2.  
  3. switch($_SESSION['etap'])
  4. {
  5.  
  6. case 1:
  7.  
  8. //instrukcje w etapie 1
  9.  
  10. if(poprawnie_wypelniony) $_SESSION['etap']++;
  11.  
  12. break;
  13.  
  14. case 2:
  15.  
  16. //instrukcje w etapie 2
  17.  
  18. if(poprawnie_wypelniony) $_SESSION['etap']++;
  19.  
  20. break;
  21.  
  22. default:
  23.  
  24. //instrukcje na start
  25.  
  26. if(poprawnie_wypelniony) $_SESSION['etap']++;
  27.  
  28. break;
  29. }
  30. ?>
Matimor
Tam gdzie instrukcja dodać treść formularza?

A nie lepiej by było zrobić całą rejestracje na action w 1 pliku ? dry.gif
Quantum
mówiąc instrukcje miałem na myśli i formularz i kod, który sprawdza jego poprawność jeśli jest poprawny przechodzi do następnego etapu, wszystko byłoby wtedy w jednym pliku, a action zostaw puste lub wogóle nie dodawaj go do <form>..ale nie jestem zwolennikiem mieszania logiki z widokiem, MVC FTW.
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.