Autor | Zpráva | ||
---|---|---|---|
davevo Profil |
#1 · Zasláno: 23. 6. 2014, 22:32:29
Dobrý den,
mám dotaz sem tam mě po odeslání formuláře od zákazníka příjde na email toto: 724 643 171, 532 299 326MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IFBvcHTDoXZrYSA6DQoNCkTFmWV6b3bDvSBzdMWvbCBuZXJlem92w70gLSByb3ptxJtyIGTFmWV6dSA5MHg2MCwgOTAgdsO9xaFrYSBzdG9sdSwgaGxvdWJrYSBkxZllenUgNjBjbSwgbmEgbm/FvmvDoWNoIDEga3VzLiBQcm9zw61tIG8gemFzbMOhbsOtIGNlbm92w6kgbmFiw61ka3kuDQoNCkTEm2t1amkgemEgcnljaGzDqSB2ecWZw616ZW7DrQ0KSmFyb3NsYXZhIFNsw6FkZcSNa292w6ENCnZlZG91Y8OtIG9kZMSbbGVuw60ga29udHJha3TFryBOTUIgQnJubyxwLm8uCkphcm9zbGF2YSBTbMOhZGXEjWtvdsOhLCBOTUIgQnJubyxwLm8uCmphcm9zbGF2YS5zbGFkZWNrb3ZhQG5tYmJybm8uY3oKNzI0IDY0MyAxNzEsIDUzMiAyOTkgMzI2Cg== Nevíte čím to je? 10 meilů v pohodě a pak jeden nesrozumitelný. Asi je to problém s kodováním ale proč je většina meilů ok a pár ko. Dík za odpověd. |
||
juriad Profil |
#2 · Zasláno: 23. 6. 2014, 22:40:40
Ukaž, jak skládáš e-mail. To vypadá, že provádíš něco jako:
mail($to, $subject, base64_encode($text), "From: $email\n" . (!empty($tel) ? "\n$telefon" . "") . $headers); Nejspíš to bude souviset s (ne)zadaným telefonem. |
||
davevo Profil |
#3 · Zasláno: 23. 6. 2014, 22:51:26
juriad:
<?php /* *************** diskuse.jakpsatweb.cz *** PHP FAQ ********************** */ function autoUTF($s) { if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) // detect UTF-8 { return $s; } elseif (preg_match('#[\x7F-\x9F\xBC]#', $s)) // detect WINDOWS-1250 { return iconv('WINDOWS-1250', 'UTF-8', $s); } else // 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\r\n"; $head .= "Content-Type: text/plain; charset=\"utf-8\"\r\n"; $head .= "Content-Transfer-Encoding: base64\r\n"; $zprava = base64_encode(autoUTF($zprava)); return mail($to, $predmet, $zprava, $head); } $predmet = $_POST['predmet']; $email = $_POST['email']; $telefon = $_POST['telefon']; $zprava = $_POST['zprava'].PHP_EOL; $zprava .= $_POST['predmet'].PHP_EOL; $zprava .= $_POST['email'].PHP_EOL; $zprava .= $_POST['telefon'].PHP_EOL; if ($predmet!="" and $email!="" and $telefon!="" and $zprava!="") { cs_mail("obchod@gastronerez.eu", $predmet,$zprava,$telefon, "From: ".$email."\r\n"); echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong></p>"; } else { echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje.</p>"; } ?> |
||
juriad Profil |
#4 · Zasláno: 23. 6. 2014, 22:55:26
funkce cs_mail má jen 4 parametry, ty jí předáváš 5.
Tedy ten $telefon odstraň a předej ho jako součást $zpravy. |
||
davevo Profil |
#5 · Zasláno: 23. 6. 2014, 23:02:06
juriad:
A kterých 5? Já napočítal jen 4 o kterém řádku se bavíme o 19? nebo 40. Děkuji |
||
juriad Profil |
#6 · Zasláno: 23. 6. 2014, 23:04:15
Obou. Na 19. řádku definuješ funkci, která chce 4 argumenty a na 40. řádku jí předáváš argumentů 5. Stačí odstranit ten nadbytečný $telefon, a pak by to snad mělo být v pořádku.
|
||
davevo Profil |
#7 · Zasláno: 23. 6. 2014, 23:08:59
Takto?
<?php /* *************** diskuse.jakpsatweb.cz *** PHP FAQ ********************** */ function autoUTF($s) { if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) // detect UTF-8 { return $s; } elseif (preg_match('#[\x7F-\x9F\xBC]#', $s)) // detect WINDOWS-1250 { return iconv('WINDOWS-1250', 'UTF-8', $s); } else // 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\r\n"; $head .= "Content-Type: text/plain; charset=\"utf-8\"\r\n"; $head .= "Content-Transfer-Encoding: base64\r\n"; $zprava = base64_encode(autoUTF($zprava)); return mail($to, $predmet, $zprava, $head); } $predmet = $_POST['predmet']; $email = $_POST['email']; $zprava = $_POST['zprava'].PHP_EOL; $zprava .= $_POST['predmet'].PHP_EOL; $zprava .= $_POST['email'].PHP_EOL; $zprava .= $_POST['telefon'].PHP_EOL; if ($predmet!="" and $email!="" and $zprava!="") { cs_mail("obchod@gastronerez.eu", $predmet,$zprava,$telefon, "From: ".$email."\r\n"); echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong></p>"; } else { echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje.</p>"; } ?> |
||
juriad Profil |
#8 · Zasláno: 23. 6. 2014, 23:12:39
Změň řádek na:
cs_mail("obchod@gastronerez.eu", $predmet,$zprava, "From: ".$email."\r\n"); |
||
davevo Profil |
juriad:
takže odesílání nefungovalo ale zjistil jsem čím to je je to v zadávání telefoního čísla pokud dám formát 123456789 funguje to jak má pokud dám 123 456 789 popřípadě 123 456 789,987 654 321 pak vyběhne meil nesmyslný tzn ošetřit vztupy |
||
davevo Profil |
#10 · Zasláno: 25. 6. 2014, 21:27:23
zdravím může mě někdo poradit jak z této podmínky vyloučit mezery?
$je_telefon = preg_match('#^(\+420)? ?[0-9]{3} ?[0-9]{3} ?[0-9]{3}$#', $telefon); prostě aby to nebralo číslo ve formátu 123 456 789 ale jen 123456789 popřípadě +420123456789 |
||
juriad Profil |
Odstraň z celého výrazu dvojici po sobě jdoucích znaků „mezera otazník“.
Tedy to bude: '#^(\+420)?[0-9]{3}[0-9]{3}[0-9]{3}$#' , což lze zkrátit na '#^(+420)?[0-9]{9}$#' .
A tohle si nedpustím :-) preg_replace('/ \?/', '', '#^(\+420)? ?[0-9]{3} ?[0-9]{3} ?[0-9]{3}$#'); |
||
davevo Profil |
#12 · Zasláno: 25. 6. 2014, 21:46:22
děkuji mnohokrát už to fungíruje
|
||
Časová prodleva: 11 let
|
0