Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Formularz dodawania danych do komórki, Formularz uploadu pliku w zapisem nazwy do bazy danych
kylo1989
post 24.03.2011, 11:10:42
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.12.2010

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


Witam
Mam następujący problem, w pętli w której odczytuje dane z tabeli mam taki link:
  1. <a href=\"news.php?a=addimg&amp;id={$r['id']}\">imgadd</a>


następnie chce aby po kliknięciu w ten link użytkownik mógł wgrać na serwer plik, nazwa pliku miałaby zostać zapisana do odpowiedniej komórki o o nazwie "zdjecie":
  1.  
  2. $id = trim($_GET['id']);
  3. if($a == 'addimg') {
  4.  
  5. $plik_nazwase = $_FILES['plik']['name'];
  6. echo $plik_nazwase; /*to dodałem tylko aby sprawdzić czy po kliknięciu w link wyświetli się odpowiednie id, i się wyświetla*/
  7.  
  8. $query=mysql_query("UPDATE news SET zdjecie='$plik_nazwase' WHERE id='$id'");
  9. if(!$query){
  10. echo "Niestety nie mogłem aktualizować bazy danych";
  11. }
  12.  
  13.  
  14. $plik_tmpse = $_FILES['plik']['tmp_name'];
  15. $spse = explode(".",$plik_nazwase);
  16.  
  17. if ($_POST['button2'] == "dodaj") {
  18. if($spse[1] == "jpg" || $spse[1] == "JPG" || $spse[1] == "png" || $spse[1] == "jpeg") {
  19.  
  20. if(is_uploaded_file($plik_tmp)) {
  21. move_uploaded_file($plik_tmpse, "modul/news/img/$plik_nazwase");
  22. chmod ("modul/news/img/$plik_nazwase", 0777);
  23. echo '<br>Plik: <strong>'.$plik_nazwase.'</strong> zaladowany.<br /><br />';
  24. }
  25. }else{ echo 'Plik o niedozwolonym rozszerzeniu!';
  26. exit; }
  27. }
  28.  
  29.  
  30. }


oraz sam formularz:
  1. <div id="form">
  2. <form enctype="multipart/form-data" action="news.php?a=addimg" method="post" >
  3. <input type="hidden" name="MAX_FILE_SIZE" value="5000000555" />
  4. <input name="plik" type="file" />
  5. <input type="submit" name="button2" value="dodaj">
  6. </form>';


pliki są uploadowane zgdonie z kodem i nie ma z tym problemu

co mnie dziwi że gdy wpisze w pole id w zapytaniu SQL jakieś konkretne id to wartość zostanie zapisana odpowiednio, wychodzi na to że id nie jest przechwytywane do zapytania, i pytanie do mądrzejszych dlaczego tak się dzieje?

jak to rozwiązać, może cała koncepcja jest zła? Proszę o wskazówki, z góry dzięki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
NEO.pl
post 24.03.2011, 11:22:46
Post #2





Grupa: Zarejestrowani
Postów: 71
Pomógł: 5
Dołączył: 26.01.2011

Ostrzeżenie: (40%)
XX---


Cytat(kylo1989 @ 24.03.2011, 11:10:42 ) *
co mnie dziwi że gdy wpisze w pole id w zapytaniu SQL jakieś konkretne id to wartość zostanie zapisana odpowiednio, wychodzi na to że id nie jest przechwytywane do zapytania, i pytanie do mądrzejszych dlaczego tak się dzieje?


wyswietl sobie query ktore chcesz wykonac to zobaczysz co tam masz.

PS: az sie prosisz o sql injection.
Go to the top of the page
+Quote Post
kylo1989
post 24.03.2011, 14:52:13
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.12.2010

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


to jak powinien wyglądać prawidłowy update bo rozumiem że to tutaj leży problem

problem leży w tym że nazwa pliku i id są tak jakby z zewnątrz? jak w takim razie w php mam zaaktualizować takie dane?

jak wyświetle moje zapytanie to pokazuje mi "1" taką wartość


zmieniłem kolejność na odpowiednią:
  1. $id = trim($_GET['id']);
  2. if($a == 'addimg') {
  3.  
  4. $plik_nazwase = $_FILES['plik']['name'];
  5. echo $plik_nazwase; /*to dodałem tylko aby sprawdzić czy po kliknięciu w link wyświetli się odpowiednie id, i się wyświetla*/
  6.  
  7.  
  8.  
  9. $plik_tmpse = $_FILES['plik']['tmp_name'];
  10. $spse = explode(".",$plik_nazwase);
  11.  
  12. if ($_POST['button2'] == "dodaj") {
  13. if($spse[1] == "jpg" || $spse[1] == "JPG" || $spse[1] == "png" || $spse[1] == "jpeg") {
  14.  
  15. if(is_uploaded_file($plik_tmp)) {
  16. move_uploaded_file($plik_tmpse, "modul/news/img/$plik_nazwase");
  17. chmod ("modul/news/img/$plik_nazwase", 0777);
  18. echo '<br>Plik: <strong>'.$plik_nazwase.'</strong> zaladowany.<br /><br />';
  19.  
  20. /*teraz tutaj dopiero moge przeciez zmienić nazwe bo wcześniej nie jest ona jeszcze pobrana*/
  21. $query=mysql_query("UPDATE news SET zdjecie='$plik_nazwase' WHERE id='$id'");
  22. if(!$query){
  23. echo "Niestety nie mogłem aktualizować bazy danych";
  24. }
  25.  
  26.  
  27.  
  28. }
  29. }else{ echo 'Plik o niedozwolonym rozszerzeniu!';
  30. exit; }
  31. }
  32.  
  33.  
  34. }


mimo to nawet jeśli zapytanie jest narażone na luke to i tak tabela powinna się zaaktualizować?

może ktoś inny ma jeszcze jakiś sposób na to?

Ten post edytował kylo1989 24.03.2011, 12:27:09
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: 14.08.2025 - 07:03