Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zabezpieczenie przed pustym formularzem
lukis19944
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.08.2017

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


Witam
Mam dwa problemy związane z moim kodem do strony bazodanowej

Pierwszym jest to że nie mogę sobie poradzić z zabezpieczeniem przed pustym formularzem. Po wejściu na stronę wyświetla mi się tekst, który chce aby pojawił się gdy ktoś zapomni wypełnić wszystkie pola w formularzach: "Nie podałeś wszystkich danych dotyczących klienta bądź dane są niepoprawne"

Drugim problemem jest to, że gdy dodam rekord do bazy i po tym odświerze strone dane znów się dodają.

Mógłby ktoś rzucić okiem i powiedzieć jak to poprawić?
Jestem początkujący w tym temacie także prosze o wyrozumiałość (IMG:style_emoticons/default/smile.gif)

Wklejam kod:

if(isset($_POST["ok1"]) || (isset($_POST["ok2"])) || (isset($_POST["ok3"] ))){


//odbieramy dane z formularza
$marka = $_POST['marka'];
$model = $_POST['model'];
$rok = $_POST['rok'];
$nr_vin = $_POST['nr_vin'];
$imie = $_POST['imie'];
$nazwisko=$_POST['nazwisko'];
$adres=$_POST['adres'];
$nr_tel=$_POST['nr_tel'];
$id_klienta=$_POST['id_klienta'];
$id_auta=$_POST['id_auta'];
$id_mechanika=$_POST['id_mechanika'];
$data_przyjecia=$_POST['data_przyjecia'];
$data_odbioru=$_POST['data_odbioru'];
$opis=$_POST['opis'];
$status=$_POST['status'];
$cena_czesci=$_POST['cena_czesci'];
$cena_robota=$_POST['cena_robota'];
}
if ((!empty($marka)) || (!empty($model)) || (!empty($rok)) || (!empty($nr_vin))){ //dodajemy rekord do bazy

$dodajauto="INSERT INTO `auto`(`idauta`, `marka`, `model`, `rok`, `nrvin`) VALUES (NULL,'$marka','$model','$rok','$nr_vin')";
mysql_query ("$dodajauto");
echo ("Dodano auto do bazy");

$wynik = mysql_query("SELECT max(idauta) idauta FROM auto WHERE 1")
or die('Błąd zapytania');


echo "<table cellpadding=\"2\" border=1>";
while($r = mysql_fetch_assoc($wynik)) {
echo "<tr>";
echo "<td>ID Auta</td>";
echo "<td>".$r['idauta']."</td>";
echo "</tr>";
}
echo "</table>";



}else {
echo "Nie podałeś wszystkich danych dotyczących danych bądź dane są niepoprawne";
}

if ((!empty($imie)) || (!empty($nazwisko)) || (!empty($adres)) || (!empty($nr_tel))){

$dodajklient="INSERT INTO `klient`(`idklienta`, `imie`, `nazwisko`, `adres`, `nrtel`) VALUES (NULL,'$imie','$nazwisko','$adres','$nr_tel')";
mysql_query ("$dodajklient");
echo ("Dodano klienta do bazy");

$wynik1 = mysql_query("SELECT max(idklienta) idklienta FROM klient WHERE 1")
or die('Błąd zapytania');

if(mysql_num_rows($wynik1) > 0) {
echo "<table cellpadding=\"2\" border=1>";
while($r1 = mysql_fetch_assoc($wynik1)) {
echo "<tr>";
echo "<td>ID Klienta</td>";
echo "<td>".$r1['idklienta']."</td>";
echo "</tr>";
}
echo "</table>";
}


//$stmt1=$dbstmt->prepare("INSERT INTO klient (imie,nazwisko,adres,nrtel) VALUES (?,?,?,?)") or die($dbstmt->error);
//$stmt1->bind_param('sssi',$imie,$nazwisko,$adres,$nr_tel);
//$stmt1->execute();
}else {
echo "Nie podałeś wszystkich danych dotyczących klienta bądź dane są niepoprawne";
}


if ((!empty($id_klienta)) || (!empty($id_auta)) || (!empty($id_mechanika)) || (!empty($data_przyjecia)) || (!empty($data_odbioru)) || (!empty($opis)) || (!empty($status)) || (!empty($cena_czesci)) || (!empty($cena_robota))){

$dodajnaprawa="INSERT INTO `naprawa`(`idnaprawy`, `idklienta`, `idauta`, `idmechanika`, `dataprzyjecia`, `dataodbioru`, `opisusterki`, `status`, `cenaczesci`, `cenarobota`) VALUES (NULL,'$id_klienta','$id_auta','$id_mechanika','$data_przyjecia','$data_odbioru','$opis','$status','$cena_czesci','$cena_robota')";
mysql_query ($dodajnaprawa);



echo "Dodano zlecenie do bazy";


}else{
echo "Nie podałeś wszystkich danych dotyczących naprawy bądź dane są niepoprawne";
}
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
olszam
post
Post #2





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


Mogłeś chociaż dać znacznik php by jakoś na forum to było czytelne ale mniejsza o to. Popraw warunki if z || na && bo przepuszczasz dane jeśli chociaż jedna wartość będzie prawdziwa. Z odświeżaniem to musisz się zabezpieczyć bo niestety tak to jest jak klikasz odśwież.
Go to the top of the page
+Quote Post
lukis19944
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.08.2017

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


Poprawiłem z || na && oprócz pierwszego if'a bo tam chyba powinno zostać || bo chce dodawać dane osobno do tabel a nie wszystkie razem czyli wystarczy, że jeden warunek zostanie spełniony

Ale ciągle wyskakuje mi informacja o "Nie podałeś wszystkich danych.."

Jak to rozwiązac by wyskakiwał komunikat "Nie podałeś wszystkich danych.." tylko wtedy gdy formularze nie zostaną wypełnione dla danego submita którym zatwierdziłem wysłanie danych do bazy. Mam nadzieję że zrozumiecie o co chodzi bo nie napisałem tego dosyć zrozumiale chyba (IMG:style_emoticons/default/smile.gif)

Zaznaczyłem na czerwono o co mi chodzi.

(IMG:https://iv.pl/images/74394367488535898623.jpg)


Ten post edytował lukis19944 8.08.2017, 14:18:05
Go to the top of the page
+Quote Post
dvdx95
post
Post #4





Grupa: Zarejestrowani
Postów: 47
Pomógł: 3
Dołączył: 11.10.2016

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


Rozumiem te ten plik php ma odpowiadać za 3 różne submity?

jeżeli tak to raczej tak powinno to być.

  1. if(isset($_POST["ok1"]) || (isset($_POST["ok2"])) || (isset($_POST["ok3"] ))){
  2.  
  3.  
  4. //odbieramy dane z formularza
  5. $marka = $_POST['marka'];
  6. $model = $_POST['model'];
  7. $rok = $_POST['rok'];
  8. $nr_vin = $_POST['nr_vin'];
  9. $imie = $_POST['imie'];
  10. $nazwisko=$_POST['nazwisko'];
  11. $adres=$_POST['adres'];
  12. $nr_tel=$_POST['nr_tel'];
  13. $id_klienta=$_POST['id_klienta'];
  14. $id_auta=$_POST['id_auta'];
  15. $id_mechanika=$_POST['id_mechanika'];
  16. $data_przyjecia=$_POST['data_przyjecia'];
  17. $data_odbioru=$_POST['data_odbioru'];
  18. $opis=$_POST['opis'];
  19. $status=$_POST['status'];
  20. $cena_czesci=$_POST['cena_czesci'];
  21. $cena_robota=$_POST['cena_robota'];
  22. }
  23. if (isset($_POST["ok1"]) && (!empty($marka)) && (!empty($model)) && (!empty($rok)) && (!empty($nr_vin))){ //dodajemy rekord do bazy
  24.  
  25. $dodajauto="INSERT INTO `auto`(`idauta`, `marka`, `model`, `rok`, `nrvin`) VALUES (NULL,'$marka','$model','$rok','$nr_vin')";
  26. mysql_query ("$dodajauto");
  27. echo ("Dodano auto do bazy");
  28.  
  29. $wynik = mysql_query("SELECT max(idauta) idauta FROM auto WHERE 1")
  30. or die('Błąd zapytania');
  31.  
  32.  
  33. echo "<table cellpadding=\"2\" border=1>";
  34. while($r = mysql_fetch_assoc($wynik)) {
  35. echo "<tr>";
  36. echo "<td>ID Auta</td>";
  37. echo "<td>".$r['idauta']."</td>";
  38. echo "</tr>";
  39. }
  40. echo "</table>";
  41.  
  42.  
  43.  
  44. }else {
  45. echo "Nie podałeś wszystkich danych dotyczących danych bądź dane są niepoprawne";
  46. }
  47.  
  48. if ((isset($_POST["ok2"])) && (!empty($imie)) && (!empty($nazwisko)) && (!empty($adres)) && (!empty($nr_tel))){
  49.  
  50. $dodajklient="INSERT INTO `klient`(`idklienta`, `imie`, `nazwisko`, `adres`, `nrtel`) VALUES (NULL,'$imie','$nazwisko','$adres','$nr_tel')";
  51. mysql_query ("$dodajklient");
  52. echo ("Dodano klienta do bazy");
  53.  
  54. $wynik1 = mysql_query("SELECT max(idklienta) idklienta FROM klient WHERE 1")
  55. or die('Błąd zapytania');
  56.  
  57. if(mysql_num_rows($wynik1) > 0) {
  58. echo "<table cellpadding=\"2\" border=1>";
  59. while($r1 = mysql_fetch_assoc($wynik1)) {
  60. echo "<tr>";
  61. echo "<td>ID Klienta</td>";
  62. echo "<td>".$r1['idklienta']."</td>";
  63. echo "</tr>";
  64. }
  65. echo "</table>";
  66. }
  67.  
  68.  
  69. //$stmt1=$dbstmt->prepare("INSERT INTO klient (imie,nazwisko,adres,nrtel) VALUES (?,?,?,?)") or die($dbstmt->error);
  70. //$stmt1->bind_param('sssi',$imie,$nazwisko,$adres,$nr_tel);
  71. //$stmt1->execute();
  72. }else {
  73. echo "Nie podałeś wszystkich danych dotyczących klienta bądź dane są niepoprawne";
  74. }
  75.  
  76.  
  77. if ((isset($_POST["ok3"])) && (!empty($id_klienta)) && (!empty($id_auta)) && (!empty($id_mechanika)) && (!empty($data_przyjecia)) && (!empty($data_odbioru)) && (!empty($opis)) && (!empty($status)) && (!empty($cena_czesci)) && (!empty($cena_robota))){
  78.  
  79. $dodajnaprawa="INSERT INTO `naprawa`(`idnaprawy`, `idklienta`, `idauta`, `idmechanika`, `dataprzyjecia`, `dataodbioru`, `opisusterki`, `status`, `cenaczesci`, `cenarobota`) VALUES (NULL,'$id_klienta','$id_auta','$id_mechanika','$data_przyjecia','$data_odbioru','$opis','$status','$cena_czesci','$cena_robota')";
  80. mysql_query ($dodajnaprawa);
  81.  
  82.  
  83.  
  84. echo "Dodano zlecenie do bazy";
  85.  
  86.  
  87. }else{
  88. echo "Nie podałeś wszystkich danych dotyczących naprawy bądź dane są niepoprawne";
  89. }
  90.  
Go to the top of the page
+Quote Post
lukis19944
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.08.2017

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


No niestety, dalej po zatwierdzeniu jednego submita pokazuje mi komunikat o pozostałych o niewypełnionych formularzach..

Ma ktoś jakiś pomysł jeszcze?
Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Jak wygląda przycisk którym wysyłasz formularze? var_dump($_POST);
Prosta logika. Jeżeli istnieje zmienna x w tablicy POST zrób x (sprawdzenie koniecznych pól), jeśli y to y itd.
Go to the top of the page
+Quote Post
lukis19944
post
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.08.2017

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


Jeden z nich
<input type="submit" name="ok1" value="zatwierdź" />

var_dump($_POST);

array (size=18)
'marka' => string 'dasdafadf' (length=9)
'model' => string 'fdaf' (length=4)
'rok' => string '2' (length=1)
'nr_vin' => string 'e4gdfv68fxv4x' (length=13)
'ok1' => string 'zatwierdź' (length=10)
'imie' => string '' (length=0)
'nazwisko' => string '' (length=0)
'adres' => string '' (length=0)
'nr_tel' => string '' (length=0)
'id_klienta' => string '' (length=0)
'id_auta' => string '' (length=0)
'id_mechanika' => string '' (length=0)
'data_przyjecia' => string '' (length=0)
'data_odbioru' => string '' (length=0)
'opis' => string '' (length=0)
'cena_czesci' => string '' (length=0)
'cena_robota' => string '' (length=0)
'status' => string 'W trakcie' (length=9)






O to chodziło bo nie bardzo rozumiem?

(IMG:https://iv.pl/images/15503262576270277346.png)

Ten post edytował lukis19944 9.08.2017, 13:15:28
Go to the top of the page
+Quote Post
viking
post
Post #8





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Zrób po prostu:
  1. if(isset($_POST["ok1"]) {
  2. //sprawdzasz potrzebne dane np od PHP7
  3. $marka = $_POST['marka'] ?? '';
  4. } else if(isset($_POST["ok2"]) {
  5. //
  6. }


Ten post edytował viking 9.08.2017, 13:13:30
Go to the top of the page
+Quote Post
lukis19944
post
Post #9





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.08.2017

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


tak miałem zrobić?
Ale to nie pomogło. dalej 3 komunikaty po wciśnięciu jednego przycisku..

  1. if (isset($_POST["ok1"])){
  2.  
  3.  
  4.  
  5. //odbieramy dane z formularza
  6. $marka = $_POST['marka'] ;
  7. $model = $_POST['model'] ;
  8. $rok = $_POST['rok'] ;
  9. $nr_vin = $_POST['nr_vin'] ;
  10.  
  11. }else if (isset($_POST["ok2"])){
  12.  
  13. $imie = $_POST['imie'] ;
  14. $nazwisko=$_POST['nazwisko'] ;
  15. $adres=$_POST['adres'] ;
  16. $nr_tel=$_POST['nr_tel'] ;
  17.  
  18. }else if (isset($_POST["ok3"])){
  19. $id_klienta=$_POST['id_klienta'];
  20. $id_auta=$_POST['id_auta'];
  21. $id_mechanika=$_POST['id_mechanika'] ;
  22. $data_przyjecia=$_POST['data_przyjecia'] ;
  23. $data_odbioru=$_POST['data_odbioru'] ;
  24. $opis=$_POST['opis'] ;
  25. $status=$_POST['status'] ;
  26. $cena_czesci=$_POST['cena_czesci'] ;
  27. $cena_robota=$_POST['cena_robota'] ;
  28. }
Go to the top of the page
+Quote Post
viking
post
Post #10





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


W takim razie sprawdź co się dzieje z komunikatami. Powinny być tylko w tych ifach wyżej.
Go to the top of the page
+Quote Post
dvdx95
post
Post #11





Grupa: Zarejestrowani
Postów: 47
Pomógł: 3
Dołączył: 11.10.2016

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


  1. <?php
  2. if(isset($_POST["ok1"])){
  3. $marka = $_POST['marka'] ;
  4. $model = $_POST['model'] ;
  5. $rok = $_POST['rok'] ;
  6. $nr_vin = $_POST['nr_vin'] ;
  7. if ((!empty($marka)) && (!empty($model)) && (!empty($rok)) && (!empty($nr_vin))){
  8. //dalsza czesc kodu
  9. }
  10. else{
  11. echo "Nie podałeś wszystkich danych dotyczących danych bądź dane są niepoprawne";
  12. }
  13. }
  14. if(isset($_POST["ok2"])){
  15. $imie = $_POST['imie'] ;
  16. $nazwisko=$_POST['nazwisko'] ;
  17. $adres=$_POST['adres'] ;
  18. $nr_tel=$_POST['nr_tel'] ;
  19. if ((!empty($imie)) && (!empty($nazwisko)) && (!empty($adres)) && (!empty($nr_tel))){
  20. //dalsza czesc kodu
  21. }
  22. else{
  23. echo "Nie podałeś wszystkich danych dotyczących klienta bądź dane są niepoprawne";
  24. }
  25. }
  26. if(isset($_POST["ok3"])){
  27. $id_klienta=$_POST['id_klienta'];
  28. $id_auta=$_POST['id_auta'];
  29. $id_mechanika=$_POST['id_mechanika'] ;
  30. $data_przyjecia=$_POST['data_przyjecia'] ;
  31. $data_odbioru=$_POST['data_odbioru'] ;
  32. $opis=$_POST['opis'] ;
  33. $status=$_POST['status'] ;
  34. $cena_czesci=$_POST['cena_czesci'] ;
  35. $cena_robota=$_POST['cena_robota'] ;
  36. if ((!empty($id_klienta)) && (!empty($id_auta)) && (!empty($id_mechanika)) && (!empty($data_przyjecia)) && (!empty($data_odbioru)) && (!empty($opis)) && (!empty($status)) && (!empty($cena_czesci)) && (!empty($cena_robota))){
  37. //dalsza czesc kodu
  38. }
  39. else{
  40. echo "Nie podałeś wszystkich danych dotyczących klienta bądź dane są niepoprawne";
  41. }
  42. }
  43. ?>


Ten post edytował dvdx95 9.08.2017, 14:14:31
Go to the top of the page
+Quote Post
viking
post
Post #12





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Pokaż jakieś przykładowe dane po wysłaniu formularza var_dump($_POST);
Go to the top of the page
+Quote Post
lukis19944
post
Post #13





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.08.2017

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


Wkleiłem kilka postów wyżej.

To jest wysłanie za pomocą pierwszego submita
array (size=18)
'marka' => string 'dasdafadf' (length=9)
'model' => string 'fdaf' (length=4)
'rok' => string '2' (length=1)
'nr_vin' => string 'e4gdfv68fxv4x' (length=13)
'ok1' => string 'zatwierdź' (length=10)
'imie' => string '' (length=0)
'nazwisko' => string '' (length=0)
'adres' => string '' (length=0)
'nr_tel' => string '' (length=0)
'id_klienta' => string '' (length=0)
'id_auta' => string '' (length=0)
'id_mechanika' => string '' (length=0)
'data_przyjecia' => string '' (length=0)
'data_odbioru' => string '' (length=0)
'opis' => string '' (length=0)
'cena_czesci' => string '' (length=0)
'cena_robota' => string '' (length=0)
'status' => string 'W trakcie' (length=9)
Go to the top of the page
+Quote Post
viking
post
Post #14





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


No to nie ma opcji żeby działały ify od ok2 i 3.
Go to the top of the page
+Quote Post
lukis19944
post
Post #15





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.08.2017

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


To w czym może być problem że tak się dzieje?
Go to the top of the page
+Quote Post
viking
post
Post #16





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Szklana kula akurat przestała działać. Zapewne kod który obecnie tam masz by ją włączył.
Go to the top of the page
+Quote Post
lukis19944
post
Post #17





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.08.2017

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


dvdx95 wielkie dzięki za pomoc, kod działa tak jak trzeba (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 23.08.2025 - 14:14