| 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: 12 let
|
|||
0