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:
<table border=0 width=380><tr><td><form action="plik.php" method="POST" enctype="multipart/form-data"> <input type="HIDDEN" name="form_id2" value="0"></td></tr> <tr><td width=43%>Nazwisko, imię, firma:
</td><td><input type="TEXT" name="nazwisko" value="" size="30"></td></tr> <tr><td width=43%>Adres email:
</td><td><input type="TEXT" name="email" value="" size="30"></td></tr> <tr><td width=43%>Telefon:
</td><td><input type="TEXT" name="teflon" value="" size="30"></td></tr> <tr><td colspan=2><img src="graf/1px.gif" height="1" width="35">Treść wiadomości:
</td></tr> <tr align=center><td width=43%><input type="SUBMIT" value="Wyślij" name="SUBMIT"></td> <td><input type="RESET" value="Wyczyść" name="RESET"></td></tr>
Skrypt:
<?
//Zmienne
$ok="plik_ok.html";
$notok="plik_notok.html";
$adres = "adres@email.pl";
$temat = $_POST['nazwisko'] . " - " . $_POST['teflon'];
$email = $_POST['email'];
$tresc = $_POST['tresc'];
$pl_nazwa = $_FILES['pliczek']['name'];
$pl_typ = $_FILES['pliczek']['type'];
$naglowki = "MIME-Version: 1.0\n";
$naglowki .= "Content-type: text/html; charset=utf-8\n";
$naglowki .= "From: $email\n";
function zmienne() { //sprawdzamy czy formularz wypełniony (treść może być pusta)
if (!empty($_POST['nazwisko']) && !empty($_POST['email']) && !empty($_POST['teflon']) && !empty($_FILES['pliczek']['name'])) { return 1;
} else {
return 0;
}
}
function sprawdz($email) { //sprawdzamy czy jest i czy poprawny adres email
if ((!$email) || ($email=="") || (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$",$email)) || (strrpos($email,' ') > 0
)) { return 0;
} else {
return 1;
}
}
function spr_plik($pl_nazwa) { //sprawdz czy plik odpowiedniego typu
$pl_typ = $_FILES['pliczek']['type'];
$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 if(in_array($pl_typ,$typy_mime)) { //sprawdzenie typu mime return 1;
} else {
return 0;
}
}
if (zmienne() && sprawdz($email) && spr_plik($pl_nazwa))
{
$ext = substr($pl_nazwa, strrpos( $pl_nazwa, '.')); //rozszerzenie ciach $pl_nowy = "aplod/" . md5(time() . $pl_nazwa) . $ext; //wygeneruj nową nazwę pliku if(move_uploaded_file($_FILES['pliczek']['tmp_name'], $pl_nowy)) { //załaduj plik z nową nazwą $tresc = $_POST['tresc'];
$tresc .= "\nZałączony plik: <a href=http://domena.pl/$pl_nowy>$pl_nowy</a>"; //dodaj na końcu wiadomości info o pliku
$tresc .= "\nOryginalna nazwa pliku: $pl_nazwa"; //Do wiadomości
$tresc .= "\nKontakt: $temat"; //Od kogo
$tresc .= "\nDziękuje";
mail($adres, $temat, $tresc, $naglowki); //wyślij maila include ($ok); //wyświetl stone że jest wporzo
} else {
include ($notok); //wyświetl strone że nie jest wporzo
}
}
else
{
include ($notok); //wyświetl strone że nie jest wporzo
}
?>