Diskuze: Emailový formulář - načtení proměnné do mb_send_mail
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 16 zpráv z 16.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zkus to upravit takto, jestli to pomůže
$uspech = mb_send_mail($adresa, $predmet, $telo, $hlavicka);
$telo= $_POST['OBRAZsirka'];
Stejny vysledek, mail odejde, telo je prazdne...
Jak to vypadá s hodnotou v POST??
var_dump($_POST['OBRAZsirka']);
Proměnná $telo by musela být inicializována před vlastním použitím. Tohle zajisté fungovat nemůže.
Hlásí to "undefined index". No nic, podle tutoriálu to vypadalo tak jednoduše Zkusim nejdrive Swift nebo Phpmailer, snad to pujde snadno...
Pomohl byste mi někdo upravit přiložený kód tak, aby ten swiftmailer fungoval a vytáhnul si z formuláře ta data, která odešle? (tedy e-mail odesílatele a hodnot "OBRAZsirka"), nevím, jak se toho chopit...
<?php
//vložíme swift
require_once '/swiftmailer-master/lib/swift_required.php';
//Nachystáme SMTP transport definujeme server odchozí pošty, port, šifrování, login, heslo
$transport = Swift_SmtpTransport::newInstance()
->setHost('email.active24.com ')
->setPort(587)
->setEncryption('ssl')
->setUsername('Moje Username') //to si doplním
->setPassword('moje Heslo') //to si doplním
;
//Vytvoříme instanci maileru
$mailer = new Swift_Mailer($transport);
$telo= $_POST['OBRAZsirka'];
// vytvoříme zprávu
$message = (new Swift_Message('Kalkulace'))
->setFrom(['[email protected]' => 'František Rychnovský']) //tedy moje adresa
->setTo(['[email protected]', '[email protected]' => 'A name']) //asi adresa vložená z formuláře přes POST ?
->setBody('Šířka obrazu je:') //tělo zprávy z formuláře - tedy jen hodnota z name OBRAZsirka, ideálně přidat rovnou jakýkoli styl ať vím,jak se k tomu přidá
;
//Odešleme zprávu
$result = $mailer->send($message);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<?php
if ($hlaska)
echo('<p>' . htmlspecialchars($hlaska) . '</p>');
$jmeno = (isset($_POST['jmeno'])) ? $_POST['jmeno'] : '';
$email = (isset($_POST['email'])) ? $_POST['email'] : '';
?>
<!--SKRIPT Kalkulace-->
<script type="text/javascript">
function OBR(){
var Sirka = (document.getElementById("OBRsirka").value);
var Vyska = (document.getElementById("OBRvyska").value);
var Plocha = Sirka*Vyska/1000000;
if (Plocha <= 0.2){var CM = 3400} else if (Plocha <=0.3){CM=3200} else if (Plocha <=0.5){CM=2800} else if (Plocha <=0.75){CM=2300} else if (Plocha <=0.95){CM=2000} else {CM=1800};
document.getElementById("OBRbez").value=(CM*Plocha).toFixed(2);
document.getElementById("OBRS").value=(CM*Plocha*1.21).toFixed(2);
document.getElementById("M2").value=(CM);
}
</script>
</head>
<body>
<header></header>
<main>
<div>
<article>
<div>
<div>
<div>
<h2 id="KalkulatorObrazy">Kalkulace</h2>
<form method="POST">
<table>
<tr><td class="">Šířka v cm</td>
<td><select name="OBRAZsirka" id="OBRsirka" onChange="OBR()">
<option value="0" selected="selected">Vyberte</option>
<option value="300">30 cm</option>
<option value="400">40 cm</option>
<option value="500">50 cm</option>
<option value="600">60 cm</option>
<option value="700">70 cm</option>
<option value="800">80 cm</option>
<option value="900">90 cm</option>
<option value="1000">100 cm</option>
</select>
</td></tr>
<tr><td class="">Výška v cm</td>
<td><select id="OBRvyska" onChange="OBR()">
<option value="0" selected="selected">Vyberte</option>
<option value="300">30 cm</option>
<option value="400">40 cm</option>
<option value="500">50 cm</option>
<option value="600">60 cm</option>
<option value="700">70 cm</option>
<option value="800">80 cm</option>
<option value="900">90 cm</option>
<option value="1000">100 cm</option>
</select>
</td></tr>
<tr><td class="">Cena bez dph</td>
<td><input class="inputPDCelkem" id="OBRbez" type="text" disabled></td></tr>
<tr><td class="">Cena včetně dph</td>
<td><input class="inputPDCelkem" id="OBRS" type="text" disabled></td></tr>
<tr><td class="">Cena za m2</td>
<td><input class="" id="M2" type="text" disabled></td></tr>
</table>
</form>
<form method="POST">
<table>
<tr>
<td>Vaše jméno</td>
<td><input name="jmeno" type="text" value="<?= htmlspecialchars($jmeno) ?>"/></td>
</tr>
<tr>
<td>Váš email</td>
<td><input name="email" type="email" value="<?= htmlspecialchars($email) ?>"/></td>
</tr>
<tr>
<td>Aktuální rok</td>
<td><input name="rok" type="number" /></td>
</tr>
</table>
<br />
<input type="submit" value="Odeslat kalkulaci" />
</form>
</div>
</div>
</div>
<div></div>
</article>
</div>
</main>
</body>
</html>
Jeste cekam nez mi zmeni php na serveru na verzi 7, ted je tam 5.6. a swiftmailer uz asi jde jen pod 7...
Když máš undefined index, bude to nejspíš něco znamenat, co myslíš? Já bych třeba dokonce řekl, že ti chybí POST parametr OBRAZsirka nebo co to bylo za index...
Frantisek Rychnovsky Možná by nebylo od věci naučit se nejdřív základy a až potom se vrhnout na něco, co může být tak komplikované jako odesílání mailu, co říkáš? A nebo tomu ani rozumět nechceš a jsi třeba majitel webu, co si myslí, že to bude tak jednoduché jako že jen zkopíruješ nějaký tutoriál na svůj web. Tak to vážně nefunguje . Ale kdyby tomu tak přeci jen bylo, je tu i sekce na zakázky.
Jan Štrobl Jak tě mohlo napadnout, že by mohlo tohle kdy fungovat je mi záhadou:
$uspech = mb_send_mail($adresa, $predmet, $telo, $hlavicka);
$telo= $_POST['OBRAZsirka'];
Ne, ne Po tolika a tolika
hodinách... základech html, css a js už mi chybí jen kousek - submit na
odeslání vyplněného formuláře - a ano, jak to vypadalo jednoduše, tak to
nakonec není Na ten
chybějící POST parametr jsem se ptal úplně na začátku ( **
$_POST['OBRAZsirka']** mi nenačítá hodnotu z name="OBRAZsirka"). Nevím
proč, třeba je odpověď primitivní.
Každopádně nechat si napsat něco, čemu pak nebudu rozumět není cesta pro
mě
Ha, našel jsem chybu, a je to opravdu hloupá chyba, která by člověka nenapadla . Máš tam dva formy, přičemž se samozřejmě odešle jen ten poslední, protože v něm je to tlačítko na odeslání.
takto je to správně: https://codepen.io/anon/pen/BmGWMG
měl jsem čas až dnes, a díky, to je ono, to mě vůbec nenapadlo, dál už si s tím poradím, FR
jop, prohodil jsem to. Zasloužil bych kamenem do hlavy
Zobrazeno 16 zpráv z 16.