[PHP] Problem z załącznikiem w formularzu kontaktowym - Wersja do druku
+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych)
+--- Wątek: [PHP] Problem z załącznikiem w formularzu kontaktowym (/thread-php-problem-z-zalacznikiem-w-formularzu-kontaktowym)
|
[PHP] Problem z załącznikiem w formularzu kontaktowym - martinprz - 09-10-2012
Witam,
Prosiłbym jeśli możecie o pomoc w rozwiązaniu problemu dotyczącego linka, który ma dochodzić na skrzynkę e-mail.
A mianowicie mam następujący kod wysyłający e-maila z załącznikiem (ten kod działa i nie ma żadnych błędów przy wysyłce)- pojawia się nastepujacy komunikat: Plik przesłany nazwa_pliku_1.jpg / 43 [kB] Wiadomość została wysłana poprawnie!- czyli jest ok:
Plik kontakt.php wygląda następująco:
Kod PHP: <?php
//include("poczatek_strony.php");
$imie = htmlspecialchars(trim($_POST['imie'])); $nazwisko = htmlspecialchars(trim($_POST['nazwisko'])); $e_mail = htmlspecialchars(trim($_POST['e_mail'])); $temat_wiadomosci = htmlspecialchars(trim($_POST['temat_wiadomosci'])); $tresc_wiadomosci = htmlspecialchars(trim($_POST['wiadomosc'])); $wynik = htmlspecialchars(trim($_POST['wynik'])); $wyslij = $_POST['wyslij']; //Sprawdzam imię if (empty($imie)) { echo "Nie wypełniłeś pola <span>Imię !</span><br>"; } elseif (strlen($imie) > 20) { echo "Za długie imię - max. 20 znaków <br>"; } //Sprawdzam nazwisko if (empty($imie)) { echo "Nie wypełniłeś pola <span>Nazwisko!</span><br>"; } elseif (strlen($nazwisko) > 50) { echo "Za długie imię - max. 50 znaków <br>"; } //Sprawdzam e-mail if (empty($e_mail)) { echo "Nie wypełniłeś pola <span>E-mail !</span><br>"; } elseif (strlen($e_mail) > 50) { echo "Za długi e-mail - max. 50 znaków <br>"; } elseif (preg_match('/^[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ0-9\-\_\.]+\@[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ0-9\-\_\.]+\.[a-z]{2,4}$/',$e_mail) == false) { echo "Niepoprawny adres E-mail! <br>"; }
//Sprawdzam temat if (empty($temat_wiadomosci)) { echo "Nie wypełniłeś pola <span>Temat !</span><br>"; } elseif (strlen($temat_wiadomosci) > 200) { echo "Za długi temat - max. 200 znaków <br/>"; } //Sprawdzam wiadomość if (empty($tresc_wiadomosci)) { echo "Nie wypełniłeś pola <span>Wiadomość !</span><br>"; } elseif (strlen($tresc_wiadomosci) > 500) { echo "Za długa wiadomość - max. 500 znaków <br>"; } //Sprawdzam czy wynik działania jest prawidłowy if ($wynik!= "9") { echo "Błąd: nieprawidłowy wynik działania!"; exit(); }
//dodawanie plików do formularza
if(is_uploaded_file($plik_tmp)) die ('Nie załadowano żadnego pliku'); { //pobieramy rozszerzenie pliku, $typ=substr($_FILES['dodaj_plik']['name'],-4,4); //sprawdzamy typ if($typ!='.doc' and $typ!='.docx'and $typ!='.docm' and $typ!='dotx' and $typ!='dotm' and $typ!='.odt'and $typ!='.ods'and $typ!='.odp'and $typ!='.odf' and $typ!='.zip' and $typ!='.rar' and $typ!='.jpg' and $typ!='.gif' and $typ!='.bmp' and $typ!='.png' and $typ!='.avi' and $typ!='.mpg' and $typ!='mpeg' and $typ!='.mp3'and $typ!='.wav'and $typ!='html' and $typ!='.htm' and $typ!='.exe' and $typ!='.txt' and $typ!='.asc' and $typ!='.xls' and $typ!='xlsx' and $typ!='xlsm' and $typ!='xltx' and $typ!='xltm' and $typ!='xlam' and $typ!='.ppt' and $typ!='.pptx' and $typ!='.pptm' and $typ!='.potx' and $typ!='.potm' and $typ!='.ppam' and $typ!='.ppsx' and $typ!='.ppsm' and $typ!='.mdb' and $typ!='db' and $typ!='.cdr' and $typ!='.pdf') { echo "Niewłaściwy format pliku, bo $typ";
exit(); }
//zapisujemy plik na dysku move_uploaded_file($_FILES['dodaj_plik']['tmp_name'],$_FILES['dodaj_plik']['name']); echo "Plik przesłany "; }
if(file_exists($_FILES['dodaj_plik']['name'])) { $rozmiar=ceil($_FILES['dodaj_plik']['size']/1024); echo "<a href='{$_FILES['dodaj_plik']['name']}'>{$_FILES['dodaj_plik']['name']}</a> / $rozmiar [kB]"; }
// sprawdzam, czy zmienne przesłane z formularza nie są puste if (!empty($imie)&&!empty($nazwisko)&&!empty($e_mail)&&!empty($temat_wiadomosci)&&!empty($tresc_wiadomosci)&&!is_uploaded_file($_FILES['dodaj_plik']['tmp_name'])&&!empty($wynik)) { // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość // zmienna $wiadomosc zawiera treść wiadomości
$wiadomosc = "Wysłał: $imie $nazwisko<br>E-mail nadawcy: $e_mail<br>Temat wiadomości: $temat_wiadomosci<br>Treść wiadomości: $tresc_wiadomosci<br><p style='margin-left: 250px; color: black;'>Pliki:<br><a href='{$_FILES['dodaj_plik']['name']}'>{$_FILES['dodaj_plik']['name']}</a> / $rozmiar [kB]'<br>'<br><p style='margin-left: 250px; color: black;'>Data wysłania:<span style='margin-left: 20px; color: red;'>".date('d-m-Y')."</span></p>";
//Adrese-maila od nadawcy (zwrotny) $adresod = 'From: [email protected]'.PHP_EOL.'Content-type: text/html; charset=utf-8';
// funkcja mail() za pomocą której wiadomość zostanie wysłana @mail("[email protected]","Wiadomość ze strony WWW","$wiadomosc","$adresod") or die('Nie udało się wysłać wiadomości');
// wyświetlenie komunikatu w przypadku powodzenia echo "<div style='text-align: center;'><strong>Wiadomość została wysłana poprawnie!<strong></div>"; } // lub w przypadku nie wypełnienia formularza do końca else { echo "<span style=\"color: #FF0000; text-align: center;\"><strong>Wypełnij wszystkie pola formularza!</strong></span>"; }
//include("koniec_strony.php");
?>
Problem polega na tym, że na skrzynce e-mailowej na którą przyhcpdzi wysłany e-mail wszystko się wyświetla tylko, nawet rozmiar wysłanego pliku oraz link z nazwą pliku, ale niestety po kliknięciu w link nie otwiera się on a jedynie jest komunikat: 404 Not Found nginx.
Czy moglibyście doradzić co należy zrobić aby ten błąd naprawić?
Pozdrawiam
martinprz
|