Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] formularz
Forum PHP.pl > Forum > Przedszkole
lukash82
Witam. Mam uno problemo z zabezpieczeniem formularza. Moze najpierw troche kodu: W pliku formularza mam cos takiego (narazie tylko dla imienia i nazwiska):
  1. <tr>
  2. <td width="35%" class=l>Imię<sup><font color=red>*</font></sup></td>
  3. <td width="65%" class=l>
  4. <?php
  5. //wpisywanie zle wpisanych danych do formularza z powrotem zeby uzytkownik wiedzia
    l co wczesniej wpisal
  6. if (!empty($_SESSION['imie']))
  7. echo $_SESSION['imie'].'<br />';
  8. ?>
  9. <input type="text" class=st name="imie" maxlength="30" size="30">
  10. </td>
  11. </tr>
  12. <tr>
  13. <td width="35%" class=l>Nazwisko<sup><font color=red>*</font></sup></td>
  14. <td width="65%" class=l>
  15. <?php
  16. //wpisywanie zle wpisanych danych do formularza z powrotem zeby uzytkownik wiedzia
    l co wczesniej wpisal
  17. if (!empty($_SESSION['nazwisko']))
  18. echo $_SESSION['nazwisko'].'<br />';
  19. ?>
  20. <input type="text" class=st name="nazwisko" maxlength="40" size="30">
  21. </td>
  22. </tr>

A w pliku sprawdzania formularza:
  1. <?php
  2.  
  3. if ((!ereg("[a-zA-Z]+$",$_POST['imie'])) or (!ereg("[a-zA-Z]+$",$_POST['nazwisko'])))
  4. {
  5. $_SESSION['info'] = '<font color="red">Wypełnij dobrze pole imie! </font>';
  6. $_SESSION['imie'] = $_POST['imie'];
  7. $_SESSION['nazwisko'] = $_POST['nazwisko'];
  8. header('Location: zaplata.php');
  9.  }
  10. else{ --&#62;dalsza czesc pliku jesli wszystko dobrze wpisane
  11.  
  12. ?>

Mam juz wersje ktora dziala ale niestety sprawdza mi kazde pole osobno i wywala blad w pierwszym napotkanym zle wpisanym polu a chcialbym zeby sprawdzilo mi caly formularz i wtedy wywalilo zle komunikaty co jest zle (pod formularzem wyskakuje info dzieki $_SESSION) a dobre pola pozostawi uzupelnione. Tak jak np przy zakladaniu konta email na interii. Teraz kasuje mi wszystkie pola i musze za kazdym razem wypelniac je na nowo nawet jak jedno zle wpisalem:(

Moze ktos zna jakies rozwiazanie ktore by mi pomoglo. Myslalem zeby wykorzestac cookie ale wyczytalem gdzies, ze to nie jest zbyt bezpieczne rozwiazanie. Prosze o jakas podpowiedz jaka funkcje zastosowac czy cus w tym stylu. Pozdrawiam.
NeRoK
Czesc,

Jabym zrobił to tak:

  1. <?php
  2.  
  3. function sprawdzDane(){
  4. global $bledy;
  5.  //Tutaj warunki sprawdzania, np. jeżeli pole jest puste:
  6. if($_REQUEST['login'] == ''); {
  7.  $bledy[] = '<b>Wystapil blad przy polu1, sprawdz wpisane w nim dane.';
  8. }
  9. }
  10.  
  11. ?>

Funkcja ta sprawdza dane, i dodaje do tablicy błędy.
Teraz czas na funkcję, która pokazuje błędy:
  1. <?php
  2.  
  3. function pokazBledy(){
  4. global $bledy;
  5. foreach ($bledy as $blad){
  6. echo $blad. '<br>';
  7. }
  8. }
  9.  
  10. ?>


Te 2 funkcje możesz 'wklepać' do swojego skryptu winksmiley.jpg
Pozdrawiam,
NeRoK
lukash82
Ok. Dzieki za info NeRoK ale niestety nie dziala mi to niestety (czyt. nie wiem gdzie co wstawic) ale wykombinowalem cos takiego, ze w pliku formularza pisze:
  1. <td width="65%" class=l>
  2. <?php
  3. //wpisywanie zle wpisanych danych do formularza z powrotem zeby uzytkownik wiedzia
    l co wczesniej wpisal
  4. if (!empty($_SESSION['imie']));
  5. ?>
  6. <input type="text" class=st name="imie" maxlength="30" size="30" value=<?php echo $_SESSION['imie']; ?>>
  7. </td>

i analogicznie do innych pol, a w pliku sprawdzania:
  1. <?php
  2.  
  3. if ((!ereg("[a-zA-Z]+$",$_POST['imie'])) or (!ereg("[a-zA-Z]+$",$_POST['nazwisko'])))
  4. {
  5. $_SESSION['info'] = '<font color="red">Wypełnij lub popraw wymagane pola formularza! </font>';
  6. $_SESSION['imie'] = $_POST['imie'];
  7. $_SESSION['nazwisko'] = $_POST['nazwisko'];
  8. header('Location: zaplata.php');
  9.  }
  10. else{
  11.  
  12. ?>

Teraz jest juz prawie ok ale fajnie by bylo gdyby zle wpisane pola nie uzupelnialy sie bo teraz wpisuje mi wszystko co zle i dobre. Jesli ktos moze pomoc to prosze bardzo o podpowiedz a ja dalej probuje cos tu pokombinowac:) Pozdrawiam
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.