Autor Zpráva
Michala
Profil *
Našla jsem si zajímavý návod na odesílání formuláře na mail i s kontrolou zadaných polí.

http://webnews.terc.cz/ps/article.php?arid=2

Stáhla si zdrojové kódy /dole na stránce - senform a inc/

Ve form.php jsem přepsala mail na svůj /kdejechyba@seznam.cz místo noreply@terc.cz

<form name="FormName" action="sendform.php" method="post" enctype="multipart/form-data">
<input type="hidden" value="Y" name="html">
<input type="hidden" value="noreply@terc.cz" name="komu">
<input type="hidden" value="dekujeme.php" name="nexturl">
<p><font size="4"><strong>Pokud máte zájem o bližší informace, vyplňte následující formulář.</strong></font></p>

a dále v sendform.php jsem upravila
require("../inc/functions.php");
if ($html == "Y") include("../inc/class.html.mime.mail.inc");

na

require("inc/functions.php");
if ($html == "Y") include("inc/class.html.mime.mail.inc");

Nahrála jsem to pres FTP na web http://passionateboy.php5.cz/form.php

Bohužel po vyplnění všech polí formuláře kromě přílohy a odeslání tlačítkem odeslat informace se mně zobrazí pouze

Chyba!

Nejsou vyplněny všechny požadované údaje:
Komu, Email

Zpět

Přitom všechna pole jsou vyplněna.

Prosím nevíte někdo kde může být chyba a jak tento problém vyřešit???

Moc by mně to pomohlo

Děkuji

přístup na FTP kdyby to pomohlo
FTP server: ftp://passionateboy.php5.cz
Login: czpassionateboy
Heslo: rascal720
Nox
Profil
Ten přístup na FTP smaž, nijak to nikomu nepomůže v pomoci
a ještě ti s tím někdo něco udělá...ne že bych si myslel že tu
sou všichni takoví, ale vždycky se někdo může najít
Alphard
Profil
Nox
není registrovaná
Michala
Profil *
Předpokládám že tady jsou jen slušní lidé.
tiso
Profil
1. používaj <?php miesto <?
2. tipujem vypnutú direktívu register_globals, stačí v skripte sendform.php zmeniť premenné z $komu $email atď na $_POST['komu'], $_POST['email'] a podobne
3. nikdy nedávaj do diskusie prihlasovacie údaje k hostingu, nevieš kto to zneužije. Heslo som ti poslal na mail na seznam.cz
Alphard
Profil
Michala
ještě jedno doporučení
svou adresu si dej přímo do kódu ($komu = "jmeno@server.domena)
protože:
1. spam pro tebe
ale hlavně 2. je to skvěle využitelné pro spamování všeobecně
někdo to může zneužít a poslat tisícům emaily
to by zřejmě vedlo k vložení SMTP serveru tvého hostungu do blacklistu, to by se nelíbilo adminům na serveru, zjistili by, kdo za to může, atd. :-)
peta
Profil
Michala
predpokladat muzes, ale forum se mapuje do google a muze to objevit nekdo nahodou, komu slusnost az tolik nerika :)

http://www.volny.cz/peter.mlich/www.htm#msub11
http://www.volny.cz/peter.mlich/www.htm#mssub20
http://www.volny.cz/peter.mlich/www.htm#main6 (smes JS / PHP)

viz tiso, pravdepodobne mas vypnute register global, coz je bezpecnostni opatreni a promenne $komu, ... se nenaplni podle NAME v html a je treba to udelat rucne, treba cyklem
foreach($_POST as $key=>$value) {$$key=$value;}
viz cz.php.net/register_globals

Take je dobre si zapnout error_reporting, kdyz ladis nejaky PHP script
viz cz.php.net/error_reporting
Pak ti to vypise chyby a ty by treba mne zajimali. Chyba s textem "Chyba!" je nic nerikajici, pravdepodobne vysledek selhani odeslani mailu.

Na wz.cz maji treba omezeni na pocet odeslanych mailu za hodinu, tak i pro to nemusi dojit k odeslani.

Alphard
"nelíbilo adminům na serveru, zjistili by, kdo za to může"
Kdyz je mail v HTML, tak to ale neni nic, co by mohli admini trestat. Maximalne mohou pozadat, aby si jej dal/a pryc. Zvlast, kdyz to tak 90% lidi ma a adminum to nijak nevadi.
Alphard
Profil
peta
nevím jak je to v procentech, ale vím o pár lidech, kterým zablokovali účet, protože z jejich stránek chodil spam a to i na placeném hostingu
Michala
Profil *
Děkuji za rady - raději se ale zeptám pro pořádek - php není moje silná stránka ....

// odešleme mail ve formátu HTML
$mail->add_html(ToISO($telo), "");
$mail->set_charset('iso-8859-2', TRUE);
$mail->build_message();
$mail->send($komu, $komu, $email, $email, ToISO($predmet), "Return-Path: $email");

$sendok = true;

mám změnit na

// odešleme mail ve formátu HTML
$mail->add_html(ToISO($telo), "");
$mail->set_charset('iso-8859-2', TRUE);
$mail->build_message();
$mail->send($_POST['komu'], $_POST['komu'], $_POST['email'], $_POST['email'], ToISO($predmet), "Return-Path: $email");

$sendok = true;

a nebo pouze do kódu v sendform.php přidat

foreach($_POST as $key=>$value) {$$key=$value;}
peta
Profil
Michala
To je totez temer totez.
Jen jsi zapomnela na: $predmet, $email ... ToISO($predmet), "Return-Path: $email"
$mail->send($_POST['komu'], $_POST['komu'], $_POST['email'], $_POST['email'], ToISO($predmet), "Return-Path: $email"
ten take musis z postu vytahnout.

Temer, protoze ten cyklus prebira vsechny promenne a bylo by dobre mu omezit jmena, treba na:
$x = array('komu', 'email');
foreach($x as $key=>$value) {$$value=$_POST[$value];}

vysvetleni:
cyklus, ktery pro pole $x urci kazdou moznou hodnotu $klice v a k nemu prislusnou hodnotu $value (ktera je vlastne $value=$x[$klic]).
{} - do promenne s nazvem ${hodnota z $value} prirad hodnotu z pole $_post[] s klicem $value.
Jinymi slovy provede:
$x = array('a', 'b','c');
foreach($x as $key=>$value) {$$value=$_POST[$value];}
===
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
neboli
${'a'} = $_POST['a'];
${'b'} = $_POST['b'];
${'c'} = $_POST['c'];
... coz neni uplne presna nahrada globalnich promennych, ale tobe to staci
... a je to totez jako:
$mail->send($_POST['a'],$_POST['b'],$_POST['c'];}

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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