Autor | Zpráva | ||
---|---|---|---|
Wayne Profil * |
#1 · Zasláno: 29. 5. 2015, 13:23:18
Ahoj, mohl by mi někdo poradit? Níže přikládám jednoduchý formulář v php, který mi ale ne úplně ideálně funguje
<?php header("Content-Type: text/html; charset=utf-8"); $to = "mujEmail@gmail.com"; $extra = "From: $_POST[email]\r\nReply-To: $_POST[email]\r\n"; $subject = "Kontakt od ".$_POST['jmeno'].""; $mess = "Jméno: ".$_POST['jmeno']."\nEmail: ".$_POST['email']."\nZpráva:\n".$_POST['text'].""; mb_language('Neutral'); mb_internal_encoding("UTF-8"); mb_http_input("UTF-8"); mb_http_output("UTF-8"); if(empty($_POST['jmeno'])||empty($_POST['text'])|| empty($_POST['email']) ||!ereg("^.+@.+\..+$", $_POST['email'])) { echo "<script>alert('Špatně zadané údaje, zkuste to prosím znovu.');</script>";} else{ $succes = mb_send_mail($to, $subject, $mess, $extra); if($succes){ echo "<script>alert('Zpráva byla úspěšně odeslána na můj email. Přeji pěkný den.');</script>"; }else{ echo "<script>alert('Nastala chyba, zkuste nás kontaktovat na e-mail: mujEmail@gmail.com');</script>"; } } print "<meta http-equiv=\"refresh\" content=\"0;URL=index.html\">"; exit(); ?> Zaprvé tento script mi nefunguje v IE, ve FF i Chrome mi funguje, jen se mi písmena s diakritikou zobrazují naprosto nesmyslně, věděl by někdo kde je chyba? |
||
Alphard Profil |
#2 · Zasláno: 29. 5. 2015, 13:40:49
Popis nefunguje je nic moc. Málokomu se chce luštit, co by mohlo nefungovat.
V každém případě, činnost PHP je na prohlížeči nezávislá a ten javascript nedělá nic zásadního, takže bych doporučoval se ho úplně zbavit. Chyby vypiště třeba červeným písmem k formuláři, to bude stačit. A to přesměrování by bylo také lepší řešit pomocí header('Location:index.html') .
S funkcí mb_send_mail() nemám moc zkušenosti, ale ve FAQ máme vlastní nadstavbu cs_mail(), která myslím funguje dobře. |
||
Joker Profil |
#3 · Zasláno: 29. 5. 2015, 13:46:47
Wayne:
Co znamená „nefunguje“? Pokud to v některých prohlížečích funguje a v jiných ne, nevypadá to na chybu PHP. Co má dělat ta sekvence volání mb_* na řádcích 7-10? Minimálně volání mb_http_input je špatně, protože mb_http_input není „přikazovací“, ale „dotazovací“ funkce (tj. něco zjišťuje a vrací) a argumentem není kódování.
|
||
Wayne Profil * |
#4 · Zasláno: 29. 5. 2015, 14:09:00
Nefunguje v mém případě znamená, že ve FF a Chrome mi hlášení jako toto "Špatně zadané údaje" znaménka s diakritikou se mi vypisují jako otazníky, a v IE mi po odeslání kontaktních údajů vůbec nic nedělá, jen se načte úvodní stránka
|
||
Joker Profil |
#5 · Zasláno: 29. 5. 2015, 15:19:21
Wayne:
„v IE mi po odeslání kontaktních údajů vůbec nic nedělá, jen se načte úvodní stránka“ Což se mimochodem bude dít v každém prohlížeči, který nemá zapnutý JS. „ve FF a Chrome mi hlášení jako toto "Špatně zadané údaje"“ Což znamená, že se mail neodeslal. To bývá vopruz ladit. Nějaký minimální testovací mail projde? Jestli ne, bude chyba v nastavení e-mailu. |
||
Wayne Profil * |
#6 · Zasláno: 29. 5. 2015, 15:30:02
Joker:
V IE zapnutý JS mám a co jsem zjistit, tak se mi kontaktní údaje vyšlou do mailu, ale problém je v tom, že mi to v prohlížeči nehlásí žádný info o tom že údaje byli úspěšně odeslány. V FF a chrome jsem to myslel tak že když úmyslně zadám špatný formát jednotlivých údajů, tak se mi správně zobrazí hlášení, ale to hlášení je nečitelné ptž ty znaky s diakritikou se vypisují ve formě otazníku v kosočtverci. |
||
Joker Profil |
#7 · Zasláno: 29. 5. 2015, 16:14:33
Wayne:
ad IE: Možná se přesměruje dřív, než dojde na ten alert. Jinak zvolený způsob notifikací má poměrně velké množství scénářů, co může být špatně. Nelze se spolehnout, že se notifikace uživateli zobrazí a nelze se spolehnout, že se přesměruje. Ta sekvence mb_* funkcí si nejsem jistý jaký má účel a minimálně některé z nich jsou podle mě zbytečné (to mb_http_input je jednoznačně chybné). „správně zobrazí hlášení, ale to hlášení je nečitelné“ V tom případě je soubor se stránkou v jiném kódování, než o sobě tvrdí. |
||
Časová prodleva: 23 dní
|
|||
Pesso69 Profil |
#8 · Zasláno: 21. 6. 2015, 15:28:22
Jednoduchy kontaktny formular:
<!--// contact form --> <div id="contact-form"> <form method="post" action="contact.php"> <div class="field"> <label>Jméno:</label> <input type="text" name="name" class="text" /> </div> <div class="field"> <label>E-mail: <span>*</span></label> <input type="text" name="email" class="text" /> </div> <div class="field"> <label>Zpráva: <span>*</span></label> <textarea name="message" class="text textarea" ></textarea> </div> <div class="field"> <input type="submit" name="odoslat" id="send" value="Odeslat zprávu"/> <div class="loading"></div> </div> </form> </div> <!-- contact form //--> <?php // contact.php if(( null !== $_POST['odoslat'])) { if( ($_POST['name'] === null) AND ($_POST['email'] === null) AND ($_POST['message'] === null) ) { echo 'Vyplňte všetky polia označené *';} else { require('class.phpmailer.php'); $mail = new PHPMailer; $mail->CharSet = 'utf-8'; $mail->IsHTML(true); $mail->setFrom('emailfrom@example.sk', 'EmailFrom'); $mail->addAddress('emailto@example.sk'); $mail->Subject = 'Predmet spravy'; $message .= 'Name: '.$_POST['name']; $message .= 'E-mail: '.$_POST['email']; $message .= 'Sprava: '.$_POST['message']; $mail->Body = $message; if (!$mail->send()) { echo "Chyba: ".$mail->ErrorInfo; } else { echo "Správa bola úspešne odoslaná"; } } ?> |
||
Alphard Profil |
#9 · Zasláno: 21. 6. 2015, 17:41:47
Takto napsané porovnání s null není vůbec rozumné. Pokud v poli daný klíč neexistuje, bude se generovat Notice.
|
||
Časová prodleva: 9 let
|
0