Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl


$migło
Napisane: 3.09.2009, 23:28:55





Grupa: Zarejestrowani
Postów: 1
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. ?>
  Forum: Przedszkole · Podgląd postu: #657179 · Odpowiedzi: 2 · Wyświetleń: 399


New Posts  Nowe odpowiedzi
No New Posts  Brak nowych odpowiedzi
Hot topic  Popularny temat (Nowe)
No new  Popularny temat (Brak nowych)
Poll  Sonda (Nowe)
No new votes  Sonda (Brak nowych)
Closed  Zamknięty temat
Moved  Przeniesiony temat
 

RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 19:06