Dobrý den,
problém je v tom, že spoléháte na zapnuté register globals a k proměnným přistupujete přímo, což je zastaralý přístup. Více se dočtete na
http://navody.c4.cz/register_globalsStačilo by na začátek skriptu dát:
Kód:
$email = $_POST['email'];
$jmenoaprijmeni = $_POST['jmenoaprijmeni'];
$vzkaz = $_POST['vzkaz'];
Dále máte ve skriptu spoustu chyb, např. místo
Kód:
input name="$vzkaz" type="text"
by mělo být jen
Kód:
name="vzkaz"
Další problém je, že proměnná $jmeno bude vždy prázdná, protože ve formuláři ani v PHP kódu ji nijak nenastavujete.
Nakonec tam máte závažnou bezpečnostní chybu a sice do proměnné $extra nastavujete řetězec, který obsahuje proměnnou $email. Pokud nějaký záškodník do proměnné $email podstrčí znak nového řádku a hlavičku Bcc, tak může prostřednictvím formuláře rozesílat spamy, např. jedním odesláním formuláře může odeslat spam na 100 emailových adres. Takže by to chtělo ošetřit vstup z proměnné $email, např. se může kontrolovat, že je tam jen jeden znak zavináče a že tam není žádný znak nového řádku. Kompletní verze začátku php skriptu včetně nastavení proměnných a ošetření proměnné $email by mohla vypadat takto:
Kód:
$email = $_POST['email'];
$jmenoaprijmeni = $_POST['jmenoaprijmeni'];
$vzkaz = $_POST['vzkaz'];
if(strstr($subject, "\n") !== false || strstr($subject, "\r") !== false) {
echo "Hackerum vstup zakazan!";
exit;
}
if(substr_count($email, '@') >= 2) {
echo 'Do kolonky "Vas e-mail" lze zadat pouze jednu emailovou adresu.';
exit;
}