Diskuze: Nefunkční php script pro Emailový formulář.
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 12 zpráv z 12.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zkus tu hlavičku nějak takhle:
$headers = 'From: '. $_POST['name'] .' <'. $_POST['email'] .'>';
Zkusil jsem a přestal se zobrazovat email odesílatele (předtím to bylo něco ve stylu "jmeno_domeny@poskytovatel.cz"). V těle emailu pořád pouze zpráva a nic víc.. Vážně netuším, čím by to mohlo být, zkoušel jsem hledat na internetu více php email formulářů a všechny skončily vesměs stejně..
Pouzivam https://github.com/…/swiftmailer a doporucuji 
A jak to souvisí s tím, že dotyčný neumí spojit 2 stringy?
Logicky email přidáš do zprávy, která se ti posílá:
$message = $_POST['email'] . ': ' . $_POST['message'];
EDIT: Jméno připojíš stejně. Případně jestli chceš email i v hlavičce, tady je ukázané jak to udělat - https://www.itnetwork.cz/…ovy-formular
Omlouvám se, Davide, ale jsme v programování nováček. Učím se podle
tutoriálů, videí a když narazím na problém, snažím se nejdřív vyhledat
řešení. Jenže s tímhle si vážně nevím rady.
Začínám mít tušení, že problém bude někde v html souboru, jenže ho tam
také nevidím.
PHP:
<?php
mb_internal_encoding("UTF-8");
$headers .= "\nMIME-Version: 1.0\n";
$headers .= "Content-Type: text/html; charset=\"utf-8\"\n";
$to = '[email protected]';
$email = $_POST['email'];
$subject = $_POST['subject'];
$name = $_POST['name'];
$message = $_POST['name'] . ':' . $_POST['email'] . ': ' . $_POST['message'];
mail($to, $subject, $message, $headers);
?>
<html><head>
<meta http-equiv="refresh" content="0; url=index.html">
<title>Přesměrování...</title>
</head><body></body></html>
HTML formuláře:
<form id="contact-form" action="mailform.php" method="post">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="name">
Jméno</label>
<input type="text" class="form-control" id="name" placeholder="Vaše jméno" required="required" name="jmeno"/>
</div>
<div class="form-group">
<label for="email">
Email</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span>
</span>
<input type="email" name="email" class="form-control" id="email" placeholder="Napište email" required="required" /></div>
</div>
<div class="form-group">
<label for="subject">
Předmět</label>
<select id="subject" name="subject" class="form-control" required="required">
<option value="na" selected="">Vyberte:</option>
<option value="Obecne">Obecné</option>
<option value="Obchodni">Obchodní</option>
<option value="Media">Média</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="message">
Text zprávy</label>
<textarea name="message" id="message" class="form-control" rows="9" cols="25" required="required"
placeholder="Text zprávy"></textarea>
</div>
</div>
<div class="col-md-12">
<button type="submit" class="btn btn-skin pull-right" id="btnContactUs">
Odeslat</button>
</div>
</div>
</form>
V emailu chodí předmět a text zprávy vypadá takto ":: text"
Proč nefunguje jméno mi dává smysl, jelikož jsi použil klíč "name" a v HTML kódu máš "jmeno". Proč nejde email je dost divné. Můžeš si zkusit vypsat co se odeslalo pomocí následujícího kódu (a vypni si pod tím to přesměrování):
print_r($_POST);
Moc děkuji, už to všechno funguje. Pořádně nechápu jak, ale snad to časem pochopím.
Jeste si uprav ten subjekt nebo ti nebudou chodit dobre ceske znaky :
$subject = '=?utf-8?B?' . base64_encode($_POST['subject']) . '?=';
Subject mam formou výběru ze 3 možností, ale děkuji, napíšu si to, až budu dělat nějaký další formulář.
Co konkrétně nechápeš?? Přečti si zdejší tutoriály, je tu vše pěkně popsané.
Toho nefungovalo kvůli tomu, že jsi z POST vytahoval data ze špatného klíče. Funguje to takto jednoduše:
<input name="klic" />
<?php
// hodnota name="" je klíčem u superglobálního pole $_POST
$hodnota = $_POST['klic'];
?>
Zobrazeno 12 zpráv z 12.
