Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Formularz do uploadu plików
$migło
post 3.09.2009, 23:28:55
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 3.09.2009

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


Witam,

Jestem nowy na tym forum, aczkolwiek czytam je od jakiegoś czasu.

Popełniłem byłem skrypt do uploadu plików i prosiłbym o sprawdzenie, ew. wytknięcie błędów, tudzież wskazanie miejsc gdzie można coś poprawić, ulepszyć, bezpieczeństwo zwiększyć.
Ostatnie moje wypociny w PHP miały miejsce w 2002 roku, tak więc przerwę miałem dość długą.
Znajoma poprosiła mnie aby jej zrobić prostą stronę gdzie można będzie uploadować pliki Worda, Excela, PowerPointa, PDF, TXT i RTF.
Poczytałem trochę, podszkoliłem, wypociny zamieszczam poniżej.

Skrypt działa. Jeśli ktoś chciałby go używać, proszę bardzo.

Z góry dziękuję za wszelkie komentarze.

Formularz:
  1. <table border=0 width=380><tr><td><form action="plik.php" method="POST" enctype="multipart/form-data">
  2. <input type="HIDDEN" name="form_id2" value="0"></td></tr>
  3. <tr><td width=43%>Plik:</td><td><input type="FILE" name="pliczek"></td></tr>
  4. <tr><td width=43%>Nazwisko, imię, firma:</td><td><input type="TEXT" name="nazwisko" value="" size="30"></td></tr>
  5. <tr><td width=43%>Adres email:</td><td><input type="TEXT" name="email" value="" size="30"></td></tr>
  6. <tr><td width=43%>Telefon:</td><td><input type="TEXT" name="teflon" value="" size="30"></td></tr>
  7. <tr><td colspan=2><img src="graf/1px.gif" height="1" width="35">Treść wiadomości:</td></tr>
  8. <tr align=center><td colspan=2><textarea cols="35" rows="10" name="tresc" size="10"></textarea></td></tr>
  9. <tr align=center><td width=43%><input type="SUBMIT" value="Wyślij" name="SUBMIT"></td>
  10. <td><input type="RESET" value="Wyczyść" name="RESET"></td></tr>
  11. </form></table>


Skrypt:
  1. <?
  2. //Zmienne
  3. $ok="plik_ok.html";
  4. $notok="plik_notok.html";
  5.  
  6. $adres = "adres@email.pl";
  7.  
  8. $temat = $_POST['nazwisko'] . " - " . $_POST['teflon'];
  9. $email = $_POST['email'];
  10. $tresc = $_POST['tresc'];
  11. $pl_nazwa = $_FILES['pliczek']['name'];
  12. $pl_typ = $_FILES['pliczek']['type'];
  13.  
  14. $naglowki = "MIME-Version: 1.0\n";
  15. $naglowki .= "Content-type: text/html; charset=utf-8\n";
  16. $naglowki .= "From: $email\n";
  17.  
  18. function zmienne() { //sprawdzamy czy formularz wypełniony (treść może być pusta)
  19. if (!empty($_POST['nazwisko']) && !empty($_POST['email']) && !empty($_POST['teflon']) && !empty($_FILES['pliczek']['name'])) {
  20. return 1;
  21. } else {
  22. return 0;
  23. }
  24. }
  25.  
  26. function sprawdz($email) { //sprawdzamy czy jest i czy poprawny adres email
  27. if ((!$email) || ($email=="") || (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$",$email)) || (strrpos($email,' ') > 0)) {
  28. return 0;
  29. } else {
  30. return 1;
  31. }
  32. }
  33.  
  34. function spr_plik($pl_nazwa) { //sprawdz czy plik odpowiedniego typu
  35. $pl_typ = $_FILES['pliczek']['type'];
  36. $typy_mime = array("application/msword","application/vnd.ms-excel","application/vnd.ms-powerpoint","application/pdf","text/plain","text/rtf","text/richtext"); //deklaracja akceptowanych typów MIME
  37. if(in_array($pl_typ,$typy_mime)) { //sprawdzenie typu mime
  38. return 1;
  39. } else {
  40. return 0;
  41. }
  42. }
  43.  
  44. if (zmienne() && sprawdz($email) && spr_plik($pl_nazwa))
  45. {
  46. $ext = substr($pl_nazwa, strrpos( $pl_nazwa, '.')); //rozszerzenie ciach
  47. $pl_nowy = "aplod/" . md5(time() . $pl_nazwa) . $ext; //wygeneruj nową nazwę pliku
  48. if(is_uploaded_file($_FILES['pliczek']['tmp_name']))
  49. if(move_uploaded_file($_FILES['pliczek']['tmp_name'], $pl_nowy)) { //załaduj plik z nową nazwą
  50. $tresc = $_POST['tresc'];
  51. $tresc .= "\nZałączony plik: <a href=http://domena.pl/$pl_nowy>$pl_nowy</a>"; //dodaj na końcu wiadomości info o pliku
  52. $tresc .= "\nOryginalna nazwa pliku: $pl_nazwa"; //Do wiadomości
  53. $tresc .= "\nKontakt: $temat"; //Od kogo
  54. $tresc .= "\nDziękuje";
  55. $tresc = str_replace("\n", "<br>", $tresc);
  56. mail($adres, $temat, $tresc, $naglowki); //wyślij maila
  57. include ($ok); //wyświetl stone że jest wporzo
  58. } else {
  59. include ($notok); //wyświetl strone że nie jest wporzo
  60. }
  61. }
  62. else
  63. {
  64. include ($notok); //wyświetl strone że nie jest wporzo
  65. }
  66.  
  67. ?>
Go to the top of the page
+Quote Post
Quider
post 4.09.2009, 00:36:26
Post #2





Grupa: Zarejestrowani
Postów: 91
Pomógł: 9
Dołączył: 6.03.2009
Skąd: Katowice

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


jeśli działa, to w czym problem?


--------------------
www.quider.pl <- moja prywatna strona

Pomogłem? Kliknij Pomógł
Go to the top of the page
+Quote Post
sadistic_son
post 4.09.2009, 01:24:05
Post #3





Grupa: Zarejestrowani
Postów: 1 477
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Zamiast:
  1. if (!empty($_POST['nazwisko']) && !empty($_POST['email']) && !empty($_POST['teflon']) && !empty($_FILES['pliczek']['name'])) {
użyłbym:
  1. if ($_POST['nazwisko']!="" && $_POST['email']!="" && $_POST['teflon']!="" && $_FILES['pliczek']['name']!="") {


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
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: 26.04.2024 - 11:49