NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

Diskuze: Kontaktní formulář pomoc prosím

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
Martina Didáková:5.11.2018 10:59

Ahoj, potřebuji zprovoznit na stránkách kontaktní formulář, aby se email odeslal majiteli webu a aby se uživateli ukázal text, že je email odeslán.

mám to zatím takto a nevím jak tomu docílit.. pomůžete někdo prosím?

function OdesliEmail($pri­jemce,$predmet,$ob­sah,$odesilatel) {
global $domena;

$upravenadome­na=ereg_repla­ce("http://","",$do­mena);

if (SubStr($upra­venadomena,0,9)!="lo­calhost") { /* nejsme na localhostu, mužeme odeslat e-mail /
$eol = "\r\n"; /
End of line. */

$replyTo = $odesilatel;
$encodeOdesila­telJmeno = base64_encode("in­fo@rosopida.cz");
$encodeOdesila­telJmeno = "=?utf-8?B?".base64_en­code($odesila­telJmeno)."?=";

/* Definice hlaviček e-mailu. */
$headers .= "From: $encodeOdesila­telJmeno <$odesilatel>"­.$eol;
$headers .= "Return-To: $replyTo".$eol;
$headers .= "MIME-Version: 1.0".$eol;
$headers .= "Content-Type: text/html; charset=utf-8".$eol;
$headers .= "Content-Transfer-Encoding: base64".$eol.$eol;

$encodePredmet = "=?utf-8?B?".base64_en­code($predmet)­."?=";

$obsah = "<html>
<body>$obsah</body>
</html>";
$encodeObsah = wordwrap(base64_en­code($obsah), 76, PHP_EOL, true);
$finalObsah = $encodeObsah;

mail($prijemce, $encodePredmet, $finalObsah, $headers);

}
}

 
Odpovědět
5.11.2018 10:59
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:6.11.2018 8:19

Musis ale pocitat s tim, ze servery budou blokovat hromadne odesilani mailu.

google = php mail utf8

<?php
function OdesliEmail($from, $to, $subject, $message, $domena)
{
if ($domena=="localhost ") {return false;} // upraveno

$from      = "=?utf-8?B?".base64_encode($from)   ."?=";
$to        = "=?utf-8?B?".base64_encode($to)     ."?="; // pridano, nejsem si ted jisty, ale asi by se melo kodovat vse
$subject   = "=?utf-8?B?".base64_encode($subject)."?=";

$headers   = array();                           // to jsem zmenil jen na array, pro zjednoduseni
$headers[] = "From: $from";                     // zmeneno, cely ten radek byl spatne
$headers[] = "Reply-To: $from";
$headers[] = "Return-To: $from";                // pridano
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-Type: text/html; charset=utf-8";
$headers[] = "Content-Transfer-Encoding: base64";
$headers[] = "X-Mailer: PHP/" . phpversion();   // pridano
$headers[] = "";
$headers   = implode(PHP_EOL, $headers);        // konverze array na string pridanim PHP_EOL = \r\n nebo \n v nekterych verzich php

$message   = "<html>\n<body>\n$message\n</body>\n</html>";
$message   = wordwrap(base64_encode($message), 76, PHP_EOL, true); // tady by se to asi nemuselo wrapovat; a nejsem si jisty, jestli i body by nemelo projit kodovanim na utf8

return mail($to, $subject, $message, $headers); // pridano return
}

OdesliEmail("info@rosopida.cz <info@rosopida.cz>", 'test@mail.cz', 'test', 'test', $_SERVER['HTTP_HOST']);

// http://php.net/manual/en/function.mail.php
// error_reporting mas zapnute? Jakou to vypisuje chyb?
// http://php.net/manual/en/reserved.variables.server.php
//function OdesliEmail($prijemce,$predmet,$obsah,$odesilatel) {
//global $domena;       // upraveno
//$upravenadomena=ereg_replace("http://","",$domena);
//$replyTo = $odesilatel;
//$encodeOdesilatelJmeno = base64_encode("info@rosopida.cz");
//$encodeOdesilatelJmeno = "=?utf-8?B?".base64_encode($odesilatelJmeno)."?=";
?>
Editováno 6.11.2018 8:22
 
Nahoru Odpovědět
6.11.2018 8:19
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:6.11.2018 8:25

jo, tam by melo byt

if OdesliEmail(...) echo 'odeslano' else echo 'chyba pri odesilani';

Navic je dobre vypsat cas, kdyz to testujes, aby bylo videt, ze doslo k obnoveni stranky.

echo date('m/d/Y h:i:s a', time());
 
Nahoru Odpovědět
6.11.2018 8:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.