Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]formularze
Forum PHP.pl > Forum > Przedszkole
azbest22
ucząc się php próbuje wysłać dane z formularza zapisanego w 1 pliku do pliku 2.
wklejam poniżej kompletne kody
plik reg_form.php zwierający formularz

  1.  
  2. <html>
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  5. <meta http-equiv="Content-Language" content="pl">
  6. </head>
  7. <body>
  8. <form action="reg.php" method="post" enctype="text/plain" accept-charset="iso-8859-2, utf-8"><br>
  9. <input type="text" name="login" value="login max 10 znaków" maxlength="10" align="middle"><br>
  10. <input type="password" name="haslo" value="hasło" maxlength="11" align="middle"><br>
  11. <input type="password" name="haslo2" value="hasło" maxlength="11" align="middle"><br>
  12. <input type="text" name="email" value="ameil@email" maxlength="30"><br>
  13. <input type="checkbox" name="regulamin"><br>
  14. <input type="submit" name="wyslij" value="rejestrować"><br><br>
  15. </form>
  16. </body>
  17. </html>


oraz plik reg.php który ma te dane wyświetlić

  1. <?php
  2. if (isset($_POST["wyslij"])) {
  3. // Zostali�my przekierowani na stronę z formularza
  4. // - sprawdzamy, czy wszystkie pola zostały wypełnione
  5. if (empty($_POST["login"]) || empty($_POST["haslo"]) || empty($_POST["haslo2"]) || empty($_POST["email"])) {
  6. echo "<p><font color=\"red\">Musisz wypełnić wszystkie pola!</font></p>";
  7. echo "<p><a href=\"reg_form.php\">Powrót do formularza</a></p>";
  8. } else {
  9. ?>
  10. <h3>Dziękujemy za zgłoszenie!</h3>
  11. <p>Twoje dane:</p>
  12. <ul>
  13. <li>login: <b><?= trim($_POST["login"]); ?></b></li>
  14. <li>hasło: <b><?= trim($_POST["haslo"]); ?></b></li>
  15. <li>Adres email: <b><?= trim($_POST["email"]); ?></b></li>
  16. <?php
  17. if (isset($_POST["regulamin"]))
  18. echo "<li>akceptujesz regulamin.</li>";
  19. else
  20. echo "<li>Nie nie akceptujesz regulaminu.</li>";
  21. ?>
  22. </ul>
  23. <?php
  24. }
  25. } else {
  26. // Je�li użytkownik dostał się na tę stronę w sposób inny niż przez formularz
  27. // zostaje przekierowany do formularza zgłoszenia
  28. header("Location: reg_form.php");
  29. }
  30. ?>


jest to przerobiony fragment z poradnika i za chiny nie chce działać.

po wciśnięciu klawisza odpala się strona reg.php i natychmiast wraca do formularza, a gdy fragment
  1. header("Location: reg_form.php");

oznaczę jako komentarz wywala mi stronę reg.php białą i bez żadnych danych
lord2105
  1. if (isset($_POST["submit"])) {


zmień na :

  1. if (isset($_POST["wyslij"])) {


Pozdrawiam
flashdev
A na przyszłość w pierwszej kolejności sięgasz po instrukcję:
  1. var_dump($_POST);

Aby samodzielnie dojść do rozwiązania problemu.
azbest22
faktycznie to przeoczyłem ale problem nie ustąpił sad.gif
masz jeszcze jakieś pomysły??
bastard13
Zakomentuj sobie wywołanie funkcji header(), dodaj sobie na początku skryptu var_dump($_POST) i napisz co ci wyświetla.
azbest22
zdefiniuj zakomenduj bo ja tu świerzak jestem straszny ale dociekliwy
bastard13
to:
  1. header("Location: reg_form.php");

na to:

  1. // header("Location: reg_form.php");

chodzi mi o to, żeby nie przenosiło cię z tego skryptu, gdyby skrypt poleciał do else.
azbest22
wynikiem
  1. var_dump($_POST);
jest

array(0) { }
bastard13
To znaczy, że nie przesyłasz tutaj żadnego posta. Widocznie masz coś źle ustawionego w atrybucie action formularza. Czy pliki reg_form.php i reg.php są w jednym katalogu?
azbest22
tak są w tym samym miejscu. wkleiłem dokładnie całą ich zawartość .
bastard13
usuń ze znacznika form:
enctype="text/plain"
azbest22
no i dzięki wielkie. wszystko ruszyło smile.gif
hurraaaa
Maciek1705
zrób tak w tym formularz czyli na stronie reg_form.php
  1. <input type="text" name="login" value="login max 10 znaków" maxlength="10" align="middle" /><br/>
  2. <input type="password" name="haslo" value="hasło" maxlength="11" align="middle" /><br/>
  3. <input type="password" name="haslo2" value="hasło" maxlength="11" align="middle" /><br/>
  4. <input type="text" name="email" value="ameil@email" maxlength="30" /><br/>
  5. <input type="checkbox" name="regulamin" /><br>
  6. <input type="hidden" name="wyslij" value="1" />
  7. <input type="submit" name="w" value="rejestrować" /><br/><br/>


jak widać inputy się domyka!!! to 1wszy błąd poza tym submitu się nie odbiera zamiast tego wprowadzony jest jeden nowy input natomiast na stronie reg.php wprowadź taką zmianę
zamiast:
  1. if (isset($_POST["wyslij"])) {

wklej:
  1. if (($_POST["wyslij"])==1) {


no i to tyle u mnie działa nie zapomnij o pomógł jak ci też zadziała;p
bastard13
Po pierwsze: niedomknięty input wyświetli błąd w walidatorze html'a, ale to nie jest błąd, który może przeszkodzić w działaniu.
Po drugie: submit'a też się odbiera.
azbest22
a ja mam jeszcze pytanko jak np. przypisać wartości z posta do konkretnych zmiennych które by mi się np wygodniej stosowało dalej??
zrobiłem coś takiego ale mi nie działa



  1. $login = $_post["login"];
  2. $haslo = $_post["haslo"];
  3. $haslo2 = $_post["haslo2"];
  4. $email = $_post["email"];
  5. $regulamin = $_post["tegulamin"];
  6. if (($haslo == $haslo2)||($regulamin == "on"))
  7. {
  8. echo ("$login,<br>,$haslo,<br>,$email,<br><hr>");
  9.  
  10. }
  11. else
  12. {
  13. echo "<p>niepoprawne dane!<br><a href=\"reg_form.php\">Powrót do formularza</a></p>";
  14. }

i niestety nie pokazuje mi wartości zmiennych. zakładam że źle są przypisane do nich wartości ale nie bardzo mogę dojść dlaczego

już sobie poradziłem tongue.gif
zaponiałem o wielkości liter sad.gif
początki zawsze są trudne biggrin.gif:D:D

temat do zaknięcia
lord2105
Przypisywanie zmiennych powinno wyglądać tak :
  1. $login = $_POST["login"];
  2. $haslo = $_POST["haslo"];
  3. $haslo2 = $_POST["haslo2"];
  4. $email = $_POST["email"];
  5. $regulamin = $_POST["tegulamin"];


Natomiast warunek:

  1. if ($haslo == $haslo2 || $regulamin == "on" )


Jest trochę bez sensu powinno być:

  1. if ($haslo == $haslo2 && $regulamin == "on" )


Nie uważasz, że user powinien zaakceptować regulamin by przejść dalej oraz hasła powinny być takie same więc nie logiczne OR ale AND.

Poza tym co do tego input`a checkbox masz źle zdeklarowane parametry:

masz:

  1. <input type="checkbox" name="regulamin">


a co do warunków i przypisania zmiennych powinno być:

  1. <input type="checkbox" name="tegulamin" value="on">


Pozdrawiam

azbest22
co do inputa bym się kłócił gdyż nie zależy mi na tym aby był domyślnie zaznaczony. co do warunku do dzięki za poprawkę bo miało być tak jak napisałeś ale źle spojrzałem w kursik chyba:(
a co do przypisania zmiennych sam doszedłem już że php odróżnia wielkie litery od małych smile.gif
ale dzięki za podpowiedź
lord2105
Jeżeli input miałby być domyślnie zaznaczony to musiałby mieć parametr checked a go nie ma wiec nie będzie domyślnie zaznaczony
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.