Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] formularz, sprawdzanie poprawnosci danych
lukash82
post 29.04.2006, 14:27:50
Post #1





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
NeRoK
post 29.04.2006, 15:51:48
Post #2





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
lukash82
post 29.04.2006, 17:09:41
Post #3





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 09:31