Witam. Mam następujący skrypt od formularza kontaktowego:
<?php
$ok = $_POST['ok'];
if($ok)
{
// Odbieramy dane z formularza
$imie = $_POST['imie'];
$email = $_POST['email'];
$temat = $_POST['subject'];
$telefon = $_POST['phone'];
$zgoda1 = $_POST['checkbox'];
$zgoda2 = $_POST['checkbox2'];
$pytania = $_POST['message'];
srand((double)microtime()*10000000);
$znacznik = md5(uniqid(rand()));
////////// USTAWIENIA //////////
$filename="praca-send.html";
$odbiorca = 'wojtek1150@gmail.com'; // Adres e-mail adresata
$tytul = "Event.pl :: Podanie na stanowisko $temat"; // Temat listu
$message = 'Dziękujemy za przesłanie formularza. Informacje zostały prawidłowo dodane do naszej bazy danych.'; // Komunikat
$error = 'Wystąpił błąd podczas wysyłania formularza'; // Komunikat błędu
$zformularza = "
Imię;: $imie
E-mail: $email
Telefon: $telefon
Zgoda na: $zgoda1
Zgoda na: $zgoda2
CV: w Załączniku
Pytania: $pytania";
//////////////////////////////
// Nagłówki
$naglowki = "From: $email\n";
$naglowki .= "MIME-Version: 1.0\n";
$naglowki .= "Content-Type: multipart/mixed;\n";
$naglowki .= "\tboundary=\"___$znacznik==\"";
// Treść listu
$tresclistu="--___$znacznik==\n";
$tresclistu .="Content-Type: text/plain; charset=\"iso-8859-2\"\n";
$tresclistu .="Content-Transfer-Encoding: 8bit\n";
$tresclistu .="\n$zformularza\n";
// Załącznik
$nazwa_tymczasowa = $_FILES["plik1"]["tmp_name"];
$nazwa_pliku = $_FILES["plik1"]["name"];
if (is_uploaded_file($nazwa_tymczasowa))
{
$tresclistu .="--___$znacznik==\n";
$tresclistu .="Content-Type: image/jpg\n";
$tresclistu .="Content-Disposition: attachment;\n";
$tresclistu .=" filename=\"$nazwa_pliku\"\n";
$tresclistu .="Content-Transfer-Encoding: base64\n\n";
$f = fopen($nazwa_tymczasowa, "rb");
$dane = fread($f,filesize($nazwa_tymczasowa));
fclose($f);
$tresclistu .= chunk_split(base64_encode($dane));
$tresclistu .="--___$znacznik==--\n";
}
// wysłanie listu
if (mail($odbiorca,$tytul,$tresclistu,$naglowki))
{
echo '';
echo '';
echo '';
echo '';
print "".$message."";
}
else
{
print "".$error."";
}
}
?>
Jednak nie wysyła mi maila z firefoxa. Przechodzi do tego pliku php i nie przerzuca na żądaną stronę.
Jakieś sugestie?
Pozdrawiam
1 A w innej przeglądarce (np. Internet Explorerze) działa poprawnie?
-
Co to znaczy “Przechodzi do tego pliku php” ?
-
Czy JavaScript masz włączony (może w Fx wyłączyłeś go lub masz NoScript)?
-
Dziwny masz ten fragment po wysłaniu e-maila - brak w nim definicji nagłówka HTML - ale zakładasz, jakbyś już był wyświetlony (i to nie txt, ale html).
-
Zamiast
echo ‘window.location.href="’.$filename.’";’;
spróbuj użyć
echo 'window.location.replace('.$filename.');';
a w linii
echo '';
spróbuj zrobić spację między średnikiem a “url=” lub ewentualnie zamknij normalnie znacznik (poprzez “>” a nie “/>”) i sprawdź czy zadziała.
- Jaka wersja Firefox?
Dzięki za odpowiedź, Więc kolejno:
-
Działa na chrome, IE, nie chodzi na firefoxie i teraz sprawdziłem na operze też nie.
-
Nie przechodzi, w sensie nie wysyła maila, niby otwiera mi się plik w php, ale nie robi z nim nic (nie wysyła maila, nie wyświetla błędu, nie wyświetla powiadomienia - nie przechodzi do podstrony).
http://wojtek1150.pl/projects/event/krynica/praca.html - tu jest ten skrypt
-
Nie ruszałem ustawień firefoxa, na innych komputerach też nie działa, więc raczej tu nie jest problem.
-
Jak dodałem znacznik to nie przechodzi mi do docelowej podstrony.
-
Zmieniłem, nic nie dało
-
Każdą przeglądarkę mam w najnowszej wersji. Firefoxa i Opera pobierałem wczoraj.
-
Mam jeszcze mały problem, chodzi o wysyłanie i odbiór.
Wysyłam:
ąęóćśźńż
Na maila przychodzi:
Ä Ä ĂłÄ Ĺ ĹşĹ Ĺź
Plik mam zapisany w UTF-8, kożystam z notepad++
Co do polskich “ogonków” - w treści e-maila ustawiasz
a wysyłasz znaki zakodowane w UTF-8 (w takim kodowaniu wpisujesz je w formularzu). Musisz użyć funkcji iconv() do ich przekonwertowania.
I o co chodzi z załącznikiem
Normalnie nic nie załączasz, ale tego nie sprawdzasz - może to jest przyczyna, może PHP się wysypuje bo odwołuje się do nie ustawionej zmiennej? Włącz komunikaty o błędach i ostrzeżenia w PHP (tylko do testów).
Spróbowałem, dać w ten sposób:
// Załącznik
//$nazwa_tymczasowa = $_FILES["plik1"]["tmp_name"];
$nazwa_pliku = $_FILES["plik1"]["name"];
if (is_uploaded_file($nazwa_pliku))
{
$tresclistu .="--___$znacznik==\n";
$tresclistu .="Content-Type: image/jpg\n";
$tresclistu .="Content-Disposition: attachment;\n";
$tresclistu .=" filename=\"$nazwa_pliku\"\n";
$tresclistu .="Content-Transfer-Encoding: base64\n\n";
$f = fopen($nazwa_pliku, "rb");
$dane = fread($f,filesize($nazwa_pliku));
fclose($f);
$tresclistu .= chunk_split(base64_encode($dane));
$tresclistu .="--___$znacznik==--\n";
}
Jednak ten sam skutek – Dodane 17.03.2013 (N) 23:44 – Witam, znalazłem problem z plikiem, otóż nie działał na firefoxie, bo wartość OK była false:
$ok = $_POST['ok'];
if($ok)
Wszystko działa gdy w pliku html mam:
Jednak to samo, tylko że obrazkowy, czyli:
Nie chce działać na firefoxie i operze. Wtedy w php jest false, cały kod php wygląda teraz tak:
<?php
$ok = $_POST['ok'];
if($ok)
{
// Odbieramy dane z formularza
$imie = $_POST['imie'];
$email = $_POST['email'];
$temat = $_POST['subject'];
$telefon = $_POST['phone'];
$zgoda1 = $_POST['checkbox'];
$zgoda2 = $_POST['checkbox2'];
$pytania = $_POST['message'];
srand((double)microtime()*10000000);
$znacznik = md5(uniqid(rand()));
////////// USTAWIENIA //////////
$filename="praca-send.html";
$odbiorca = 'wojtek1150@gmail.com'; // Adres e-mail adresata
$tytul = "Event.pl :: Podanie na stanowisko $temat"; // Temat listu
$message = 'Dziękujemy za przesłanie formularza. Informacje zostały prawidłowo dodane do naszej bazy danych.'; // Komunikat
$error = 'Wystąpił błąd podczas wysyłania formularza'; // Komunikat błędu
$zformularza = "
Imię;: $imie
E-mail: $email
Telefon: $telefon
Zgoda na: $zgoda1
Zgoda na: $zgoda2
CV: w Załączniku
Pytania: $pytania";
//////////////////////////////
// Nagłówki
$naglowki = "From: \n";
$naglowki .= "MIME-Version: 1.0\n";
$naglowki .= "Content-Type: multipart/mixed;\n";
$naglowki .= "\tboundary=\"___$znacznik==\"";
// Treść listu
$tresclistu="--___$znacznik==\n";
$tresclistu .="Content-Type: text/plain; charset=\"iso-8859-2\"\n";
$tresclistu .="Content-Transfer-Encoding: 8bit\n";
$tresclistu .="\n$zformularza\n";
// Załącznik
$nazwa_tymczasowa = $_FILES["plik1"]["tmp_name"];
$nazwa_pliku = $_FILES["plik1"]["name"];
if (is_uploaded_file($nazwa_tymczasowa))
{
$tresclistu .="--___$znacznik==\n";
$tresclistu .="Content-Type: image/jpg\n";
$tresclistu .="Content-Disposition: attachment;\n";
$tresclistu .=" filename=\"$nazwa_pliku\"\n";
$tresclistu .="Content-Transfer-Encoding: base64\n\n";
$f = fopen($nazwa_tymczasowa, "rb");
$dane = fread($f,filesize($nazwa_tymczasowa));
fclose($f);
$tresclistu .= chunk_split(base64_encode($dane));
$tresclistu .="--___$znacznik==--\n";
}
// wysłanie listu
if (mail($odbiorca,$tytul,$tresclistu,$naglowki))
{
print "".$message."";
}
else
{
print "".$error."";
}
}
else
print "ERROR";
?>
Na chromie i IE jak klikne w ten przycisk obrazkowy, to leci. W normalny też. Jednak na firefoxie i operze działa tylko ten typu SUBMIT
Jakieś sugestie?
Dodaj jakieś ukryte pole (