| 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: 15 let
|
|||
0