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