Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Problem z instrukcjami i dodawaniem rekordów do bazy danych.
Croos22
post 12.02.2011, 21:04:16
Post #1





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

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


Dobry wieczór!

Wymyśliłem dziś prosty sposób na wysyłanie prywatnych wiadomości. Tylko, że pojawiło się klika problemów kod pomimo tego że wykonuje się cały nie zwraca uwagi na else a chodzi o to że jeśli wcześniejsze warunki spełnione to dopiero.

Tabela wygląda tak:
  1. CREATE TABLE `wiadomosci` (
  2. `id_pw` INT NOT NULL AUTO_INCREMENT ,
  3. `tytul` VARCHAR( 150 ) NOT NULL,
  4. `tresc` VARCHAR( 250 ) NOT NULL,
  5. `login_wysylajacego` VARCHAR( 40 ) NOT NULL,
  6. `login_odbierajacego` VARCHAR( 40 ) NOT NULL,
  7. `data_wyslania` VARCHAR( 10 ) NOT NULL,
  8. PRIMARY KEY ( `id_pw` )
  9. );



A kod tak:
  1. <?php
  2. include('baza.php');
  3.  
  4. echo "<table><tr><form action='wyslij.php' method=post>";
  5. echo "<td>Nazwa odbiorcy:</td> <td><input class=formularz type=text name=odbiorca></td></tr>";
  6. echo "<td>Tytuł:</td> <td><input type=text name=tytul></td></tr>";
  7. echo "<tr><td>Tresc:</td> <td><textarea type=text name=tresc size=5 maxlength=20></textarea></td>";
  8. echo "<tr><td><input type=submit name=submit value='Wyślij'></td></tr>";
  9. echo "</form></table>";
  10.  
  11. $ja = mysql_fetch_array(mysql_query("SELECT user_login FROM `users` WHERE `user_login` = 'admin' "));
  12. $odbiorcaa = mysql_fetch_array(mysql_query("SELECT user_login FROM `users` WHERE `user_login` = '$odbiorca' "));
  13.  
  14. $data = date("Y-m-d");
  15. if(isset($_POST['submit'])){
  16. if(empty($_POST['odbiorca'])){
  17. echo 'Nie podano do kogo ma wysłać';
  18. }
  19. if(empty($_POST['tresc'])){
  20. echo 'Nie można wysłać pustej wiadomości.';
  21. }
  22. if($ja == $odbiorca ){
  23. echo 'Nie możesz wysyłać wiadomości do siebie samego.';
  24. } else {
  25. echo 'Wiadomość została wysłana.';
  26. mysql_query("insert into wiadomosci values(NULL, '".htmlspecialchars($_POST["tytul"])."', '".htmlspecialchars($_POST["tresc"])."', '".$ja."', '".$_POST["odbiorca"]."', '".$data."',)");
  27. }
  28. }
  29.  
  30. ?>
Go to the top of the page
+Quote Post
Tomplus
post 12.02.2011, 21:10:09
Post #2





Grupa: Zarejestrowani
Postów: 1 875
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Bo nie wiem czy przypadkiem zmienna
$odbiorca to u Ciebie to samo co $_POST["odbiorca"]

sprawdz linie gdzie jest
if ($ja == $odbiorca)
i popraw zmienną na $_POST["odbiorca"]

Ten post edytował Tomplus 12.02.2011, 21:11:23
Go to the top of the page
+Quote Post
Croos22
post 12.02.2011, 21:16:19
Post #3





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

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


Zmienna odbiorcaa to ta w której wyciągam dane z bazy a odbiorca odpowiada za dane wpisane do formularza.

Dałem jeszcze poprawkę przy wyciąganiu danych z bazy osoby wpisanej w formularz:
  1. $odbiorcaa = mysql_fetch_array(mysql_query("SELECT user_login FROM `users` WHERE `user_login` = '$_POST['odbiorca']' "));


Ten post edytował Croos22 12.02.2011, 21:18:31
Go to the top of the page
+Quote Post
sada
post 12.02.2011, 22:31:25
Post #4





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

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


nigdzie nie widzę zmiennej $odbiorca
Go to the top of the page
+Quote Post
Croos22
post 12.02.2011, 22:52:35
Post #5





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

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


Przepraszam źle się wyraziłem chodziło mi o pole tekstowe które w name ma "odbiorca".
Go to the top of the page
+Quote Post
sada
post 12.02.2011, 23:15:27
Post #6





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

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


A to ?
  1. if($ja == $odbiorca ){
Go to the top of the page
+Quote Post
Croos22
post 13.02.2011, 00:36:53
Post #7





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

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


Zrobiłem już poprawkę w kodzie jak radził pan Tomplus $_POST['odbiorca']
Ale dlaczego wyświetla całą stronę. Gdy nie wypełnię formularzy powie mi to komunikatem który dałem w echo ale również wyświetli, że wiadomość została wysłana ale tu pojawia się drugi problem ponieważ nie dodaje mi rekordów do bazy.

Po poprawkach kod wygląda tak:
  1. <?php
  2. include('baza.php');
  3.  
  4. echo "<table><tr><form action='wyslij.php' method=post>";
  5. echo "<td>Nazwa odbiorcy:</td> <td><input class=formularz type=text name=odbiorca></td></tr>";
  6. echo "<td>Tytuł:</td> <td><input type=text name=tytul></td></tr>";
  7. echo "<tr><td>Tresc:</td> <td><textarea type=text name=tresc size=5 maxlength=20></textarea></td>";
  8. echo "<tr><td><input type=submit name=submit value='Wyślij'></td></tr>";
  9. echo "</form></table>";
  10.  
  11. $ja = mysql_fetch_array(mysql_query("SELECT user_login FROM `users` WHERE `user_login` = 'admin' "));
  12. $odbiorcaa = mysql_fetch_array(mysql_query("SELECT user_login FROM `users` WHERE `user_login` = '$_POST['odbiorca']' "));
  13.  
  14. $data = date("Y-m-d");
  15. if(isset($_POST['submit'])){
  16. if(empty($_POST['odbiorca'])){
  17. echo 'Nie podano do kogo ma wysłać';
  18. }
  19. if(empty($_POST['tresc'])){
  20. echo 'Nie można wysłać pustej wiadomości.';
  21. }
  22. if($ja == $_POST['odbiorca'] ){
  23. echo 'Nie możesz wysyłać wiadomości do siebie samego.';
  24. } else {
  25. echo 'Wiadomość została wysłana.';
  26. mysql_query("insert into wiadomosci values(NULL, '".htmlspecialchars($_POST["tytul"])."', '".htmlspecialchars($_POST["tresc"])."', '".$ja."', '".$_POST["odbiorca"]."', '".$data."',)");
  27. }
  28. }
  29.  
  30. ?>
Go to the top of the page
+Quote Post
emajl22
post 13.02.2011, 00:52:27
Post #8





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

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


1. usuń te htmlspecialchars bo to i tak nic Ci nie daje...
2. daj po IFach gdzie walidujesz (tam gdzie błędy) return false;
3.
  1. mysql_query("INSERT INTO `wiadomosci` values (null, '".$_POST["tytul"]."', '".$_POST["tresc"]."', '$ja', '".$_POST["odbiorca"]."', '$data')");


--------------------
Go to the top of the page
+Quote Post
Croos22
post 13.02.2011, 10:53:06
Post #9





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

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


Dzięki wielkie za pomoc dorzuciłem do tego sesje i śmiga jak należy. Mam jeszcze pytanie czy jeśli post-em przekazuje do zapytania dane to czy one są odpowiednio zabezpieczone przed innymi osobami niż ta która została wpisana w polu nazwa odbiorcy?
Go to the top of the page
+Quote Post
emajl22
post 13.02.2011, 13:44:22
Post #10





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

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


Nie, nie są.

zapoznaj się z pojęciami sql injection i xss.

Ten post edytował emajl22 13.02.2011, 13:45:21


--------------------
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: 19.07.2025 - 08:51