Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zablokowanie wysłania formularza, puste pole!
Forum PHP.pl > Forum > Przedszkole
gregov0
Chcę zrobić aby po pozostawieniu pustego pola wyskoczył błąd, i nie został wysłany formularz, oraz jak mam go zabezpieczyc przed SQL Injection ? proszę o pomoc


  1. <?php
  2. if(isset($_POST["submit"])) {
  3. include ("db.php");
  4.  
  5. $pyt = $_POST['pyt'];
  6. $odpa = $_POST['odpa'];
  7. $odpb = $_POST['odpb'];
  8. $odpc = $_POST['odpc'];
  9. $odpd = $_POST['odpd'];
  10. $odppraw = $_POST['odppraw'];
  11. $add = mysql_query("INSERT INTO quiz(pyt, odpa, odpb, odpc, odpd, odppraw) VALUES('$pyt', '$odpa', '$odpb','$odpc','$odpd','$odppraw')");
  12.  
  13.  
  14. if ($add) {
  15. echo '<p>Dodano do bazy</p>';
  16. } else {
  17. echo mysql_error(); echo '<p>Błąd! Spróbuj ponownie</p>';
  18. }
  19. } else {
  20. ?>
  21. <!-- kod formularza-->
  22. <form action="dodpyt.php" method="post">
  23. <table>
  24. <tr>
  25. <td align="right">Pytanie:&nbsp;</td>
  26. <td><textarea name="pyt" rows=5 cols=30 warp=phisical></textarea></td>
  27. </tr>
  28. <tr>
  29. <td align="right">Odpowiedz a:&nbsp;</td>
  30. <td><textarea name="odpa" rows=5 cols=30 warp=phisical></textarea></td>
  31. </tr>
  32. <tr>
  33. <td align="right">Odpowiedz b:&nbsp;</td>
  34. <td><textarea name="odpb" rows=5 cols=30 warp=phisical></textarea></td>
  35. </tr>
  36. <tr>
  37. <td align="right">Odpowiedz c:&nbsp;</td>
  38. <td><textarea name="odpc" rows=5 cols=30 warp=phisical></textarea></td>
  39. </tr>
  40. <tr>
  41. <td align="right">Odpowiedź d:&nbsp;</td>
  42. <td><textarea name="odpd" rows=5 cols=30 warp=phisical></textarea></td>
  43. </tr>
  44. <tr>
  45. <td align="right">Poprawna odpowiedz to:&nbsp;</td>
  46. <td><input type="text" name="odppraw">&nbsp;- tu wpisz a,b,c lub d</td>
  47. </tr>
  48. <tr>
  49. <td colspan="2" align="right">
  50. <input type="submit" name="submit" value="Zapisz" /></td>
  51. </tr>
  52. </table>
  53. </form>
  54.  
  55. <?php
  56. }
  57. ?>
  58.  
Armstrong
if
a co do sql:
Temat: SQL Injection Insertion
Ulysess
przed SQL Injection służy funkcja "mysql_real_escape_string"

jeżeli chcesz po wysłaniu już formularza zrób dla każdego pola sprawdzenie funkcją isset/ empty , jeśli nie to else {echo 'Błąd';}

PS atrybuty tagów w html powinieneś zamykać apostrofami
emajl22
albo po prostu if ($zmienna=="") biggrin.gif
gregov0
Cytat(Ulysess @ 1.02.2011, 18:47:34 ) *
jeżeli chcesz po wysłaniu już formularza zrób dla każdego pola sprawdzenie funkcją isset/ empty , jeśli nie to else {echo 'Błąd';}

a moge dostac jakis przyklad?
emajl22
  1. if (empty($zmienna)) {
  2. echo 'Puste pole!';
  3. else {
  4. echo 'ok!';
  5. }

albo
  1. if ($zmienna=="") {
  2. echo 'Puste pole!';
  3. }
  4.  
  5. else {
  6. echo 'ok!';
  7. }
gregov0
o cos takiego chodzi? wklejam tylko kawałek
  1. <?php
  2. if(isset($_POST["submit"])) {
  3. include ("db.php");
  4.  
  5. $pyt = $_POST['pyt'];
  6. $odpa = $_POST['odpa'];
  7. $odpb = $_POST['odpb'];
  8. $odpc = $_POST['odpc'];
  9. $odpd = $_POST['odpd'];
  10. $odppraw = $_POST['odppraw'];
  11. $add = mysql_query("INSERT INTO quiz(pyt, odpa, odpb, odpc, odpd, odppraw) VALUES('$pyt', '$odpa', '$odpb','$odpc','$odpd','$odppraw')");
  12. if (empty($pyt||$odpa||$odpb||$odpc||$odpd$odppraw)) {
  13. echo 'Puste pole!';}
  14. else {
  15. echo 'ok!';
  16. }
  17.  
  18.  
  19. if ($add) {
  20. echo '<p>Dodano do bazy</p>';
  21. } else {
  22. echo mysql_error(); echo '<p>Błąd! Spróbuj ponownie</p>';
  23. }
  24. } else {
  25. ?>
Ulysess
troche bez sensu bo wpierw dodajesz do bazy później sprawdzasz : tam gdzie masz echo 'ok'; wstaw zapytanie
gregov0
Cytat(Ulysess @ 1.02.2011, 20:00:28 ) *
troche bez sensu bo wpierw dodajesz do bazy później sprawdzasz : tam gdzie masz echo 'ok'; wstaw zapytanie

mam teraz tak
  1. <?php
  2. if(isset($_POST["submit"])) {
  3. include ("db.php");
  4.  
  5. $pyt = $_POST['pyt'];
  6. $odpa = $_POST['odpa'];
  7. $odpb = $_POST['odpb'];
  8. $odpc = $_POST['odpc'];
  9. $odpd = $_POST['odpd'];
  10. $odppraw = $_POST['odppraw'];
  11.  
  12. if (empty($pyt||$odpa||$odpb||$odpc||$odpd||$odppraw)) {
  13. echo 'Puste pole!';}
  14. else {
  15. echo $add = mysql_query("INSERT INTO quiz(pyt, odpa, odpb, odpc, odpd, odppraw) VALUES('$pyt', '$odpa', '$odpb','$odpc','$odpd','$odppraw')");;
  16. }
  17.  
  18.  
  19. if ($add) {
  20. echo '<p>Dodano do bazy</p>';
  21. } else {
  22. echo mysql_error(); echo '<p>Błąd! Spróbuj ponownie</p>';
  23. }
  24. } else {
  25. ?>

i parser zgłasza mi bład w lini 12
Parse error: syntax error, unexpected T_BOOLEAN_OR, expecting ')'

juz znalazłem bład
  1. if (empty($pyt)||empty($odpa)||empty($odpb)||empty($odpc)||empty($odpd)||empty($odppraw))

tylko czy taki zapis jest poprawny? i prosze o pomoc z tym sql Injection. Jestem poczatkujacy i niewiem lub nie rozumiem jak to zrobic.
Ulysess
na ogół stosuje się dla każdej zmiennej oddzielnego IFa tak aby mieć możliwość wyświetlenia użytkownikowi których pól nie wypełnił ale jeśli to tylko do Twojego użytku - tak , może być.
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.