Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [pomoc] Prosty skrypt uploadu zdjęć na serwer[rozwiązany-skrypty!]
miccom
post 3.03.2008, 00:55:28
Post #1





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


Witam. Mam taki oto skrypt.
  1. <FORM ACTION="upload.php" METHOD="POST" ENCTYPE="multipart/form-data">
  2. Zdjęcie: <INPUT type="file" name="zdjecie"><br>
  3. <button type="submit" name="ok" value="wyślij zdjęcie do bazy">
  4. <img src="zdj/wyslij.jpg" width="50" height="14" alt="wyślij zdjęcie do bazy danych">
  5. </button>
  6. </form>


upload.php
  1. <?php
  2.  
  3. $fhandle = fopen($HTTP_POST_FILES['zdjecie']['tmp_name'], "r");
  4. $content = base64_encode(fread($fhandle, $HTTP_POST_FILES['zdjecie']['size']));
  5. fclose($fhandle);
  6.  
  7. include('config.php');
  8.  
  9.  
  10. $query = sprintf("insert into zdjecia (username, zdjecie, obecne) values (\"%s\"\"%s\"\"%s\")", $HTTP_POST_VARS['username'], $content, 'TAK');
  11. $zapytanie = mysql_query($query);
  12.  
  13. if (!$zapytanie) 
  14. { 
  15. echo sprintf("Nie można dodać zdjęcia! Sad Error : %s", mysql_error()) ; 
  16. }
  17. else 
  18. { 
  19. echo "<img src=\"http://www.moja_strona.pl/showimage.php?username=".$l."\">";
  20. echo "<center>";
  21. echo "Twój obrazek został zapisany do bazy danych MySQL";
  22. echo "</center>";
  23. }
  24.  
  25. ?>


i skrypt showimage.php
  1. <?
  2. header("Content-type: image/jpg;");
  3. $l=$_GET['username'];
  4. include('config.php');
  5. $result = mysql_query("SELECT zdjecie FROM zdjecia WHERE `username`='$l'");
  6. if (mysql_num_rows($result) != 0)
  7. {
  8. $row = mysql_fetch_assoc($result);
  9. echo base64_decode($row['zdjecie']);
  10. }
  11. ?>


I wszystko fajnie. Ale jak zrobić aby zdjecie miało określony format(jpg, gif, png) i określony rozmiar w pix, albo jak wyświetlać zdjęcie w określonym wymiarze np. 100X100pix. Proszę o pomoc. Pozdrawiam. miccom

Ten post edytował miccom 10.03.2008, 14:45:09


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
Cysiaczek
post 3.03.2008, 03:32:59
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Przenoszę na Przedszkole

Musisz sprawdzić rozszerzenie pliku, czy odpowiada Twoim potrzebom, jeśli nie, to nie dodajesz go bo bazy.
Tak jak masz
  1. <?php
  2. $HTTP_POST_FILES['zdjecie']['tmp_name']
  3. ?>


To analogicznie odczytasz rozszerzenie (mime-type również).

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
miccom
post 10.03.2008, 12:34:31
Post #3





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


Ok. Ponowna modyfikacja kodu:
Segreguje rozszerzenia plików- ale nie sprawdza rozmiaru;/(max pix, max KB )
Może nie najlepszy sposób przechowywać avatary w Bazie Danych- ale na serwerze gdzie stoi strona upload plików do katalogu jest zablokowany- więc muszę sie ratować uploadem do bazy danych.

Oto mój plik

form.htm
  1. <?
  2. echo "<FORM ACTION='upload.php' METHOD='POST' ENCTYPE='multipart/form-data'>";
  3. echo " Zdjęcie: <INPUT type='file' name='zdjecie'><br>";
  4. echo "<INPUT TYPE='hidden' NAME='username' value= '$l';><br>";
  5. echo "<input type='hidden' name='MAX_FILE_SIZE' value='32500' />"; /* maksymalna wielkość pliku w bajtach */
  6. echo "<button type='submit' name='ok' value='wyślij zdjęcie do bazy'>";
  7. echo "<img src='zdj/wyslij.jpg' width='50' height='14' alt='wyślij zdjęcie do bazy danych'>";
  8. echo "</button>";
  9. echo "</form>";
  10. ?>




upload.php
  1. <?php
  2. $explode = explode('.', $HTTP_POST_FILES['zdjecie']['name']);
  3. if($explode[1] == 'jpg' || $explode[1] == 'gif' || $explode[1] == 'png' || $explode[1] == 'GIF' || $explode[1] == 'JPG' || $explode[1] == 'PNG' || $explode[1] == 'TIF' || $explode[1] == 'tif' || $explode[1] == 'PSD' || $explode[1] == 'psd' || $explode[1] == 'JPEG' || $explode[1] == 'jpeg') {
  4. $max_rozmiar = 250*250;
  5. if (is_uploaded_file($_FILES['zdjecie']['tmp_name'])) {
  6. if ($_FILES['zdjecie']['size'] > $max_rozmiar) {
  7. echo 'Błąd! Plik jest za duży!';
  8. }else{
  9. $fhandle = fopen($HTTP_POST_FILES['zdjecie']['tmp_name'], "r");
  10. $content = base64_encode(fread($fhandle, $HTTP_POST_FILES['zdjecie']['size']));
  11. fclose($fhandle);
  12.  
  13. include('config.php');
  14. $query = sprintf("insert into zdjecia (username, zdjecie, obecne) values (\"%s\"\"%s\"\"%s\")", $HTTP_POST_VARS['username'], $content, 'TAK');
  15. $zapytanie = mysql_query($query);
  16.  
  17. if (!$zapytanie)
  18. {
  19. echo sprintf("Nie można dodać zdjęcia! Sad Error : %s", mysql_error());
  20. }
  21. else
  22. {
  23. echo "<img src=\"http://moja-strona.pl/showimage.php?username=".$l."\">";
  24. echo "<center>";
  25. echo "Powyższy obrazek został zapisany do bazy danych MySQL";
  26. echo "</center>";
  27. }
  28. }
  29. }
  30. }else{
  31. echo "Wybrany plik ma nieodpowiednie rozszerzenie!";
  32. }
  33.  
  34. ?>




Ale dodaje mi duże zdjęcia;/ Gdzie robie błąd? Proszę o pomoc. Pozdrawiam.

No i jak? Nikt nie odpowie??
No to po to moderator przeniósł mój post do przedszkola?
Bo niby temat banalny? No to jak taki banalny- to proszę o pomoc. A tymczasem nikt tu nie zagląda. Masa jest postów na forum o uploadzie, ale ja nie chcę wrzucić czegos niebezpiecznego na serwer i nie chcę ograniczyć się do:
  1. <?php
  2. echo "<FORM ACTION='upload.php' METHOD='POST' ENCTYPE='multipart/form-data'>";
  3. echo " Zdjęcie: <INPUT type='file' name='zdjecie'><br>";
  4. echo "<INPUT TYPE='hidden' NAME='username' value= '$l';><br>";
  5. echo "<input type='hidden' name='MAX_FILE_SIZE' value='32500' />"; /* maksymalna wielkość pliku w bajtach */
  6. echo "<button type='submit' name='ok' value='wyślij zdjęcie do bazy'>";
  7. echo "<img src='zdj/wyslij.jpg' width='50' height='14' alt='wyślij zdjęcie do bazy danych'>";
  8. echo "</button>";
  9. echo "</form>";
  10. ?>


To tak jak byście zrobili rejestrację/logowanie bez ochrony przed SQL INJECTION!! Takich postów też jest masa;/ Ale komu sie przedadząquestionmark.gif Ajak ktoś zapyta jak ochronić przed SQL INJECTION- to zaraz admin lub moderator przenosi do przedszkola albo odsyła do tego durnego manuala. Wstyd.
Ale ja nie chcę takich głupich skryptów zamieszczać a i i mam dość czytania takich samych postów i tego samego sposobu na upload.

Ponownie proszę o pomoc. Bo nadal zauważam że "wielkie głowy" to lubią pomagać tylko "wielkim głowom". W takim razie nie mam tu czego szukać a i niczego z Waszą pomocą się nie nauczę... a szkoda bo myślałem że fajne forum. Pozdrawiam.


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
Cienki1980
post 10.03.2008, 14:02:01
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


W kilku rzeczowych punktach.
Rozmiar obrazka musisz sprawdzić posługując się getimagesize()" title="Zobacz w manualu PHP" target="_manual
Rozmiar który Ty wyliczasz ma się nijak do rozmiaru przesyłanego zdjęcia.

Sprawdź sobie poniższy kod zobacz gdzie się co wyświetla a będziesz wiedział gdzie jakie warunki powstawiać do swojego kodu.
  1. <?php
  2. echo"<pre>";print_r($_FILES);echo "</pre>";
  3. echo "<pre>";print_r(getimagesize($_FILES['plik']['tmp_name']));echo "</pre>";
  4. $size=getimagesize($_FILES['plik']['tmp_name']);
  5. $xx=$size[0]*$size[1];
  6. echo $xx;
  7.  
  8. ?> 
  9. <form action="plik.php" method="post" enctype="multipart/form-data">
  10. <input type="file" name="plik">
  11. <input type="submit">
  12. </form>


--------------------
404
Go to the top of the page
+Quote Post
miccom
post 10.03.2008, 14:41:03
Post #5





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


ok. Dziękuję cienki1980 za podpowiedź. Masz u mnie dużego plusa. Działa.

Plik
form.php
  1. <?
  2. echo "<FORM ACTION='upload.php' METHOD='POST' ENCTYPE='multipart/form-data'>";
  3. echo " Zdjęcie: <INPUT type='file' name='zdjecie'><br>";
  4. echo "<INPUT TYPE='hidden' NAME='username' value= '$l';><br>";
  5. echo "<input type='hidden' name='MAX_FILE_SIZE' value='32500' />"; /* maksymalna wielkość pliku w bajtach */
  6. echo "<button type='submit' name='ok' value='wyślij zdjęcie do bazy'>";
  7. echo "<img src='zdj/wyslij.jpg' width='50' height='14' alt='wyślij zdjęcie do bazy danych'>";
  8. echo "</button>";
  9. echo "</form>";
  10. ?>



PLIK upload.php
  1. <?php
  2. $ipik=$_SERVER["REMOTE_ADDR"];
  3. $ok=$_POST['ok'];
  4. if($ok == 1029){
  5. $explode = explode('.', $HTTP_POST_FILES['zdjecie']['name']);
  6. if($explode[1] == 'jpg' || $explode[1] == 'gif' || $explode[1] == 'png' || $explode[1] == 'GIF' || $explode[1] == 'JPG' || $explode[1] == 'PNG' || $explode[1] == 'TIF' || $explode[1] == 'tif' || $explode[1] == 'PSD' || $explode[1] == 'psd' || $explode[1] == 'JPEG' || $explode[1] == 'jpeg') {
  7. $size=getimagesize($_FILES['zdjecie']['tmp_name']);
  8. $size[0];
  9. $size[1];
  10. $xx=$size[0]*$size[1];
  11. $xx;
  12. if($size[0] < 500 && $size[1] < 500){
  13. $fhandle = fopen($HTTP_POST_FILES['zdjecie']['tmp_name'], "r");
  14. $content = base64_encode(fread($fhandle, $HTTP_POST_FILES['zdjecie']['size']));
  15. fclose($fhandle);
  16.  
  17. include('config.php');
  18. $query = sprintf("insert into zdjecia (username, zdjecie, obecne) values (\"%s\"\"%s\"\"%s\")", $HTTP_POST_VARS['username'], $content, 'TAK');
  19. $zapytanie = mysql_query($query);
  20.  
  21. if (!$zapytanie) 
  22. { 
  23. echo sprintf("Nie można dodać zdjęcia! Sad Error : %s", mysql_error()) ; 
  24. }
  25. else 
  26. { 
  27. echo "<img src=\"http://www.moja_strona.pl/showimage.php?username=".$l."\">";
  28. echo "<center>";
  29. echo "Powyższy obrazek został zapisany do bazy danych MySQL";
  30. echo "</center>";
  31. }
  32. }else{
  33. echo "plik jest za duży!";
  34. } 
  35. }else{
  36. echo "Wybrany plik ma nieodpowiednie rozszerzenie!"; 
  37. }
  38. }else{
  39. echo "Próba włamania do systemu! Próbujesz złamać PRAWO POLSKIE.<br /> Twój adres IP (<b> $ipik</b> ) został zapisany- przy następnej próbie zostanie zablokowany, a My wystąpimy na drogę sądową.";
  40. }
  41. ?>


Powyższe skrypty wrzucają na serwer tylko jpg, jpeg, gif, png o maksymalnym rozmiarze 500x500 pix. I o to mi chodziło. Jeszce raz dziękuję za pomoc.

Ten post edytował miccom 10.03.2008, 14:44:32


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
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: 12.06.2025 - 11:22