Nie dochodzą załączniki z formularza

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
rafal005
Posty: 1
Rejestracja: śr maja 19, 2010 11:47 pm

Nie dochodzą załączniki z formularza

Post autor: rafal005 »

Witam

Mam następujący problem w skrypcie PHP obsługującym formularz na stronie. Tak naprawdę do końca nie wiem czy jest to problem w skrypcie, czy leży on po stronie serwera.

Gdy wypełnia się formularz wchodząc na stronę poprzez domenę http://www.miss-licealistek.pl/ to wysyła się oczywiście, ale załącznik nie dochodzi.

Gdy natomiast wejdę przez http://goraczka.home.pl/miss-licealistek/ to załącznik dochodzi.

Jak łatwo się domyśleć, ludzie na tą stronę będą wchodzić poprzez: http://www.miss-licealistek.pl/

Czy wie ktoś może o co chodzi? Czy jest to coś błahego, czego zapomniałem dać w kodzie?

Poniżej fragmenty kodów z plików index.php i wyslij.php

Kod: Zaznacz cały

<FORM NAME="zalacznik" METHOD="post" ACTION="wyslij.php" ENCTYPE="multipart/form-data">
<input type="hidden" name="wyslij" value="1" />
<input type="hidden" name="MAX_FILE_SIZE" value="5000000" />
<table border="0">
<tr>
<td width="190">Imię i nazwisko</td>
<td width="350"><input type="text" name="imie" style="width: 350px"></td>
</tr>
<tr>
<td>Wiek</td>
<td><input type="text" name="wiek" style="width: 350px"></td>
</tr>
<tr>
<td>Kolor oczu</td>
<td><input type="text" name="oczy" style="width: 350px"></td>
</tr>
<tr>
<td>Kolor wlosow</td>
<td><input type="text" name="wlosy" style="width: 350px"></td>
</tr>
<tr>
<td>Wzrost</td>
<td><input type="text" name="wzrost" style="width: 350px"></td>
</tr>
<tr>
<td>Szkoła</td>
<td><input type="text" name="uczelnia" style="width: 350px"></td>
</tr>
<tr>
<td>E-mail</td>
<td><input type="text" name="email" style="width: 350px"></td>
</tr>
<tr>
<td>Telefon</td>
<td><input type="text" name="phone" style="width: 350px"></td>
</tr>
<tr>
<td>Gadu</td>
<td><input type="text" name="gadu" style="width: 350px"></td>
</tr>
<tr>
<td>Zdjecie (max 5mb)</td>
<td><INPUT type="file" name="plik1"></td>
</tr>
<tr>
<td>Słówko o sobie</td>
<td><textarea name="tresc" style="width: 350px; height: 100px"></textarea></td>
</tr>
<tr>
  <td> </td>
  <td><input type="SUBMIT" value="Wyślij zgłoszenie" /></td>
</tr>
</table>
</FORM>

Kod: Zaznacz cały

<?php
//sprawdzenie czy załącznik pochodzi z formularza
if ($_POST["wyslij"]==1)
{
srand((double)microtime()*1000000);
$znacznik = md5(uniqid(rand()));

// dane o odbiorcy, nadawcy
$odbiorca="[email protected]";
$tytul="Zgłoszenie - Miss Licealistek WrocLove";
$nadawca = "Kandydatka";
$nadawca_mail="[email protected]";

// treϾ listu
$tresclistu = "Tresc wiadomosci:\nImie i nazwisko: $_POST[imie]\nWiek: $_POST[wiek]\nE-mail: $_POST[email]\nPhone: $_POST[phone]\nWlosy: $_POST[wlosy]\nOczy: $_POST[oczy]\nUczelnia: $_POST[uczelnia]\nGadu: $_POST[gadu]\n$_POST[tresc]";

// definicja nagłówków
  $naglowki  = "From: $nadawca <$nadawca_mail>\n";
  $naglowki .= "MIME-Version: 1.0\n";
  $naglowki .= "Content-Type: multipart/mixed;\n";
  $naglowki .= "\tboundary=\"___$znacznik==\"";

// nagłówki listu
  $tresc="--___$znacznik==\n";
  $tresc .="Content-Type: text/plain; charset=\"utf-8\"\n";
  $tresc .="Content-Transfer-Encoding: 8bit\n";
  $tresc .="\n$tresclistu\n";

// nagłówki i obsługa załącznika
  $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  $plik_wielkosc = $_FILES["plik1"]["size"];

if (is_uploaded_file($plik_nazwa_tmp))
  {
    $tresc .="--___$znacznik==\n";
    $tresc .="Content-Type: image/gif\n";
    $tresc .="Content-Disposition: attachment;\n";
    $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
    $tresc .="Content-Transfer-Encoding: base64\n\n";
    $f = fopen($plik_nazwa_tmp,"rb");
    $dane = fread($f,filesize($plik_nazwa_tmp));
    fclose($f);
    $tresc .= chunk_split(base64_encode($dane));
    $tresc .="--___$znacznik==--\n";
  }

// wysłanie listu
     if (mail($odbiorca,$tytul,$tresc,$naglowki))
   {
   print "Dziękujemy za zgłoszenie się do Wyborów Miss Licealistek. Skontaktujemy się z Tobą mailowo lub telefonicznie w najbliższym czasie.";
   }
   else
   {
   print "Wystąpił BŁĄD. E-mail NIE został wysłany poprawnie.
   <br>Prosimy o <a href=\"java script:history.back();\">powrót</a> i wysłanie zgłoszenia ponownie.";
   }
}
?>
ODPOWIEDZ