Právě je 26 dub 2024 20:48

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 4 ] 
Autor Zpráva
 Předmět příspěvku: Emailový formulář přijde nevyplněný
PříspěvekNapsal: 30 led 2011 20:56 

Registrován:
30 led 2011 20:45
Příspěvky:
2
Dobrý den
Mám vytvořený formulář, který na zkušebních stránkách wz.cz jde bez problému.
Ale na stránkách na vašem hostingu mě přijde formulář nevyplněný, bez žádných údajů.
Opravdu nevím jak co jinak vypsat, nebo jak změnit nastavení serveru
Děkuji Kosi

Tady je samotný formulář:

<form action="send.php" method="post">
<table width="400" border="0">
<tr>
<td width="130">Jméno a Príjmení:</td>
<td><input name="jmenoaprijmeni" type="text"></td>
</tr>
<tr>
<td width="130">Váš e-mail:</td>
<td><input name="email" type="text"></td>
</tr>
<tr>
<td width="130">Váš vkaz:</td>
<td><textarea cols="20" rows="5" input name="$vzkaz" type="text"></textarea></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" class="button" value="Odeslat"><input type="reset" value="Vymazat"></td>
</tr>
</table>
</form>

A zde scrpit:

<?php
$to = "kosi.wz@seznam.cz";
$extra = "From: $email\r\nReply-To: $email\r\n";
$subject = "Vzkaz od ".$jmeno."";
$mess = "Jméno a Příjmení: ".$jmenoaprijmeni."\nE-mail:".$email."\nVzkaz: ".$vzkaz." \n";
mail ($to, $subject, $mess, $extra);
?>


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Emailovy formulář přijde nevyplněný
PříspěvekNapsal: 31 led 2011 14:49 
C4 podpora
C4 podpora

Registrován:
29 čer 2009 20:53
Příspěvky:
263
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_globals

Stač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;
}

_________________
Jan Vítek
Webhosting C4
http://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Emailový formulář přijde nevyplněný
PříspěvekNapsal: 31 led 2011 17:14 

Registrován:
30 led 2011 20:45
Příspěvky:
2
Dobrý den
Problém jsem vyřešil..... Klaním se před Vašemi znalostmi......
Velice děkuji a mějte hezký zbytek dne
Kosi :)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Emailový formulář přijde nevyplněný
PříspěvekNapsal: 31 led 2011 18:25 
C4 podpora
C4 podpora

Registrován:
29 čer 2009 20:53
Příspěvky:
263
V kódu je chyba, správně má být:

Kód:
$email = $_POST['email'];
$jmenoaprijmeni = $_POST['jmenoaprijmeni'];
$vzkaz = $_POST['vzkaz'];

if(strstr($email, "\n") !== false || strstr($email, "\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;
}


Tj místo proměnné $subject má být $email.

_________________
Jan Vítek
Webhosting C4
http://www.c4.cz/


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 4 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
FTP Uploader
Staňte se naším zákazníkem!
Hledáme kolegy
PHP, MySQL Hosting
Návody pro C4

© 2009-2024 ČESKÝ WEBHOSTING s.r.o. Kontaktní e-mail: forum@c4.cz
Diskuzní fórum využívá technologie: phpBB, phpBB-SEO.com, phpBB.cz