Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Gdzie tutaj może znajdować się błąd?
NetJaro
post
Post #1





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


  1. <?php
  2. $nazwa_roz = explode(&#092;".\", $_FILES['myfile']['name']); //wzraca nazwe bez rozszerzenia
  3. $nazwa_pliku = $nazwa_roz[0];
  4. $roz_pliku = $nazwa_roz[1];
  5. // gdy dam tutaj echo $roz_pliku; to dobrze wyswietla
  6. if ($roz_pliku = &#092;"GIF\" || $roz_pliku = \"JPG\" || $roz_pliku = \"gif\" || $roz_pliku = \"jpg\") {
  7.    if (is_uploaded_file($_FILES['myfile']['tmp_name']))
  8.         {
  9.         move_uploaded_file($_FILES['myfile']['tmp_name'], &#092;"img/$id.$roz_pliku\");
  10.         include (&#092;"mysql.php\");
  11.          $sql = &#092;"INSERT INTO `images` (`id`, `nazwa_pliku`) VALUES ('''', '$id.$roz_pliku')\";
  12.         $wykonaj = mysql_query($sql) or die(&#092;"Błąd podczas dodania pliku do bazy!\");
  13.         echo &#092;"Udany upload pliku!\";
  14. // gdy dam tutaj echo $roz_pliku to wyswietla mi \"1\".
  15.         }
  16.     else {
  17.         die('Próba ataku! Plik: ' . $_FILES['myfile']['name']);}
  18.     } else {
  19.         echo &#092;"Złe rozszerzenie pliku\"; }
  20. ?>


Formularz:

  1. <?php
  2. include (&#092;"mysql.php\");
  3. $ostatni_rekord = &#092;"SELECT * FROM images ORDER BY id DESC LIMIT 1\" or die(\"Błą podczas wyznaczania ostatniego rekordu\");
  4. $wykonaj = mysql_query($ostatni_rekord) or die(&#092;"Błą podczas zapytania\");
  5. while ($r= mysql_fetch_array($wykonaj))
  6. {
  7.   $id = $r [id];
  8.   $nazwa_pliku = $r [nazwa_pliku];
  9. }
  10.  
  11. $id_dobry = $id++;
  12. echo &#092;"
  13. <form enctype=&#092;"multipart/form-data\" action=\"send.php\" method=\"post\">
  14. <input type=&#092;"file\" name=\"myfile\">
  15. <input type=&#092;"hidden\" name=\"id\" value=\"$id_dobry\">
  16. <input type=&#092;"submit\" value=\"submit\">
  17. <input type=&#092;"hidden\" name=\"MAX_FILE_SIZE\" value=\"1048576\">
  18. </form>&#092;";
  19. ?>

Bład opisany w komentrazach. Wydaje mi się, ze skrypt gubi zmienną. Również skrypt pod złym rozszerzeniem kopiuje pliki.
Pozdrawiam.

Ten post edytował NetJaro 3.05.2005, 13:30:19
Go to the top of the page
+Quote Post
hwao
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




  1. <?php
  2. if ($roz_pliku = &#092;"GIF\" || $roz_pliku = \"JPG\" || $roz_pliku = \"gif\" || $roz_pliku = \"jpg\") {
  3. ?>

Operator = jest operatorem przypisania
Porownania jest == i === to taki 1 rzucajacy sie w oczy blad.
Pozatym rozszerznei lepiej sie zdobywa przez
  1. <?php
  2. $p = 'plik.cos.hehe.jpg';
  3. echo array_pop( explode( '.', $p ) );
  4.  
  5. ?>
Go to the top of the page
+Quote Post
NetJaro
post
Post #3





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


Działa. Dzięki wielkie. Muszę poczytać o array_pop" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
mario
post
Post #4





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 23.09.2003
Skąd: Siemianowice Śląskie

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


Cytat(hwao @ 2005-05-03 14:54:45)
Pozatym rozszerznei lepiej sie zdobywa przez
  1. <?php
  2. $p = 'plik.cos.hehe.jpg';
  3. echo array_pop( explode( '.', $p ) );
  4.  
  5. ?>

lub też więcej informacji poprzez pathinfo

  1. <?php
  2. $sciezka = pathinfo('/www/htdocs/index.html');
  3.  
  4. echo $sciezka['dirname'], &#092;"n\";
  5. echo $sciezka['basename'], &#092;"n\";
  6. echo $sciezka['extension'], &#092;"n\";
  7. ?>

zwróci:

katalog: www/htdocs
nazwa: index.html
rozszerzenie: html


--------------------
W życiu piękne są tyko chwile....
Życie choć piękne tak krótkie jest....
Wystarczy chwila by zgasić je....
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:21