Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Sprawdzenie poprawności danych
Forum PHP.pl > Forum > Przedszkole
nait
Witam,
Sytuacja jest taka, że mam. Stronę z formularzami i 2 stronę z transakcją. Formularze pokazuje przez $_GET np link=3&id=1 a dane do skryptu transakcji wysyłam postem.

fragment links.php
  1. // --- Edytuj ---------------------------------------------------------------------- //
  2.  
  3. case 'e':
  4. if (isset($id) && !empty($id) && is_numeric($id)) {
  5. $e_query = "SELECT * FROM links WHERE id = $id LIMIT 1";
  6. $e_result = mysqli_query($connect, $e_query);
  7. if(1 == mysqli_affected_rows($connect)) {
  8. $rows = mysqli_fetch_assoc($e_result);
  9. extract($rows);
  10. $link = FilterOutputData($link);
  11. $description = FilterOutputData($description);
  12. $action_form = <<< EditForm
  13. <form action="system/transact.php?p=links" method="post">
  14. <fieldset>
  15. <legend>Edytuj link</legend>
  16. <label for="link">Link: </label><input class="one_line" maxlength="350" type="text" value="$link" name="link" /><br />
  17. <label for="description">Opis: </label><input class="one_line" maxlength="350" type="text" value="$description" name="description" /><br />
  18. <input type="hidden" name="id" value="$id" />
  19. <input type="hidden" name="action" value="edit" />
  20. <input type="submit" value="Edytuj" />
  21. <input type="reset" value="Wyszczyść zawartość" />
  22. </fieldset>
  23. </form>
  24. EditForm;
  25.  
  26. mysqli_free_result($e_result);
  27. } else {
  28. AddReport('error', '<b>Błąd</b> - wybrany link nie istnieje');
  29. header('Location: ?p=links');
  30. }
  31. } else {
  32. AddReport('error', '<b>Błąd</b> - wybrany link nie istnieje');
  33. header('Location: ?p=links');
  34. }
  35. break;


i fragment transaction.php
  1. case 'edit':
  2. FilterInputData($link);
  3. FilterInputData($description);
  4. if (!is_numeric($id)) {
  5. AddReport('error', '<b>Błąd</b> - wybrany link nie istnieje');
  6. break;
  7. }
  8. if (empty($link))
  9. AddReport('error', '<b>Błąd</b> - Pole URL nie może być puste');
  10. AddHttp($link);
  11. if (empty($description))
  12. AddReport('error', '<b>Błąd</b> - Pole Opis nie może być puste');
  13. if(empty($_SESSION['reports'])) {
  14. $query = "UPDATE links SET
  15. link = '" .$link. "',
  16. description = '" .$description. "'
  17. WHERE id = '" .$id. "'
  18. ";
  19. $result = mysqli_query($connect, $query);
  20. if(!$result) {
  21. AddReport('error', '<b>Błąd</b> - Bład podczas połączenia z bazą danych');
  22. }
  23. }
  24. if (empty($_SESSION['reports']))
  25. AddReport('success', "<b>Link zmodyfikowany pomyślnie</b>");
  26. else
  27. $redirect .= "&link=e&id=$id";
  28. break;

I moje pytanie brzmi: W links.php przy wyświetlaniu formularza sprawdzam czy dany rekord istnieje w bazie, inaczej wywalam błąd, czy w skrypcie transakcji też powinienem jeszcze raz wykonać takie sprawdzenie w celach bezpieczeństwa czy nie muszę?

Z góry dziękuję za odp
Posio
To już zależy od Ciebie. Jeśli chcesz aby skrypt sie na 100% dalej nie wykonywał po przekazaniu błędu użyj funkcji
nait
No ok, tylko mnie nurtuje to czy np jeśli w formie to przejdzie czy po przesłaniu z forma do skryptu transakcji nie będzie możliwa jakaś manipulacja $_POST'em?tongue.gif
Bo w zasadzie tak to bym musiał sprawdzać dokładnie to samo w dwóch miejscach.

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