Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP]Kilka pytan - co do mojego uploadu

Napisany przez: zdzichu6969 26.05.2008, 20:59:03

Witam wszystkich, na wstepie chciałbym się przywitac:P


1. Mam upload plików chciałbym, aby za pomoca niego uploadowało by mi tylko pliki graficzne tj. tif, gif, jpg, bmp i zeby automatycznie blokowane były inne rozszezenia.
Działa to pod adresem: http://www.grucha.elektroda.eu
Tak wygląda skrypt:

Cytat
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
<title>Upload by Grucha</title>
</head>
<body>
<body bgcolor="gray">
<font color="white">
<center> <br><img src="http://grucha.elektroda.eu/gfx.jpg"><br><br>


<b>UPLOAD PLIKÓW BY GRUCHA</b><br><br><br>
<?php
echo '<?xml version="1.0" encoding="iso-8859-2"?>';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd">


<div>
<form enctype="multipart/form-data" action="index.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="450000000000000" />
<input name="plik" type="file" />
<input type="submit" value="Wgraj" />
</form>
</div>

<?php
$plik_tmp = $_FILES['plik']['tmp_name'];
$plik_nazwa = $_FILES['plik']['name'];
$plik_rozmiar = $_FILES['plik']['size'];

if(is_uploaded_file($plik_tmp)) {
move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
<strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!";

echo "<br>Znajduję sie pod adresem:<b> <a href='http://grucha.elektroda.eu/upload/$plik_nazwa'>http://grucha.elektroda.eu/upload/$plik_nazwa</a>
<br><br>
<table border='0'><center>
<tr><td><td bgcolor='#426B9C'> <br>
Grafika na WWW<br>
<textarea cols='45' rows='5'><img src='http://grucha.elektroda.eu/upload/$plik_nazwa'></textarea>
<br><br>
Postać linku<br>
<textarea cols='45' rows='5'><a href='http://grucha.elektroda.eu/upload/$plik_nazwa'></textarea>
<br><br>
Miniaturka HTML<br>
<textarea cols='45' rows='5'><a href='http://grucha.elektroda.eu/upload/$plik_nazwa'><img src='http://grucha.elektroda.eu/upload/$plik_nazwa' width='200' height='160' border='0' target='_new'></a></textarea>
<br></center>
</td><td><td bgcolor='#426B9C'>
<br><br>
Wgrany obraz:<br>
<a href='http://grucha.elektroda.eu/upload/$plik_nazwa'><img src='http://grucha.elektroda.eu/upload/$plik_nazwa' width='200' height='160' border='0' target='_new'></a>
</td></table>
</b>";

}
?>
<br><br><br><br>
ŠWszelkie prawa zastrzeżone <a href="kontakt.html" target="new">Grucha</a><br>
Strona na serwerze elektroda.eu | Dzięki uprzejmości <a href="http://elektroda.pl" target="new">elektroda.pl</a>
</body>
</html>
</font>

Napisany przez: radex_p 26.05.2008, 21:08:53

Jaki to ma związek z programowaniem obiektowym?

Co do pytania:

$_FILES['plik']['name']

później tylko np. explode i patrzysz na ostatni człon.

Napisany przez: zdzichu6969 26.05.2008, 21:22:00

Przepraszam, nie wiedziałem gdzie to przyczepic.

radex_p
jak to bedzie wyglądac w praktyce w skrypcie?

Napisany przez: Puciek 26.05.2008, 21:28:01

Takiego czegos nie daje sie na serwer, trzymaj localnie az bedzie mialo sens tongue.gif

http://grucha.elektroda.eu/upload/phpinfo.php
Szkoda tylko ze shell_exec wylaczony sad.gif

Napisany przez: Cysiaczek 26.05.2008, 21:31:12

W praktyce? Wystarczą samiuteńkie podstawy php smile.gif Odrobina samodzielności.

http://pl.php.net/manual/en/function.explode.php

i komentarze na tych stronach:
http://pl.php.net/manual/en/function.is-uploaded-file.php
http://pl.php.net/manual/en/function.move-uploaded-file.php

Napisany przez: empathon 26.05.2008, 21:38:31

Ojoj panie z czym do ludzi?

Kod
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
<title>Upload by Grucha</title>
</head>
<body>
<body bgcolor="gray">

Dwa razy otwierasz body?
Kod
<font color="white">
<center> <br><img src="http://grucha.elektroda.eu/gfx.jpg"><br><br>


<b>UPLOAD PLIKÓW BY GRUCHA</b><br><br><br>
<?php
echo '<?xml version="1.0" encoding="iso-8859-2"?>';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd">

A to przypadkiem nie powinno być na początku?
Kod
<div>
<form enctype="multipart/form-data" action="index.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="450000000000000" />
<input name="plik" type="file" />
<input type="submit" value="Wgraj" />
</form>
</div>

<?php
$plik_tmp = $_FILES['plik']['tmp_name'];
$plik_nazwa = $_FILES['plik']['name'];
$plik_rozmiar = $_FILES['plik']['size'];

if(is_uploaded_file($plik_tmp)) {
move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
<strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!";

echo "<br>Znajduję sie pod adresem:<b> <a href='http://grucha.elektroda.eu/upload/$plik_nazwa'>http://grucha.elektroda.eu/upload/$plik_nazwa</a>
<br><br>
<table border='0'><center>
<tr><td><td bgcolor='#426B9C'> <br>
Grafika na WWW<br>
<textarea cols='45' rows='5'><img src='http://grucha.elektroda.eu/upload/$plik_nazwa'></textarea>
<br><br>
Postać linku<br>
<textarea cols='45' rows='5'><a href='http://grucha.elektroda.eu/upload/$plik_nazwa'></textarea>
<br><br>
Miniaturka HTML<br>
<textarea cols='45' rows='5'><a href='http://grucha.elektroda.eu/upload/$plik_nazwa'><img src='http://grucha.elektroda.eu/upload/$plik_nazwa' width='200' height='160' border='0' target='_new'></a></textarea>
<br></center>
</td><td><td bgcolor='#426B9C'>
<br><br>
Wgrany obraz:<br>
<a href='http://grucha.elektroda.eu/upload/$plik_nazwa'><img src='http://grucha.elektroda.eu/upload/$plik_nazwa' width='200' height='160' border='0' target='_new'></a>
</td></table>
</b>";

}
?>
<br><br><br><br>
ŠWszelkie prawa zastrzeżone <a href="kontakt.html" target="new">Grucha</a><br>
Strona na serwerze elektroda.eu | Dzięki uprzejmości <a href="http://elektroda.pl" target="new">elektroda.pl</a>
</body>
</html>
</font>

I dajesz coś za zamknietym znacznikiem </html> ?
To wszystko szczegóły.
Co do typu pliku(niekoniecznie rozszerzenia) sprawdź http://pl.php.net/manual/en/function.mime-content-type.php.
To podstawowe zabezpieczenie.
W tym momencie można Ci wgrać cokolwiek. Lepiej usuń skrypt puki go nie zabezpieczysz!

Napisany przez: zdzichu6969 26.05.2008, 21:39:42

Nie jestem w stanie pojąć php tak szybko. Dotychczas znałem biegle html'a. Widac to szczególnie z mojego Uploadu, jednak potrzebuje tylka tę jedyną funkcję wstydnis.gif

Mimo wszystko dziękuje za pomoc - każdy otrzymuje punkt pomógł.
Pozdrawiam.

Z chęcią przyjmę więcej instrukcji.

gg tez
//GG: 3216215

Napisany przez: miccom 26.05.2008, 23:03:14

Cytat(zdzichu6969 @ 26.05.2008, 21:39:42 ) *
Nie jestem w stanie pojąć php tak szybko. Dotychczas znałem biegle html'a. Widac to szczególnie z mojego Uploadu, jednak potrzebuje tylka tę jedyną funkcję wstydnis.gif

Mimo wszystko dziękuje za pomoc - każdy otrzymuje punkt pomógł.
Pozdrawiam.

Z chęcią przyjmę więcej instrukcji.

gg tez
//GG: 3216215

Myślę że ktoś kto zna biegle html nie otwiera dwóch <body> ;/

Mój upload plików(zdjęć) wygląda tak:

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

upload.php
  1. <?php
  2. $explode = http://www.php.net/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. $size=http://www.php.net/getimagesize($_FILES['zdjecie']['tmp_name']);
  5. $size[0];
  6. $size[1];
  7. $xx=$size[0]*$size[1];
  8. $xx;
  9. if($size[0] < 360 && $size[1] < 500){//tu wstawiasz max rozmiar obrazka
  10. $fhandle = http://www.php.net/fopen($HTTP_POST_FILES['zdjecie']['tmp_name'], "r");
  11. $content = http://www.php.net/base64_encode(http://www.php.net/fread($fhandle, $HTTP_POST_FILES['zdjecie']['size']));
  12. http://www.php.net/fclose($fhandle);
  13.  
  14. include('config.php');
  15. $query = http://www.php.net/sprintf("insert into zdjecia (username, zdjecie, obecne) values (\"%s\"\"%s\"\"%s\")", $HTTP_POST_VARS['username'], $content, 'TAK');
  16. $zapytanie = http://www.php.net/mysql_query($query);
  17.  
  18. if (!$zapytanie) 
  19. { 
  20. http://www.php.net/echo http://www.php.net/sprintf("Nie można dodać zdjęcia! Sad Error : %s", http://www.php.net/mysql_error()) ; 
  21. }
  22. else 
  23. { 
  24. http://www.php.net/echo "<center><img src=\"http://www.twoja_strona.pl/showimage.php?username=".$l."\"></center>";//u mnie każdy user może dodać fotki i stąd podział. Można to ominąć.
  25. http://www.php.net/echo "<center>";
  26. http://www.php.net/echo "Powyższy obrazek został zapisany do bazy danych MySQL";
  27. http://www.php.net/echo "</center>";
  28. }
  29. }else{
  30. http://www.php.net/echo "plik jest za duży!";
  31. } 
  32. }else{
  33. http://www.php.net/echo "Wybrany plik ma nieodpowiednie rozszerzenie!"; 
  34. }
  35. }else{
  36. http://www.php.net/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ą.";
  37. }
  38. http://www.php.net/mysql_close($dbc);
  39. ?>


showimage.php- ten skrypt przekazuje do serwera zdjęcie(jeśli jest w bazie)
  1. <?
  2. http://www.php.net/header("Content-type: image/jpg;");
  3. $l=$_GET['username'];
  4. include('config.php');
  5. $result = http://www.php.net/mysql_query("SELECT zdjecie FROM zdjecia WHERE `username`='$l'");
  6. if (http://www.php.net/mysql_num_rows($result) != 0)
  7. {
  8. $row = http://www.php.net/mysql_fetch_assoc($result);
  9. http://www.php.net/echo http://www.php.net/base64_decode($row['zdjecie']);
  10. }
  11. ?>


Myślę że pomogłem. Pozdrawiam. miccom

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)