Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jak zabezpieczyć formularz, przed nieodpowiednim dodawaniem
asterix1983
post 27.10.2005, 07:48:44
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 6.03.2005

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


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).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
artur81
post 27.10.2005, 08:02:02
Post #2





Grupa: Zarejestrowani
Postów: 252
Pomógł: 2
Dołączył: 4.12.2004
Skąd: Skierniewice

Ostrzeżenie: (10%)
X----


wrzuć kod, nikt nie jest jasnowiedzem smile.gif


--------------------
Go to the top of the page
+Quote Post
asterix1983
post 27.10.2005, 08:13:41
Post #3





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 6.03.2005

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


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. ?>


Ten post edytował asterix1983 27.10.2005, 09:29:53
Go to the top of the page
+Quote Post
ennics
post 27.10.2005, 09:34:24
Post #4





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


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. ?>


--------------------
Go to the top of the page
+Quote Post
asterix1983
post 27.10.2005, 10:00:15
Post #5





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 6.03.2005

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


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
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: 25.06.2025 - 09:52