Po przejściu z formularza, strona PHP się nie wyświetla

0

Jestem tu nowy, więc witam wszystkich :) Tytuł nie oddaje mojego problemu, ale ciężko go streścić aby zmieścić się w ograniczonej liczbie znaków, proszę więc moderatora o nierepresjonowanie mnie na tym forum z tego powodu :)
Tak więc, zacznijmy od początku. Nie wiem, czy to ma znaczenie ale pracuję na Linuksie, zainstalowałem XAMPa i przy jego pomocy uruchamiam pliki php. Utworzylem 2 pliki - formularz.html, w całości napisany w HTMLu formularz imitujący rejestrację (nie zapisuje nic w bazie danych, jedynie pobiera dane i przesyła je do skryptu php), oraz strona1.php (skrypt PHP pobierający dane, sprawdzający czy żadne z pól nie jest puste oraz czy 2 razy wprowadzony adres e-mail oraz hasło są ze sobą zgodne. Jeśli coś nie gra, ma wywalać komunikat i po 5 sekundach powracać na stronę formularza, jeśli wszystko jest w porządku, wyświetlane jest podsumowanie "rejestracji" z wypisaniem wszystkich podanych w formularzu danych).
Problem jest następujący - po zatwierdzeniu formularza, strona1.php wyświetla się tylko wtedy, gdy wszystkie pola formularza są wypełnione prawidłowo. Pokazuje się wtedy to, co ma się pokazać, czyli potwierdzenie rejestracji. Jeśli jednak opuszczę któreś z pól lub wpiszę niejednakowe hasła lub adresy e-mail, strona1.php nie ładuje się, nie są wyświetlane pożądane komunikaty, formularz.html jedynie odświeża się po upływie 5 sekund.

Czemu skrypt działa ale nie wyświetla się w przypadku błędnie wypełnionych lub opuszczonych pól formularza?

Niżej podaję kody obu plików.

formularz.html
[code]<HTML>
<HEAD>
<TITLE>Ankieta</TITLE>
<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=UTF-8">
</HEAD>

<body ,="," bgcolor="BLACK" text="WHITE">




<font family="fantasy" size="10">Formularz rejestracji</span>






<form action="strona1.php" method="post">

Podaj login: <input type="text" name="login" size="10" maxlenght="10">

Wprowadź hasło: <input type="password" name="haslo">

Ponownie wprowadź hasło: <input type="password" name="haslo2">

<font face="Arial" size="2">Akceptuje regulamin<input type="checkbox" name="wybor" checked="checked" value="Tak" disabled="disabled">

<font face="Arial" size="2">Zezwalam na przetwarzanie moich danych osobowych<input type="checkbox" name="wybor2" checked="checked" value="Tak">




Podaj e-mail: <input type="text" name="mail">

Ponownie podaj e-mail: <input type="text" name="mail2">

<br/>
<br/><input type="submit" value="wyślij"><input type="reset" value="wyczyść">
</form> </body> </html>[/code]

strona1.php
[code]<?php
echo"<meta http-equiv="content-type" content="text/html ; charset=utf-8">";
echo"

POTWIERDZENIE FORMULARZA ↓’

";
$login=$_POST['login'];
$haslo=$_POST['haslo'];
$haslo2=$_POST['haslo2'];
$przetwarzanie_danych=$_POST['wybor2'];
$mail=$_POST['mail'];
$mail2=$_POST['mail2'];</p>

if ( empty($login || $haslo || $haslo2 || $mail || $mail2) )
{ echo"Nie wszystkie obowiązkowe pola formularza zostały wypełnione ! Powrócisz na poprzednią stronę w ciągu 5 sekund..."; sleep(5); header("location: formularz.html"); } else
if ($haslo!=$haslo2) { echo"Podane hasła nie są jednakowe ! Powrócisz na poprzednią stronę w ciągu 5 sekund..."; sleep(5); header("location: formularz.html"); } else if ($mail != $mail2) { echo"Podane adresy e-mail nie są jednakowe ! Powrócisz na poprzednią stronę w ciągu 5 sekund..."; sleep(5); header("location: formularz.html"); } else echo "Rejestracja przebiegła pomyślnie !

Dane Twojego konta:

Login: $login

Hasło: $haslo

Adres e-mail: $mail


Akceptacja regulaminu: TAK

Zgoda na przetwarzanie danych osobowych: TAK




DZIĘKUJEMY ZA REJESTRACJĘ !";

?>
[/code]

Będę wdzięczny za wszelką pomoc :) Pozdrawiam !

1

Nie możesz czegoś takiego zrobić.
sleep powoduje, że PHP czeka z obliczeniami dalej. NIE WYSYŁA NIC do przeglądarki.
nagłówek location powoduje przeskoczenie do nowej lokalizacji, a cały kod HTML jest wtedy ignorowany (chyba, że przeglądarka nie umie/nie może zrobić automatycznego przekierowania - wtedy wyświetla się ten HTML. razem z nagłówniem location taki html powinien wyglądać na coś w stylu: "kliknij tutaj jezeli Twoja przegladarka nie przekieruje Cie automatycznie").

możesz zrobić:

  1. przekierowanie przez javascript. czyli normalnie, bez sleep i bez location wyświetlasz stronę, na której jest kod js robiący przekierowanie

  2. przekierowanie przez niestandardowy nagłówek Refresh: 0; url=http://www.example.com/ - gdzie 0 to liczba sekund. każda [powszechnie używana] przeglądarka to wspiera w zasadzie, ale nie ma tego w standardzie HTTP

edit: a temat jest ok.

0

Jak uwinę się z pracą, poprawię kod, jeśli nadal będę miał problemy - będę pisał w tym temacie. Dzięki za pomoc ! :)
Pozdrawiam

edit: Poprawiłem i działa! Jeszcze raz, wielkie dzięki ! W końcu trafiłem na forum, gdzie ktoś pomaga hehe, zostaję tu na dłużej : )

1 użytkowników online, w tym zalogowanych: 0, gości: 1