Autor | Zpráva | ||
---|---|---|---|
tomas2245 Profil |
Zdravím mám PHP Formulár ktorý sa normálne odošle a príde na email vyplnený.. ale niekedy proste príde prázdny email aj keď som ho vyplnil... skúste sa nato prosím Vás pozrieť ... ďakujem :)
kód: <?php $meno=$_POST["meno"]; $priezvisko=$_POST["priezvisko"]; $mestoobec=$_POST["mestoobec"]; $ulica=$_POST["ulica"]; $cislodomu=$_POST["cislodomu"]; $psc=$_POST["psc"]; $email=$_POST["email"]; $tel=$_POST["tel"]; $zaslanie=$_POST["zaslanie"]; $text=$_POST["text"]; $text=" Meno: $meno Priezvisko: $priezvisko $text = preg_replace('/(?:\s*\R\s*){1,}/u', PHP_EOL, $text); $mail_to = mail'@; $mail_subject = 'Predmet'; $headers = 'From: '.$meno. $priezvisko.'' . "\r\n" . 'Reply-To: '.$email.'' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($mail_to, $mail_subject, $text, $headers); |
||
smiesek Profil |
#2 · Zasláno: 3. 6. 2015, 02:51:25
tomas2245:
určitě mi tan nesedí následující části kodu a upravila bych je následovně ještě z hlediska bezpečnosti bych upravila vstupní proměnné pro textový řetězec (meno, priezvisko, mestoobec, ulica, email, zasilanie $meno=mysql_real_escape_string($_POST["meno"]); pro číselný (cislo domu, psc, tel...) za předpokladu, že bude možné zadávat pouze čísla $psc=(int)$_POST["psc"]; samotný text $text=htmlspecialchars($_POST["text"]); Pak možná chodí prázdný, protože se ty hodnoty proměnných neuloží do proměnné $text a hlavně tam chybí na konci řetězce středník (;) $text="Meno: ".$meno." Priezvisko: ".$priezvisko; ještě uvozovka $headers = 'From: '.$meno. ' '.$priezvisko.'' . "\r\n" . a $mail_to = 'example@example.com'; Určitě to pak bude chtít ještě vyladit skrz diaktiriku/kodování znaků |
||
Joker Profil |
#3 · Zasláno: 3. 6. 2015, 08:07:33
tomas2245:
Kód v [#1] je od řádku 14 nějaký divný. Nesedí uvozovky, chybí středníky. A ten formulář vypadá jak? Odesílá se metodou POST? smiesek: No, bohužel ty rady jsou plné nesmyslů. > ještě z hlediska bezpečnosti bych upravila vstupní proměnné pro textový řetězec (meno, priezvisko, mestoobec, ulica, email, zasilanie $meno=mysql_real_escape_string($_POST["meno"]); Ne, pokud to nedává do databáze. > pro číselný (cislo domu, psc, tel...) za předpokladu, že bude možné zadávat pouze čísla $psc=(int)$_POST["psc"]; No fuj! Pro číslo domu, PSČ, telefonní číslo apod. se nepoužívá číselný datový typ! > samotný text $text=htmlspecialchars($_POST["text"]); Ne, pokud mail není v HTML. |
||
anonymníí Profil * |
#4 · Zasláno: 3. 6. 2015, 08:19:30
smiesek:
Jen k tomu, cos psal: Pokud radíš přetypovat číslo domu (u nás asi číslo orientační/popisné) na integer, budeš mít problém u: a. zadání č.o./č.p., např. 340/12 , což je validní možnost
b. písemného upřesnění č.p., např. 102/a
c. oddělení tisíců u čtyřmístného č.p., 1 022 - moc často se to nepoužívá, ale už jsem to u reálných lidí v e-shopu viděl
PSČ totéž, správný formát je xxx xx - konec přetypováním zahodíš.
Totéž telefon. Ten se přeci zadává zpravidla s mezerami po trojčíslích, často s předvolbou +420/1 na začátku. Po přetypování se nikomu nedovoláš. Tel. číslo ve formátu 123456789 zadává málokdo, téměř nikdo.
Dále, mysql_real_escape_string - o databázi se v dotazu nemluví, nicméně, i kdyby ano, tak určitě mysqli , ne mysql .
Proměnná headers , jak jsi ji uvedl:
- na konci chybí středník, je tam místo něj bodka - jaký je důvod prázdného stringu za $priezvisko ?
|
||
tomas2245 Profil |
#5 · Zasláno: 5. 6. 2015, 07:33:13
neskopíroval som celý kód.. to dôležité tam je okrem toho prázdneho stringu za $prieviskom lebo tam je este obec,psc,mail atď..
|
||
Časová prodleva: 9 let
|
0