Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Dodawanie rekordów za pomocą formularza
Croos22
post
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Dobry wieczór!

Napisałem sobie takie kodzik który ma za zadanie dodać wpisane dane w formularzu do bazy tylko, że jeśli chodzi o zabezpieczenie przed wysłaniem pustych danych jest ok ale po pierwsze nie chce mi tego dodać a po drugie zawsze wyświetla komunikat o poprawnym dodaniu rekordu. Oto kod:


  1. <?php
  2. include ('includes/config_includes.php');
  3. ?>
  4.  
  5. <form action="index2.php" method="post">
  6. <input type="text" name="imie" value="" /> <br />
  7. <input type="text" name="tresc" value="" /> <br />
  8. <input type="submit" name="submit" value="Dodaj" />
  9. </form>
  10.  
  11. <?php
  12. $data = date(Y:M:D);
  13. if(isset($_POST['submit'])) {
  14. if(empty($_POST['imie'])) {
  15. echo "Wpisz nazwe";
  16. }
  17. if(empty($_POST['tresc'])) {
  18. echo "Wpisz tresc";
  19. }
  20. $zapytanie = ("INSERT INTO `komentarze` (`nr`, `imie`, `tresc`, `data`) VALUES ('', '$imie', '$tresc', '$data') or die('Blad');
  21. if ($zapytanie) echo "Komentarz dodany poprawnie ";
  22. else echo "Komentarz nie zostal dodany ";
  23. }
  24. ?>


Taka amatorszczyzna, dopiero się uczę...

Ten post edytował Croos22 6.12.2010, 19:50:16
Go to the top of the page
+Quote Post
modern-web
post
Post #2





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


  1. <?php
  2. $data = date(Y:M:D);
  3. $imie = mysql_real_escape_string(htmlspecialchars($_POST['imie']));
  4. $tresc = mysql_real_escape_string(htmlspecialchars($_POST['tresc']));
  5.  
  6. if(isset($_POST['submit']))
  7. {
  8. if(empty($imie OR $tresc))
  9. {
  10. echo "Nazwa lub treść są puste";
  11. }else{
  12. $zapytanie = mysql_query("INSERT INTO `komentarze` (`nr`, `imie`, `tresc`, `data`) VALUES ('', '$imie', '$tresc', '$data')");
  13. }
  14.  
  15. if($zapytanie)
  16. {
  17. echo "Komentarz dodany poprawnie ";
  18. }else{
  19. echo "Komentarz nie zostal dodany ";
  20. }
  21. }
  22. ?>
  23.  
  24. <?php
  25. include ('includes/config_includes.php');
  26. ?>
  27.  
  28. <form action="" method="post">
  29. <input type="text" name="imie" value="" /> <br />
  30. <input type="text" name="tresc" value="" /> <br />
  31. <input type="submit" name="submit" value="Dodaj" />
  32. </form>


Takie trudne ;0?

Ten post edytował modern-web 6.12.2010, 20:15:04


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
ADeM
post
Post #3





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

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


  1. $zapytanie = mysql_query("INSERT INTO `komentarze` (`nr`, `imie`, `tresc`, `data`) VALUES ('', '$imie', '$tresc', '$data')");

A przed tym filtrowanie otrzymanych danych.

Ten post edytował ADeM 6.12.2010, 20:10:59


--------------------
Go to the top of the page
+Quote Post
Croos22
post
Post #4





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Coś mi się nie zgadza w trzeciej linii:
Parse error: syntax error, unexpected T_LOGICAL_OR, expecting ')' in xx on line 3
Go to the top of the page
+Quote Post
ADeM
post
Post #5





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

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


Pokaż obecny kod. Jeśli użyłeś tego od ~modern-web, to zamień:
  1. if(empty($imie OR $tresc))

na:
  1. if( empty( $imie ) || empty( $tresc ) )


W dodatku zanim użyjesz zmiennych z POST, to musisz sprawdzić czy istnieją.


--------------------
Go to the top of the page
+Quote Post
markonix
post
Post #6





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Brakuje
Cytat
)

przecież Ci to ten błąd mówi.
Zresztą skoro coś pozmieniałeś w kodzie to wklej nową wersje.


--------------------
Go to the top of the page
+Quote Post
modern-web
post
Post #7





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


O filtrowanie nie pytał. Niech poczyta.

Taka mała wskazówka:
Jeśli chcesz dodawać cokolwiek do bazy danych musisz sprawdzać otrzymane od użytkownika dane (nie można mu ufać bo nigdy nie wiesz, czy przypadkiem nie jest dzieckiem, które koniecznie chce `h4knąłć` Twoją stronę - popisując się tym samym przed równie inteligentnymi kolegami...).
np.
1. filtrowanie sprawdzające, czy wprowadzone dane nie zawierają fragmentu zapytania SQL (do tego przydaje się mysql_real_escape_string ale pamiętaj, że to nie wystarczy!)
2. zawierają odpowiednie znaki (reguły możesz ustalić samodzielnie)

Jeśli chodzi o bezpieczeństwo, poczytaj o:
- SQL Injection
- XSS Attack (na przyszłość)

Ten post edytował modern-web 6.12.2010, 20:25:30


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
Croos22
post
Post #8





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Pomału nie od razu Kraków zbudowano a ja nadal borykam się z tym samym problemem :<

Po wejściu na stronę wyrzuca mi że "Komentarz nie zostal dodany "
Go to the top of the page
+Quote Post
markonix
post
Post #9





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Czyli już mysql_query zwraca false.


--------------------
Go to the top of the page
+Quote Post
ADeM
post
Post #10





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

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


Dodaj "or die( mysql_error() )" do wykonania zapytania i powiedz co Ci wyświetla.


--------------------
Go to the top of the page
+Quote Post
Croos22
post
Post #11





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


No dobra mój błąd przekręciłem nazwę tabeli ale problemu to nie rozwiązało ponieważ po wejściu na stronę dodaje puste rekordy a po wpisaniu nie.
Go to the top of the page
+Quote Post
markonix
post
Post #12





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Po wejściu na stronę nie powinno Ci wysyłać samoczynnie formularza (dodawać do bazy).


--------------------
Go to the top of the page
+Quote Post
ADeM
post
Post #13





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

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


Fajnie. A pokażesz kod czy cały czas myślisz, że wywróżymy z kuli co tam masz u siebie?


--------------------
Go to the top of the page
+Quote Post
Croos22
post
Post #14





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


O przepraszam myślałem, że mówiłem.

  1. <?php
  2. include ('includes/config_includes.php');
  3. ?>
  4.  
  5. <?php
  6. if(isset($_POST['submit'])){
  7. if( empty( $nick ) || empty( $tresc ) )
  8. echo "Nazwa lub treść są puste";
  9. }else{
  10. $zapytanie = mysql_query("INSERT INTO `komentarze` (`nr`, `nick`, `tresc`) VALUES ('', '$nick', '$tresc')") or die( mysql_error() ) ;
  11. }
  12.  
  13. if($zapytanie){
  14. echo "Komentarz dodany poprawnie ";
  15. }else{
  16. echo "Komentarz nie zostal dodany ";
  17. }
  18.  
  19. ?>
  20.  
  21. <form action="" method="post">
  22. <input type="text" name="nick" value="" /> <br />
  23. <input type="text" name="tresc" value="" /> <br />
  24. <input type="submit" name="submit" value="Dodaj" />
  25. </form>
  26.  
  27.  
Go to the top of the page
+Quote Post
markonix
post
Post #15





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Z jakiego edytora korzystasz?

Teraz masz coś po polskiemu - jeśli wysłano formularz to sprawdzaj czy dane są, albo jeśli nie wysłano to wykonaj zapytanie.


--------------------
Go to the top of the page
+Quote Post
ADeM
post
Post #16





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

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


  1. <?php
  2. include ('includes/config_includes.php');
  3.  
  4. if( isset( $_POST[ 'submit' ] ) ) {
  5. if( empty( $nick ) || empty( $tresc ) ) {
  6. echo "Nazwa lub treść są puste";
  7. }
  8. else{
  9. $zapytanie = mysql_query("INSERT INTO `komentarze` (`nr`, `nick`, `tresc`) VALUES ('', '$nick', '$tresc')") or die( mysql_error() ) ;
  10.  
  11. if( $zapytanie ) {
  12. echo "Komentarz dodany poprawnie ";
  13. }
  14. else{
  15. echo "Komentarz nie zostal dodany ";
  16. }
  17. }
  18. }
  19. ?>
  20.  
  21. <form action="" method="post">
  22. <input type="text" name="nick" value="" /> <br />
  23. <input type="text" name="tresc" value="" /> <br />
  24. <input type="submit" name="submit" value="Dodaj" />
  25. </form>
  26.  


Poza tym, to filtruj dane.

Ten post edytował ADeM 6.12.2010, 21:10:16


--------------------
Go to the top of the page
+Quote Post
Croos22
post
Post #17





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Notepad++

Korzystając z tego co podał ADeM nie dodaje po wejściu na stronę tylko że nie pozwala na wpisanie czegokolwiek tzn. co bym nie wpisał to i tak to nie jest tekst "Nazwa lub treść są puste".

Ten post edytował Croos22 6.12.2010, 21:12:09
Go to the top of the page
+Quote Post
nospor
post
Post #18





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) podano ci przeciez taki kod:
  1. $imie = mysql_real_escape_string(htmlspecialchars($_POST['imie']));
  2. $tresc = mysql_real_escape_string(htmlspecialchars($_POST['tresc']));

ktorego ty nigdzie nie masz! ten kod sluzy do pobrania danych z forma

2) zanim zadasz kolejnego posta, zastosuj sie do podanych tu porad
Temat: Jak poprawnie zada pytanie

edit down: tongue.gif
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
modern-web
post
Post #19





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


@nospor - bbcode się kłania winksmiley.gif


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
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 Aktualny czas: 19.08.2025 - 16:03