Autor | Zpráva | ||
---|---|---|---|
mirek36 Profil |
#1 · Zasláno: 15. 3. 2011, 15:32:51
zdravím,
mám problém s formulářem na odesílání e-mailů. Na ic.cz běží bezproblému, ale bohužel na php5.cz a na mém placeném hostingu mi furt hlásí e-mail se nepodařilo odeslat. Nevíte kde by mohl být problém? zde je nezkrácený kod, který chci osekat na mailový formulář (i ten funguje jen na ic.cz) předem díky <form action="druhy.php" method="post"> <p align="left"><font face="Arial" size="2"><font color="white"> <br><br><br> Jmeno:<br> <input name="jmeno"><br> Mail příjemce:<br> <input type="text" name="prijemce"><br> Váš mail: <br> <input type="text" name="mail_odesilatele"><br> Předmět: <br><input type="text" name="predmet"><br> Zpráva: <br> <textarea type="text" name="zprava" ROWS="30" COLS="150"></textarea><br> <input type=submit value="Odeslat"> </form> <body bgcolor="black"> a odesílací skript <?php function autoUTF($s) { // detect UTF-8 if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) return $s; // detect WINDOWS-1250 if (preg_match('#[\x7F-\x9F\xBC]#', $s)) return iconv('WINDOWS-1250', 'UTF-8', $s); // assume ISO-8859-2 return iconv('ISO-8859-2', 'UTF-8', $s); } function cs_mail ($to, $predmet, $zprava, $head = "") { $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?="; $head .= "MIME-Version: 1.0\n"; $head .= "Content-Type: text/plain; charset=\"utf-8\"\n"; $head .= "Content-Transfer-Encoding: base64\n"; $zprava = base64_encode (autoUTF ($zprava)); return mail ($to, $predmet, $zprava, $head); } $jmeno = empty($_POST['jmeno']) ? '' : '=?utf-8?B?' . base64_encode(autoUTF($_POST['jmeno'])) . '?= '; $a = $_POST['zprava']; if (cs_mail($prijemce, $predmet, $zprava, "From: " . $jmeno . '<' . $mail_odesilatele . ">\n")) echo "Mail byl odeslán"; else echo "Mail se nepodařilo odeslat"; ?> |
||
TomasJ Profil |
#2 · Zasláno: 15. 3. 2011, 15:44:34 · Upravil/a: TomasJ
Zprávu načítáš do proměnné $a ale posíláš proměnnou $zprava.
$a = $_POST['zprava']; if(cs_mail($prijemce, $predmet, $zprava, "From: " . $jmeno . '<' . $mail_odesilatele . ">\n")) { echo "Mail byl odeslán"; } else { echo "Mail se nepodařilo odeslat"; } Na IC.cz to šlo, protože tam máš nejspíš zapnuté register_globals. EDIT: A jak tak koukám, máš tam jakési chyby. Koukni na register_globals. Pak uděláš jen $predmet = $_POST['predmet']; |
||
mirek36 Profil |
#3 · Zasláno: 15. 3. 2011, 17:06:23
díky moc pomohlo to, ještě jeden dotaz, dá se nějak zakombinovat ten script do stránky, aby se mi při odeslání objevila pouze hláška ve stránce a neotvíralo se prázné okno s textem, že mai byl odeslán?
|
||
panther Profil |
#4 · Zasláno: 15. 3. 2011, 17:08:09
mirek36:
ano, dá. Buď dej scipt do stránky s formulářem, nebo si nastuduj ten text nevypisuj, ale ukládej - do cookie nebo sessiony a ve stránce s formulářem vypisuj, není-li zvolená proměnná prázdná. |
||
mirek36 Profil |
#5 · Zasláno: 15. 3. 2011, 17:25:07
asi sem zapoměl napsat, že stránky jsou ve WordPressu a ten mi bohužel nedovolí do stránky vkládat PHP scripty. Jediné co mě napadá je odeslat mail přes skript a přesměrovat zpátky na stránku kde se mi objeví zda byl nebo nebyl odeslán ten mail. Zdá se mi to celkem složité, kdyby si mi hodil na ten princip s cookie nebo sessiony nějakej link ať se můžu kouknout jak se to tvoří, byl bych ti moc věděčný.
|
||
mirek36 Profil |
#6 · Zasláno: 15. 3. 2011, 18:26:59
dobrý vyřešeno místo scriptu tam dám plugin
|
||
Časová prodleva: 13 let
|
0