Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Walidacja formularzy
nait
post
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 30.03.2009

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


Witam!

Od dłuższego czasu piszę panel admin. pod jedną ze stronek i chciałbym zrobić to jak najlepiej (IMG:style_emoticons/default/tongue.gif) Mam pytanie odnośnie walidacji. Tak sprawdzam kod tego co już zrobiłem i w sumie wychodzi na to, że czasami sprawdzam to samo w 2 miejscach.

Mam stronę X.php, w niej pokazuję co jest już ew. w bazie i na żądanie daje linki do 'przełącznika' formularzy dodawania/edycji/usuwania danej rzeczy. Poniżej akurat form usunięcia opisu. I tu sprawdzam już czy użytkownik nie manipuluje linkiem, czy wprowadzone dane są poprawne itd. i przesyłam do strony transakcji transact.php gdzie w sumie sprawdzam często ponownie to samo i tu własnie moje pytanie - jest sens w sumie sprawdzać 2x te same rzeczy? issety, empty, is_numeric? Czy w zasadzie sprawdzać to wszystko dopiero w transact.php?

x.php
  1. (...)
  2. elseif (!empty($_GET['description']) || isset($_GET['description']) && array_key_exists('description', $_GET)) {
  3.  
  4. if(!empty($_GET['id']))
  5. $id = $_GET['id'];
  6.  
  7. switch ($_GET['description']) {
  8.  
  9. (...)
  10.  
  11. case 'd':
  12. if(!is_numeric($id) && !isset($id) && empty($id)) {
  13. AddReport('error', '<b>Błąd</b> - Opis nie istnieje');
  14. header('Location: ?p=about');
  15. break;
  16. }
  17. $d_query = "SELECT * FROM about WHERE id = $id";
  18. $d_result = mysqli_query($connect, $d_query);
  19. if(!$d_result) {
  20. AddReport('error', '<b>Błąd</b> - Bład podczas połączenia z bazą danych, spróbój ponownie później');
  21. header('Location: ?p=about');
  22. break;
  23. }
  24. if (1 == mysqli_affected_rows($connect)) {
  25. $description_d = <<< DeleteDescription
  26. <legend>Czy napewno chcesz usunąć opis?</legend>\n
  27. <input type="hidden" name="id" value="$id" />\n
  28. <input type="hidden" name="action" value="description_d" />\n
  29. <input type="submit" value="Usuń" />\n
  30.   <input type="button" value="Powrót" onClick="history.go(-1)" />\n
  31. DeleteDescription;
  32. } else {
  33. AddReport('error', '<b>Błąd</b> - Opis nie istnieje');
  34. header('Location: ?p=about');
  35. }
  36. break;
  37.  
  38. (...)


transact.php
  1.  
  2. foreach ($_POST as $key => $value) {
  3. $$key = $value;
  4. }
  5. $stack = array('about, products, contact, slider');
  6. if (isset($_GET['p']) && !empty($_GET['p']) && in_array($_GET['p'], $stack)
  7. && isset($_POST['action']) && !empty($_POST['action']) ) {
  8.  
  9. $directory = $_GET['p'];
  10.  
  11. switch ($_GET['p']) {
  12.  
  13. // ---------------
  14. // ====== ABOUT ========================================================================= //
  15. // ---------------
  16.  
  17. case 'about':
  18. $redirect = '../admin.php?p=about';
  19. switch ($_POST['action']) {
  20.  
  21. (...)
  22.  
  23. case 'description_d':
  24. $query = "SELECT id FROM about WHERE id = $id";
  25. $result = mysqli_query($connect, $query);
  26. if (!isset($id) || empty($id) || !is_numeric($id) || 0 === mysqli_affected_rows($connect)) {
  27. AddReport('error', '<b>Błąd</b> - Opis nie istnieje');
  28. }
  29. mysqli_free_result($result);
  30. if (empty($_SESSION['reports'])) {
  31. $query = "DELETE FROM about WHERE id = $id LIMIT 1";
  32. $result = mysqli_query($connect, $query);
  33. if (!$result)
  34. AddReport('error', '<b>Błąd</b> - Bład podczas połączenia z bazą danych, spróbój ponownie później');
  35. }
  36. if (empty($_SESSION['reports']))
  37. AddReport('successs', "<b>Opis usunięty pomyślnie</b>");
  38. else
  39. $redirect .= "&link=d&id=$id";
  40. break;
  41.  
  42. (...)
  43.  
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 19.09.2025 - 01:34