Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Zablokowanie wysłania formularza, puste pole!
gregov0
post 1.02.2011, 18:40:37
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 14.01.2011
Skąd: Kalisz

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


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.  
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Armstrong
post 1.02.2011, 18:43:56
Post #2





Grupa: Zarejestrowani
Postów: 200
Pomógł: 40
Dołączył: 26.08.2009
Skąd: Kobiernice

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


if
a co do sql:
Temat: SQL Injection Insertion

Ten post edytował Armstrong 1.02.2011, 18:44:27


--------------------
// NOPE
Go to the top of the page
+Quote Post
Ulysess
post 1.02.2011, 18:47:34
Post #3





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


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
Go to the top of the page
+Quote Post
emajl22
post 1.02.2011, 18:54:01
Post #4





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


albo po prostu if ($zmienna=="") biggrin.gif


--------------------
Go to the top of the page
+Quote Post
gregov0
post 1.02.2011, 19:18:20
Post #5





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 14.01.2011
Skąd: Kalisz

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


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?
Go to the top of the page
+Quote Post
emajl22
post 1.02.2011, 19:21:37
Post #6





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


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


Ten post edytował emajl22 1.02.2011, 19:25:03


--------------------
Go to the top of the page
+Quote Post
gregov0
post 1.02.2011, 19:56:07
Post #7





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 14.01.2011
Skąd: Kalisz

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


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


Ten post edytował gregov0 1.02.2011, 19:58:06
Go to the top of the page
+Quote Post
Ulysess
post 1.02.2011, 20:00:28
Post #8





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


troche bez sensu bo wpierw dodajesz do bazy później sprawdzasz : tam gdzie masz echo 'ok'; wstaw zapytanie
Go to the top of the page
+Quote Post
gregov0
post 1.02.2011, 20:20:51
Post #9





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 14.01.2011
Skąd: Kalisz

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


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.

Ten post edytował gregov0 1.02.2011, 20:11:42
Go to the top of the page
+Quote Post
Ulysess
post 1.02.2011, 22:19:17
Post #10





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


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ć.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 02:49