Ahoj vytvářím html formulář, který data odešle na mail. Jsem začátečník, nevidíte někdo chybu v PHP? Předem děkuji. tom.tom@email.cz
<?php
$rezervace = $_POST["rezervace"];
$jmeno = $_POST["jmeno"];
$prijmeni = $_POST["prijmeni"];
$telefon = $_POST["telefon"];
$email = $_POST["email"];
$roknarozeni = $_POST["roknarozeni"];
$adresa = $_POST["adresa"];
$mesto = $_POST["mesto"];
$psc = $_POST["psc"];
$znacka = $_POST["znacka"];
$model = $_POST["model"];
$typ = $_POST["typ"];
$wincode = $_POST["wincode"];
$puvodvozidla = $_POST["puvodvozidla"];
$pocetkm = $_POST["pocetkm"];
$rokvyroby = $_POST["rokvyroby"];
$vozidloje = $_POST["vozidloje"];
$message= "Rezervace: " . $rezervace . "\n Jméno: " . $jmeno . "\n Příjmení: " . $prijmeni . "\n Telefon: " . $telefon . "\n E-mail: " . $email . $roknarozeni . " " . $adresa . " " . $mesto . " " . $psc . " " . "\n Značka: " . $znacka . "\n Model: " . $model . "\n Typ: " . $typ . "\n WIN code: " . $wincode . "\n Původ vozidla: " . $puvodvozidla . "\n Poček km: " . $pocetkm . "\n Rok výroby: " . $rokvyroby . "\n Vozidlo je: " . $vozidloje;
$to = "tomas.rydel@gmail.cz";
$subject = "Povinné ručení - rezervace " . $jmeno . " " . $prijmeni;
$headers = "From: Povinné ručení <ruceni@chytrepalice.cz>\ ";
if (@mail($to, $subject, $message, $headers)):
echo "<p><strong>Vaše nezávazná rezervace byla úspěšně odeslána!</strong></p>
<p>Náš operátor Vás bude kontaktovat nejdéle následující pracovní den a dohodne s Vámi podrobnosti objednávky a případně zodpoví Vaše dotazy.</p>";
else:
echo "<p><strong>Odeslání rezervace selhalo, kontaktujte nás prosím na telefonu +420 226 222 325 nebo e-mailem na <a href='mailto:ruceni@chytrepalice.cz'>ruceni@chytrepalice.cz</a></strong></p>";
endif;
?>
Fórum › PHP
Php email form
ten IF na konci je podle mě blbě...
<?php
$rezervace = $_POST["rezervace"];
$jmeno = $_POST["jmeno"];
$prijmeni = $_POST["prijmeni"];
$telefon = $_POST["telefon"];
$email = $_POST["email"];
$roknarozeni = $_POST["roknarozeni"];
$adresa = $_POST["adresa"];
$mesto = $_POST["mesto"];
$psc = $_POST["psc"];
$znacka = $_POST["znacka"];
$model = $_POST["model"];
$typ = $_POST["typ"];
$wincode = $_POST["wincode"];
$puvodvozidla = $_POST["puvodvozidla"];
$pocetkm = $_POST["pocetkm"];
$rokvyroby = $_POST["rokvyroby"];
$vozidloje = $_POST["vozidloje"];
$message= "Rezervace: " . $rezervace . "\n Jméno: " . $jmeno . "\n Příjmení: " . $prijmeni . "\n Telefon: " . $telefon . "\n E-mail: " . $email . $roknarozeni . " " . $adresa . " " . $mesto . " " . $psc . " " . "\n Značka: " . $znacka . "\n Model: " . $model . "\n Typ: " . $typ . "\n WIN code: " . $wincode . "\n Původ vozidla: " . $puvodvozidla . "\n Poček km: " . $pocetkm . "\n Rok výroby: " . $rokvyroby . "\n Vozidlo je: " . $vozidloje;
$to = "tomas.rydel@gmail.cz";
$subject = "Povinné ručení - rezervace " . $jmeno . " " . $prijmeni;
$headers = "From: Povinné ručení <ruceni@chytrepalice.cz>\ ";
if (@mail($to, $subject, $message, $headers))
echo "<p><strong>Vaše nezávazná rezervace byla úspěšně odeslána!</strong></p>
<p>Náš operátor Vás bude kontaktovat nejdéle následující pracovní den a dohodne s Vámi podrobnosti objednávky a případně zodpoví Vaše dotazy.</p>";
else
echo "<p><strong>Odeslání rezervace selhalo, kontaktujte nás prosím na telefonu +420 226 222 325 nebo e-mailem na <a href='mailto:ruceni@chytrepalice.cz'>ruceni@chytrepalice.cz</a></strong></p>";
?>
To CZechBoY : co presne si tam zmenil? Odstranil dvojtecky a "endif;"? Jeslti neco jineho, tak jsem to prehlid. - to je stara, ale stale funkcni notace, takze na funkcnosti to nic nezmenilo.
To Tomas : Me tam spis zarazi zapis $headers - s funkci mail skoro nepracuju, tak si tim nejsem jisty, ale mimo jine to lomitko na konci se mi zda divne. Jinak pomohlo by, kdyby si sem hodil chybou hlasku php, pokud to vubec nejakou hazi, popr co od toho ocekavas za chovani a jak se to ve skutecnosti chova
Přesně tak, u toho headers máš řetězec "....\" - tedy neukončený string, backslash... takže ejj buď umaž a nebo přidej n, či \r\n a pdoobně. Na tuto chybu tě ale upozorní už samo php a přijít si na to měl sám...
<?php
$rezervace = $_POST["rezervace"];
$jmeno = $_POST["jmeno"];
$prijmeni = $_POST["prijmeni"];
$telefon = $_POST["telefon"];
$email = $_POST["email"];
$roknarozeni = $_POST["roknarozeni"];
$adresa = $_POST["adresa"];
$mesto = $_POST["mesto"];
$psc = $_POST["psc"];
$znacka = $_POST["znacka"];
$model = $_POST["model"];
$typ = $_POST["typ"];
$wincode = $_POST["wincode"];
$puvodvozidla = $_POST["puvodvozidla"];
$pocetkm = $_POST["pocetkm"];
$rokvyroby = $_POST["rokvyroby"];
$vozidloje = $_POST["vozidloje"];
$message= "Rezervace: " . $rezervace . "\n Jméno: " . $jmeno . "\n Příjmení: " . $prijmeni . "\n Telefon: " . $telefon . "\n E-mail: " . $email . $roknarozeni . " " . $adresa . " " . $mesto . " " . $psc . " " . "\n Značka: " . $znacka . "\n Model: " . $model . "\n Typ: " . $typ . "\n WIN code: " . $wincode . "\n Původ vozidla: " . $puvodvozidla . "\n Poček km: " . $pocetkm . "\n Rok výroby: " . $rokvyroby . "\n Vozidlo je: " . $vozidloje;
$to = "tomas.rydel@gmail.cz";
$subject = "Povinné ručení - rezervace " . $jmeno . " " . $prijmeni;
$headers = 'From: ruceni@chytrepalice.cz' . "\r\n" .
'Reply-To: tomas.rydel@gmail.cz' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if (@mail($to, $subject, $message, $headers)){
echo "
<p><strong>Vaše nezávazná rezervace byla úspěšně odeslána!</strong></p>
<p>Náš operátor Vás bude kontaktovat nejdéle následující pracovní den a dohodne s Vámi podrobnosti objednávky a případně zodpoví Vaše dotazy.</p>";
}else{
echo "<p><strong>Odeslání rezervace selhalo, kontaktujte nás prosím na telefonu +420 226 222 325 nebo e-mailem na <a href='mailto:ruceni@chytrepalice.cz'>ruceni@chytrepalice.cz</a></strong></p>";
}
?>
Pravděpodobná chyba v syntaxi , procedurální email handler není moc vhodný a doporučoval bych na přepsání na OOP.
Pravděpodobná chyba v syntaxi , procedurální email handler není moc vhodný a doporučoval bych na přepsání na OOP.
A to je jako co? Co je to procedurální handler?
Šmarja bóže, nechci flámovat, ale necpěte všude za každou cenu OOP. Stejně v té třídě budeš mít někde kód
mail($this->to, $this->subject, $this->message, $this->headers)
A za druhé, kód, který jsi vložil je funkční. ;-)
Necpu všude oop ,ale upřímě bych to řešil určitě jinak a to jinak by bylo OOP.
A ano je funkční proto jsem napsal jak to má vypadat + popsal toho co měl dotyčný špatně ;)
Ta syntaxe co je psaná na začátku diskuze je hrozná a nechápu jak k ní někdo vůbec v dnešní době přišel :)
Pořád nechápu, proč by to mělo být objektově? Ta syntax zas tak hrozná není, určitě na ni přišel v manuálu. Můžeš mi vysvětlit tedy 2 věci?
1) Jak by to vypadalo přepsáno do OOP (alespoň kostra, náčrt, jsem zvědavý, jak může mít OOP vliv na správnou syntax :-D)
2) Co je to ten procedurální handler?
Děkuji,
jestli tě příliš štvu, tak mě pošli do oněch míst...
ad. MyPost #6 02. 11. 2010 @ 12:32
chyběla mi tam čárka :) Pravděpodobná chyba v syntaxi , procedurální, email handler není moc vhodný a doporučoval bych na přepsání na OOP.
/*
@$message = array ;
$message[]= $_POST["objekt"];
*/
public $from;
private $to;
public function SendMail($from, $to= "services@example.com, $header ,$message){
// zde se provede header
...
// zde naparsuju zprávu do objektového tvaru ročleněním pole $message
...
// zde zkontroluji všechny data zda jsou v pořádku
...
// odešlu zprávu a zapíšu email do logu
$this->Logger("Zadost o newsletter" , $this->to);
}
Děkuji, to je pěkné, ale stále mě nechápeš. K čemu využíváš OOP? K čemu dědičnost, zapouzdření? K tomu, že pak existuje nějaký speciálnější email, který umí odeslat i html neboj jak? Furt mi to nedochází :-)
Ale kašleme na to...
ten můj kod nefunguje? v PsPaud jsem viděl vše správně, ty nechápeš k emu je endif v tom je chyba, endif zavírá IF a else taky...
tohle není Visual Basic ty musíš uzavřít kod z IF a kod z Else taky!!!
takže ten můj ti jako nefunguje nebo ho nechceš ani vyzkoušet?
To CZechBoY : tak v tomhle jsem se ztratil :)
Konstrukce
if():
kod
else:
kod
endif
odpovida konstrukci
if(){
kod
}else{
kod
}
v pripade, ze "kod" ma jen jeden radek, da se pouzit bez tech slozenych zavorek, nebo dvojtecek s endif
Ta podminka prepsana z dvojteckove notace na "dnesni" nijak funkcnost kodu neovlini
Asi takhle šlo mi o to ,že procedurální kód není vhodný v dnešní době frameworku , vlastních MVC , popřípadě jiné struktury.
Takhle poskládaná aplikace z vlastních souborů je hodně netypická , jako funkce je to dostatečné pro nějaky newsletter na MFA webech... Ale každopádně je to jen můj názor , protože když se poohlednu co bylo v době před 5 lety už není teď. Ta syntaxe mě prostě ujistila v tom ,že lidé jsou málo informovaní o možnostech využití frameworků a dobře propojené struktury programu.
CzechBoy : jen tak pro zajímavost , PHP děláš aktivně nebo okrajově ?
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Email přes PHP — založil Borisek
Form vs php — založil Paja2
Email - rozeslání — založil peXtr
Moderátoři diskuze