Autor | Zpráva | ||
---|---|---|---|
Tody Profil |
#1 · Zasláno: 30. 4. 2013, 15:47:04
Zdravím Vás
Jsem totální záčátečník v PHP. Upravte mi prosím kód níže abych z toho dostal diakritiku. Ještě bych měl jeden dotaz. Jak udělat přesměrování, aby ty hlášky o průběhu odeslání mailu se nezobrazovaly na stránce odeslimail.php, ale na stránce html, kde je vytvořen odesílací formulář? Děkuji za odpovědi. <?php if(isset($_POST['email'])) { $email_to = "nejaky@email.eu"; $email_subject = "Registrace HW"; function died($error) { // your error code can go here echo "We are very sorry, but there were error(s) found with the form you submitted. "; echo "These errors appear below.<br /><br />"; echo $error."<br /><br />"; echo "Please go back and fix these errors.<br /><br />"; die(); } // validation expected data exists if (!isset($_POST['first_name']) || !isset($_POST['last_name']) || !isset($_POST['email']) || !isset($_POST['street']) || !isset($_POST['city'])) { died('Registrace neprobehla uspesne, vznikl nasledujici problem:'); } $first_name = $_POST['first_name']; // required $last_name = $_POST['last_name']; // required $email_from = $_POST['email']; // required $street = $_POST['street']; // required $city = $_POST['city']; // required $country = $_POST['country']; // required $error_message = ""; $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; if(!preg_match($email_exp,$email_from)) { $error_message .= 'Zadana emailova adresa neni ve spravnem formatu.<br />'; } $string_exp = "/^[A-Za-z0-9ěščřžýáíé .'-]+$/"; if(!preg_match($string_exp,$first_name)) { $error_message .= 'Spatne zadane jmeno.<br />'; } if(!preg_match($string_exp,$last_name)) { $error_message .= 'Spatne zadane prijmeni<br />'; } if(!preg_match($string_exp,$street)) { $error_message .= 'Spatne zadana ulice.<br />'; } if(!preg_match($string_exp,$city)) { $error_message .= 'Spatne zadane mesto.<br />'; } if(!preg_match($string_exp,$country)) { $error_message .= 'Spatne zadana zeme.<br />'; } if(strlen($error_message) > 0) { died($error_message); } $email_message = "Zakaznik\n\n"; function clean_string($string) { $bad = array("content-type","bcc:","to:","cc:","href"); return str_replace($bad,"",$string); } $email_message .= "First Name: ".clean_string($first_name)."\n"; $email_message .= "Last Name: ".clean_string($last_name)."\n"; $email_message .= "Email: ".clean_string($email_from)."\n"; $email_message .= "Street: ".clean_string($street)."\n"; $email_message .= "City: ".clean_string($city)."\n"; $email_message .= "Country: ".clean_string($country)."\n"; // create email headers $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n". 'X-Mailer: PHP/' . phpversion()."\r\n". 'Content-Type: text/plain; charset="utf-8"'."\r\n". @mail($email_to, $email_subject, $email_street, $email_message, $headers); } ?> <!-- include your own success html here --> Registrace probehla v poradku. Pristupte ke kroku 2 a vyberte zpusob platby. |
||
Camo Profil |
#2 · Zasláno: 30. 4. 2013, 16:04:12
Tody:
1. Ak chceš ten výpis o odoslaní na tej istej stránke, tak si daj na tú stránku s formulárom nejaký iframe a nasmeruj si ten formulár(cez target) na ten iframe, ALEBO si tie dva scripty spoj do jedného ALEBO to urob cez Ajax. 2. Z toho čo si napísal sa nedá určiť aký máš problém s tou diakritikou. Chceš ju zakázať, či čo vlastne? |
||
Tori Profil |
#3 · Zasláno: 30. 4. 2013, 16:57:11
Tody:
„$string_exp = "/^[A-Za-z0-9ěščřžýáíé .'-]+$/";“ Na ověření textu s diakritikou buď přidejte modifikátor i, aby se nerozlišovala velikost písmen (jinak to selže u jakéhokoli velkého písmene s diakritikou). Anebo se to dá napsat i takto: $string_exp = "/^[\pL\d '.-]+$/u"; To \pL (s modifikátorem u na konci reg.výrazu) znamená jakákoli písmena, včetně arabských, azbuky atd.
Jestli je v doručených e-mailech rozbitá diakritika, koukněte se do Nejčastější potíže s PHP (FAQ) » Kódování e-mailu, aneb abychom neposílali otazníky. |
||
Tody Profil |
#4 · Zasláno: 30. 4. 2013, 19:32:20 · Upravil/a: Tody
Chtěl bych aby diakritika fungovala bez problémů, u velkých i malých písmen... Řekl bych že mám problém na řádku 82...
Tori: Pořád nic Ondřej -> OndĹej |
||
Davex Profil |
Tody:
„Řekl bych že mám problém na řádku 82...“ Taky si myslím. Na konci nemá být tečka a patří tam středník. |
||
Tody Profil |
#6 · Zasláno: 30. 4. 2013, 20:59:39
Davex:
To také není ono.... Dejte tomu prosím nějakou myšlenku... |
||
Davex Profil |
#7 · Zasláno: 30. 4. 2013, 21:11:15
Tody:
„To také není ono...“ Dát sem kód s mrakem chyb také není zrovna ono. Další chyba je třeba hned na řádku 83, kde je navíc parametr $email_street , atd.
|
||
Camo Profil |
#8 · Zasláno: 30. 4. 2013, 21:22:20
Tody:
Stránku s formulárom máš v akom kódovaní? |
||
Tody Profil |
#9 · Zasláno: 1. 5. 2013, 02:26:25 · Upravil/a: Tody
Camo:
Také UTF-8 Davex: Co je špatně na email_street? To spis je tam k nicemu email_message... |
||
Davex Profil |
#10 · Zasláno: 1. 5. 2013, 10:43:56
Tody:
„Co je špatně na email_street?“ 1) Proměnná $email_street není definovaná.
2) Funkce mail() má tři povinné parametry a dva volitelné.
Z dokumentace: bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] ) „To spis je tam k nicemu email_message...“ Tak si to zkus, jak hodně je to zbytečné... |
||
Tody Profil |
#11 · Zasláno: 1. 5. 2013, 12:34:15
Davex:
Ano ano, zjistil sem že píšu kravinu, až když sem to okomentoval. :) Nedalo by se to PHP tedy nějak rozhýbat? |
||
Davex Profil |
#12 · Zasláno: 1. 5. 2013, 15:12:13
Samozřejmě, že by se to dalo rozhýbat. Stačí vymazat ten zbytečný parametr s proměnnou
$email_street , aby se proměnná s obsahem zprávy přesunula místo něho.
|
||
Tody Profil |
#13 · Zasláno: 1. 5. 2013, 15:57:38
Vymazáno, formulář v pohodě odesílá, ale jak na tu češtinu?
|
||
Davex Profil |
|||
Časová prodleva: 11 let
|
0