Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak zabezpieczyć formularz
Forum PHP.pl > Forum > PHP
asterix1983
Mam problem następujący:
Jest sobie formularz który ma na celu dodawanie odpowiednich wpisów do bazy danych. Wszystko działa ładnie jeżeli rzeczywiście dam przycisk dodaj... no i dodaje sobie do bazy. Ale na stronie mam także przycisk przykładowo do powrotu do poprzedniej strony, i po wykonaniu tejże akcji niewiedzieć dlaczego formularz dodaje wpis, chociaż nie powinien, to samo się dotyczy gestów myszy w Operze, tutaj także zostaje dodany wpis do bazy chociaż nie powinien. Moje pytanie jest takie: Jak zabezpieczyć formularz przed nieprawidłowymi wpisami(i nie chodzi mi że w danym polu mają być tylko znaki a-z a w inym 0-9, bo nie oto mi chodzi).
artur81
wrzuć kod, nikt nie jest jasnowiedzem smile.gif
asterix1983
ojojoj toż to zwykły formularz

  1. <?
  2. function dodaj_reklamacje_form()
  3. {
  4.     ?>
  5.  
  6.     <FORM action="dodaj_reklamacje.php" method="GET">
  7.     <p>Wprowadź dane:<br/><p>
  8.     <TABLE align="center" border="1">
  9.     <tr>
  10.     <TD>ID KLIENTA: <INPUT type="text" name="id_klienta"><td/>
  11.     <TD>Opis usterki: <TEXTAREA name="opis_usterki" cols="17" rows="7"></TEXTAREA><td/>
  12.     <TD>Informacje dla klienta <TEXTAREA name="dodatkowe_info" rows="7" cols="17"></TEXTAREA><td/>
  13.     <TD>Os przyjm. <INPUT type="text" name="os_przyj"><td/>
  14.     <tr/>
  15.     </TABLE>
  16.     <INPUT type="submit" name="Dodaj" value="Dodaj">
  17.     <INPUT type="reset" name="czysc" value="Czyść"><br/>
  18.     </FORM>
  19.  
  20.     <?php
  21. }


  1. <?php
  2. function insert_reklamacje($id_klienta,$opis_usterki, $dodatkowe_info, $os_przyj)
  3. //dodaje nową reklamację
  4. {
  5.     $lancz=lacz_bd();
  6.     
  7.     $sql="insert into reklamacja 
  8.     (id_reklamacji, id_klienta, data_reklamacji, 
  9.                  opis_usterki, dodatkowe_info, os_przyj)
  10.     VALUES ('', '".$id_klienta."',NOW(), 
  11.                  '".$opis_usterki."', '".$dodatkowe_info."', '".$os_przyj."')";
  12.     
  13.     $wynik=mysql_query($sql);
  14.     
  15.     if (!$wynik) {
  16.         echo 'Dodanie do bazy nie powiodło się';
  17.     }
  18.     else 
  19.     echo 'Dane zostały wprowadzone do bazy danych';
  20. }
  21. ?>

i fragmenty pliku odpowiedzialnego za wywołanie:
  1. <?php
  2. if (sprawdz_uzyt_admin())
  3. {
  4.     
  5.     dodaj_reklamacje_form();
  6.     insert_reklamacje($id_klienta, $opis_usterki, $dodatkowe_info, $os_przyj);
  7.     
  8. }
  9. else
  10.   echo 'Brak autoryzacji do wejscia na obszar administracyjny.';
  11.   
  12.   // jeżeli zalogowany jako administrator, pokaż łącza 
  13.   if(isset($HTTP_SESSION_VARS['uzyt_admin']))
  14.   {
  15.       
  16.     wyswietl_przycisk('admin.php', 'menu-admin', 'Menu Administratora');
  17.   }
  18. ?>



[EDIT]
hehe już soobie poradziłem, ale banalne to było, nawet trywialne, ale jest rano trzeba mi wybaczyć sleepysmiley03.gif

rozwiązanie:
  1. <?php
  2. dodaj_reklamacje_form();
  3. if (isset($id_klienta) && isset($opis_usterki) && isset($dodatkowe_info) && isset($os_przyj)) {
  4. insert_reklamacje($id_klienta, $opis_usterki, $dodatkowe_info, $os_przyj);
  5. }
  6.  else 
  7.  {
  8.  echo 'Brakauje jakiegoś wpisu';
  9.  }
  10.  
  11. ?>
ennics
Cytat
Ale na stronie mam także przycisk przykładowo do powrotu do poprzedniej strony

sprawdź czy przycisk "powrotu" nie jest zawarty w znacznikach <form></form> Twojego formularza,
  1. <FORM action="dodaj_reklamacje.php" method="GET"> // bezpieczniej i lepiej jest wysyłać dane z formularza poprzez POST

nie wiem czy dobrze odczytałem Twój skrypt ale w tym miejscu
  1. <?php
  2.  
  3. if (sprawdz_uzyt_admin())
  4. {
  5. dodaj_reklamacje_form(); // wywołujesz formularz...
  6. insert_reklamacje($id_klienta, $opis_usterki, $dodatkowe_info, $os_przyj); // i zaraz po jego wyświetleniu dodajesz pusty wpis do bazy danych
  7. }
  8. // powinno to wyglądać mnie więcej tak:
  9. if (sprawdz_uzyt_admin())
  10. {
  11. dodaj_reklamacje_form(); // wywołujesz formularz...
  12. if ( isset($_GET['id_klienta']) or isset($_POST['id_klienta']) ) { // sprawdzasz czy dane z formularza zostały przekazane do skryptu.
  13. insert_reklamacje($id_klienta, $opis_usterki, $dodatkowe_info, $os_przyj); // dodajesz wpis do db
  14. }
  15. }
  16.  
  17. ?>
asterix1983
dzienki za chęci ale szybciej już z tym sobie poradziłem smile.gif popatrz na
Cytat
dodaj_reklamacje_form();    if (isset($id_klienta) && isset($opis_usterki) && isset($dodatkowe_info) && isset($os_przyj)) {insert_reklamacje($id_klienta, $opis_usterki, $dodatkowe_info, $os_przyj);            } else  {    echo 'Brakauje jakiegoś wpisu'; }

snitch.gif
ale jeszcze raz dzięki za poświęcenie czasu i wskazówki
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.