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
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
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 *
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
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ď..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: