Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]validacja radio buttonów
Forum PHP.pl > Forum > Przedszkole
michalww
Witam,
mam formularz w html z radio buttonami. Wartości tych radio buttonów wysyłam do bazy danych w mysql. Nie chciałbym żeby mi ktoś podmienił wartości z radio buttonów albo skasował bazę przez jakiś sql injection więc pytanie jak zwalidować te wartości w php żeby nie było możliwości ich podmiany? Kod który mam wklejam poniżej.
  1. <?php
  2. $host = "localhost";
  3. $db_user = "root";
  4. $db_password = "";
  5. $db_name = "odpowiedzi";
  6. $radioPyt1 = $_POST['radioPyt1'];
  7. $radioPyt2 = $_POST['radioPyt2'];
  8. $radioPyt3 = $_POST['radioPyt3'];
  9.  
  10. $polaczenie = new mysqli($host,$db_user,$db_password,$db_name);
  11.  
  12. if ($polaczenie->connect_error)
  13. {
  14. echo "Błąd: ".$polaczenie->cennect_errno." Opis".$polaczenie->cennect_error;
  15. };
  16.  
  17. $sql = "INSERT INTO `odpowiedzi`(`pytanie1`, `pytanie2`, `pytnaie3`) VALUES ('".$radioPyt1."','".$radioPyt2."','".$radioPyt3."')";
  18.  
  19.  
  20. if($polaczenie->query($sql)==TRUE)
  21. {
  22. header("Location: wynik.php");
  23. die();
  24. $polaczenie->close();
  25.  
  26.  
  27. }
  28. else
  29. {
  30. echo "Coś poszo nie tak, spróbuj ponownie później.";
  31. };
  32. ?>
michalww
Ok super to jest prawdopodobnie coś czego szukam tylko robię to tą metodą i coś mi nie działa. Wyskakuje mi taki błąd: Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, string given in C:\xampp\htdocs\projekty\apkilacjaMISKK\logi.php on line 19 Co robię nie tak?
  1. <?php
  2. $host = "localhost";
  3. $db_user = "root";
  4. $db_password = "";
  5. $db_name = "miskkOdpowiedzi";
  6. $radioPyt1 = $_POST['radioPyt1'];
  7. $radioPyt2 = $_POST['radioPyt2'];
  8. $radioPyt3 = $_POST['radioPyt3'];
  9.  
  10. $polaczenie = /* @ */new mysqli($host,$db_user,$db_password,$db_name);
  11.  
  12. if ($polaczenie->connect_error)
  13. {
  14. echo "Błąd: ".$polaczenie->cennect_errno." Opis".$polaczenie->cennect_error;
  15. };
  16.  
  17. $sql = "INSERT INTO `odpowiedzi`(`pytanie1`, `pytanie2`, `pytnaie3`) VALUES (?,?,?)";
  18. $stmt = mysqli_prepare($polaczenie, $sql);
  19. mysqli_stmt_bind_param($radioPyt1, $radioPyt2, $radioPyt3);
  20. mysqli_stmt_execute($stmt);
  21.  
  22.  
  23. if($polaczenie->query($sql)==TRUE)
  24. {
  25. header("Location: wynik.php");
  26. die();
  27. $polaczenie->close();
  28. }
  29. else
  30. {
  31. echo "Coś poszo nie tak, spróbuj ponownie później.";
  32. };
  33. ?>
viking
Zobacz w dokumentacji jeszcze raz składnię i co oznacza $types.
michalww
Ok dobra już wiem co to $type smile.gif Dzięki za podpowiedź smile.gif poprawiłem składnie ale dalej są błędy tongue.gif mógłbyś mnie dalej naprowadzić co jest nie tak?
  1. <?php
  2. $host = "localhost";
  3. $db_user = "root";
  4. $db_password = "";
  5. $db_name = "miskkOdpowiedzi";
  6. $radioPyt1 = $_POST['radioPyt1'];
  7. $radioPyt2 = $_POST['radioPyt2'];
  8. $radioPyt3 = $_POST['radioPyt3'];
  9.  
  10. $polaczenie = /* @ */new mysqli($host,$db_user,$db_password,$db_name);
  11.  
  12. if ($polaczenie->connect_error)
  13. {
  14. echo "Błąd: ".$polaczenie->cennect_errno." Opis".$polaczenie->cennect_error;
  15. };
  16.  
  17. $sql = "INSERT INTO `odpowiedzi`(`pytanie1`, `pytanie2`, `pytnaie3`) VALUES (?,?,?)";
  18. $stmt = mysqli_prepare($polaczenie, $sql);
  19. mysqli_stmt_bind_param($stmt,'sss',$radioPyt1,$radioPyt2,$radioPyt3);
  20. mysqli_stmt_execute($stmt);
  21.  
  22.  
  23. if($polaczenie->query($sql)==TRUE)
  24. {
  25. header("Location: wynik.php");
  26. die();
  27. $polaczenie->close();
  28. }
  29. else
  30. {
  31. echo mysql_errno($polaczenie) . ": " . mysql_error($polaczenie) . "\n";
  32. echo "Coś poszo nie tak, spróbuj ponownie później.";
  33. };
  34. ?>
viking
Jakie konkretnie błędy? To nie tajemnica. Dlaczego mieszasz styl proceduralny z obiektowym? Raz tak, raz tak.
michalww
Pomieszałem bo właśnie nie miałem tego mysql_error i mi nie pokazywało żadnego komunikatu błędu. A teraz mi pokazuje błędy z kodem mysql_error więc sobie testuje. komunikaty błędu to:

Notice: Undefined index: radioPyt1 in C:\xampp\htdocs\projekty\logi.php on line 6

Notice: Undefined index: radioPyt2 in C:\xampp\htdocs\projekty\logi.php on line 7

Notice: Undefined index: radioPyt3 in C:\xampp\htdocs\projekty\logi.php on line 8

Warning: mysql_errno() expects parameter 1 to be resource, object given in C:\xampp\htdocs\projekty\logi.php on line 31

Warning: mysql_error() expects parameter 1 to be resource, object given in C:\xampp\htdocs\projekty\logi.php on line 31
: Coś poszo nie tak, spróbuj ponownie później.
viking
http://www.php.net/mysqli_errno używasz mysqli (i dobrze)
Nie przesyłasz danych w POST. Musisz się nauczyć czytać błędy.

michalww
aaa tak przepraszam te undefined index to ewidentnie moja wina błąd jest ze składnią sql: Błąd: 1064 OpisYou have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?, ?, ?)' at line 1 niestety próbuję i próbuję i nie wiem gdzie jest błąd :/
viking
Jak dobrze pamiętam to gdzieś już ktoś zwracał uwagę że masz błąd w nazwie kolumny pytanie3
michalww
tak ale ten błąd jest też w bazie więc wszystko działało jak były nazwy zmiennych zamiast znaków zapytania smile.gif
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.