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