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
(...)
$id = $_GET['id'];
switch ($_GET['description']) {
(...)
case 'd':
AddReport('error', '<b>Błąd</b> - Opis nie istnieje');
break;
}
$d_query = "SELECT * FROM about WHERE id = $id";
$d_result = mysqli_query($connect, $d_query);
if(!$d_result) {
AddReport('error', '<b>Błąd</b> - Bład podczas połączenia z bazą danych, spróbój ponownie później');
break;
}
if (1 == mysqli_affected_rows($connect)) {
$description_d = <<< DeleteDescription
<legend>Czy napewno chcesz usunąć opis?</legend>\n
<input type="hidden" name="id" value="$id" />\n
<input type="hidden" name="action" value="description_d" />\n
<input type="submit" value="Usuń" />\n
<input type="button" value="Powrót" onClick="history.go(-1)" />\n
DeleteDescription;
} else {
AddReport('error', '<b>Błąd</b> - Opis nie istnieje');
}
break;
(...)
transact.php
foreach ($_POST as $key => $value) {
$$key = $value;
}
$stack = array('about, products, contact, slider'); && isset($_POST['action']) && !empty($_POST['action']) ) {
$directory = $_GET['p'];
switch ($_GET['p']) {
// ---------------
// ====== ABOUT ========================================================================= //
// ---------------
case 'about':
$redirect = '../admin.php?p=about';
switch ($_POST['action']) {
(...)
case 'description_d':
$query = "SELECT id FROM about WHERE id = $id";
$result = mysqli_query($connect, $query);
AddReport('error', '<b>Błąd</b> - Opis nie istnieje');
}
mysqli_free_result($result);
if (empty($_SESSION['reports'])) { $query = "DELETE FROM about WHERE id = $id LIMIT 1";
$result = mysqli_query($connect, $query);
if (!$result)
AddReport('error', '<b>Błąd</b> - Bład podczas połączenia z bazą danych, spróbój ponownie później');
}
if (empty($_SESSION['reports'])) AddReport('successs', "<b>Opis usunięty pomyślnie</b>");
else
$redirect .= "&link=d&id=$id";
break;
(...)