Autor Zpráva
Berenika
Profil
Potřebuji dát na web jednoduchý formulář, kde navstevnik vyplni napriklad jmeno, prijmeni, vek a klikne na odeslat a ono se mi to posle na muj email.
Jde to i jinak než pres php? Vubec mi to nejde..
pk11
Profil
Ano, jde to i jinak, než přes PHP. Přes ASP např., co třeba Action Script z Flashe? Promiň, nechci tě mást. Potřebuješ nějaký SW, který má v sobě zabudovanou funkci na odesílání e-mailu - v PHP je to funkce "mail". Není to nic složitého:
soubor "formular.php" (nebo i "formular.html")
...
<form id="formular1" action="zpracuj_formular.php" method="post">
<input name="nadpis" type="text" size="50" />
<textarea name="text_area" cols="50" rows="10"></textarea>
<input type="submit" value="odeslat" />
</form>

 soubor "zpracuj_formular.php"
<?php
$prijemce = "tvoje_adresa@domena.cz";
$predmet = "Vyplněný formulář z webu XYZ.CZ".$_POST["nadpis"];
$telo_zpravy = $_POST["text_area"];
$odeslat = @mail($prijemce, $predmet, $telo_zpravy) ? $hlaska = "Děkujeme za vyplnění formuláře - byl odeslán" : $hlaska = "Bohužel došlo k chybě. Formulář nebyl odeslán";
echo $hlaska;
?>


Snaž se studovat manuál(y):
manuál PHP - funkce mail - je sice anglicky, vygoogluj si nějaký český návod

Pokud ti někdo poradí něco jiného, jednoduššího, tím lépe. Ona totiž funkce mail na tvém webu, pokud kód není bezpečný, se může (může - a mě už se to stalo, naštěstí už je to "promlčené") nechat zneužít někým "z venku" a až by ti takhle někdo přes tvůj hostingový účet "prohnal" za víkend 3.000 mailů, tak správce serveru tě minimálně přizabije :)
Berenika
Profil
ja právě projela návody na PHP už předtím, než jsem sem napsala. A bohužel to nefungovalo, stejně jako teď. Nic se neodešle, jen věci co tam napíšu zmizí.
Jinak ty řádky do zpracuj_formular.php se tam vloží bez nějaké hlavičky? Je tam jen toto? Děkuji moc
Berenika
Profil
pardon, čtu to ještě jednou po lopatě... je to vázané jen na mejl pod doménou kde mam stránky? Nejde to normálně přesměrovat na google například?
pk11
Profil
Můžeš to posílat kamkoliv (na jakýkoliv e-mail, samozřejmě i na víc), právě jsem to vyzkoušel zde, omluv neúplnost HTML kódu (a tím pádem chybějící kódování češtiny) a změnu názvu souboru na "index.html". Zpráva se odeslala, hláška se zobrazila, mail dorazil. Tobě to něco vypsalo? Možná že tvůj hosting nepovoluje funkci mail(?) Zkus ještě odstranit ten zavináč před funkcí mail, třeba ti napoví. Zavináč slouží k potlačení výpisu chybových hlášení PHP parseru.
Jinak ty řádky do zpracuj_formular.php se tam vloží bez nějaké hlavičky? Je tam jen toto? Děkuji moc
Ne, ne, ukázal jsem ti jen tu část kódu s formulářem. jinak sránku dělej "normálně", tedy:
<!DOCTYPE .... >
<html>
<head>
... hlavičky ...
</head>
<body>
... nadpis, menu ...
<form id="formular1">
... náš formulář ...
</form>
</body>
</html>

Zkus to nebo sem hoď celý kód či odkaz na ten webík...
pk11
Profil
Berenika tos byla ty? přišel mi předmět "aa" a vzkaz "aa". No to je jedno, u mě to tak, jak jsem to zde uvedl funguje, takže to mažu (ať nemusím mazat moc e-mailů od těch, co tu brouzdají a chtěli by to vyzkoušet :-) )
Berenika
Profil
Ja myslela jaká hlavička ma být u toho PHP,ale v pořadku, už to mam, něco uz sem si o tom procetla, dala sem to do body.
tak už to na stránkách mám, je to zde
http://www.communityinspiration.com/projekt.htm
hned ten první odkaz uprostřed, formulář.
Když to dělam tady na počítači, bez toho, aby to bylo na serveru, tak to nedělá níc. Na serveru - tzn. na této adrese, mi to nahlásí, že je email odeslán, ale žadný už pak nedojde.
Berenika
Profil
Berenika tos byla ty?
ano,pardon, ja to chtěla zkusit :)
Berenika
Profil
tak mi teď přišlo toto: tělo zprávy, posílá pk11
jde to nějak spravit aby to bylo srozumitelné? Každopadně nechapu jakto, že mě to nešlo. Ale moc díky!
pk11
Profil
Když to dělam tady na počítači, bez toho, aby to bylo na serveru, tak to nedělá níc.
Protože tvůj počítač není (veřejně přístupný) webový server. Nevím, možná by šel tvůj Apache a PHP servery nakonfigurovat podobně jako např.Outlook Express, ale nikdy jsem to nezkoušel.

Na serveru - tzn. na této adrese, mi to nahlásí, že je email odeslán, ale žadný už pak nedojde.
Odstranila jsi ten @ před funkcí mail? To, že se ti zobrazí hláška "Dekujeme za vyplnení formuláre - byl odeslán" znamená, že funkce proběhla v pořádku a vrací true. Pak může být chyba v mailové adrese, kterou tam máš (překlep) nebo někde "na cestě" (spam filtr??) nebo zkus být trpělivá, někdy to může trvat nebo zkus jinou adresu.

Anebo uvažuj o použití databáze a vzkazy ukládej tam, či do nějakého souboru, který si potom někde na jiné (soukromé) adrese budeš číst.
Berenika
Profil
tak mi teď přišlo toto: tělo zprávy, posílá pk11
no přišlo mi to jinak zakodované, koukám že tento web si s tím poradil a přeložil to :)
Berenika
Profil
Pak může být chyba v mailové adrese, kterou tam máš (překlep) nebo někde "na cestě" (spam filtr??) nebo zkus být trpělivá, někdy to může trvat nebo zkus jinou adresu.
no ten pokus od tebe přišel skoro hned,tak nevím kde je chyba,asi to ještě nechám prozkoušet pár lidí než to hodím úlně do provozu. Já to teda zkoušela dvakrát a email nikde. No uvidime...

ještě si trochu pohraju s tou češtinou protože mi to přišlo rozházené. Je možné, pokud tedy moc neotravuju, tam pod tu hlášku "email odeslán" hodit tlačítko zpět?
takto je to normál v html ale nevím, zda to jde i takto umístit do toho PHP.
<input type=button onclick="history.back()" value="Zpět">
Ještě jednou moc děkuji
pk11
Profil
tak mi teď přišlo toto: tělo zprávy, posílá pk11
Ano, to byl jsem já :-) Takže to funguje.
jde to nějak spravit aby to bylo srozumitelné?
Ano jde, "normálně" to začleníš do struktury stránky. Nevím, jak přesně ty stránky tvoříš. Navrhuji ti něco jako: vytvoř soubor s názvem "formulář.php" (musí to být .php). vše bude stejné jako ostatní stránky, tedy html, head, body, menu... a pak tam dej:
<?php
if (isset($_POST["text_area"])) {
 $prijemce = "tvoje_adresa@domena.cz";
 $predmet = "Vyplněný formulář z webu XYZ.CZ".$_POST["nadpis"];
 $telo_zpravy = $_POST["text_area"];
 $odeslat = @mail($prijemce, $predmet, $telo_zpravy) ? $hlaska = "Děkujeme za vyplnění formuláře - byl odeslán" : $hlaska = "Bohužel došlo k chybě. Formulář nebyl odeslán";
 echo $hlaska;
 }
else {
?>
<form id="formular1" action="zpracuj_formular.php" method="post">
<input name="nadpis" type="text" size="50" />
<textarea name="text_area" cols="50" rows="10"></textarea>
<input type="submit" value="odeslat" />
</form>
<?php
}
?>

a pak zase pokračuj dál.
Pozor - do takhle jednoduchého, neošetřeného, formuláře ti může někdo strčit škodlivý kód. navrhuji si to vyzkoušet, zda to funguje, pak to zase odstranit (nebo zakomentovat funkci mail), nastudovat si něco o (ne)bezpečnosti webových formulářů a ošetřit vstupní pole - např. regulárními výrazy. Ano?
pk11
Profil
měl jsem tam chybičku na konci kódu, opraveno

<input type=button onclick="history.back()" value="Zpět">
<?php
...
$odeslat = @mail .......;
$hlaska .= "<form><input type=\"button\" onclick=\"history.back()\" value=\"Zpět\"></form>";
echo $hlaska;
...
?>


Ještě jednou moc děkuji
Rádo se stalo. Rád ti poradím zase příště, bude-li čas tak zítra. Pavel
pk11
Profil
Berenika
Jinak, teď jsem si pořádně přečetl zaměření vašeho webu. Tomu se říká programátorská slepota:-) Pokud bys chtěla hotové řešení, můžeme se domluvit, na koho z kontaktů se mám obrátit? Domluvili bychom se po e-mailu. Zatím dobrou noc, i když v Mexiku by mělo teď být +- 2pm, což? Mám bratrance v Pueble, oženil se tam, pacholek :-)
Berenika
Profil
Programátorská slepota? Tak tomu vůbec nerozumím :)
Já jsem momentálně v čr, v mexiku jsou tento měsíc jiní .... jinak je tam o 7 hodin min než tady:)
V kontaktech jsem ta třetí, Zuzka, tak očekávám mejl ;)
dobrou noc a děkuji!!

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: