Autor | Zpráva | ||
---|---|---|---|
tomasck Profil |
#1 · Zasláno: 27. 11. 2010, 14:50:24
Dobrý den. Abych vás seznámil se situací - HTML ovládám snad dobře, ale nikdy jsem nechodil ani nestudoval nic s PC, takže jsem samouk.
Můj problém je následující - moje sestra potřebuje vytvořit dotazník ohledně její bakalářské práce, dotazník jsem jí vytvořil a mám poslední problém spočívá v tom, že nedokážu vytvořit script, který by odesílal formulář na zadaný email, kde by se s tím dalo pracovat. Celé forum sem proběhl, přečetl vše o PHP (nejen na webu a vaše rady tady na foru, ale i všude možně jinde. Ještě abych dodal, je to webzdarma, ale četl jsem, že tam by ten PHP měl fungovat. Nebudu to sem kopírovat, protože bych si určitě uřízl ostudu, ten můj pokus o PHP script je to, co jsem našel na různých webech jako radu a snažil se to z toho vytvořit, takže asi pěkná blbost. Nenašel by se někdo, kdo by mi poskytl svůj ICQ kontakt a probral by se mnou ten PHP script? (popřípadě pomohl upravit do konečné podoby?) Děkuji moc za odpovědi. |
||
Keeehi Profil |
#2 · Zasláno: 27. 11. 2010, 14:52:31
|
||
tomasck Profil |
#3 · Zasláno: 27. 11. 2010, 14:56:14
Keeehi:
Tady jsem opravdu byl, jenže to PHP je hrozně rozdílné od HTML (podle mě). Navíc jak jsem psal, opravdu s tím nemám vůbec žádné zkušenosti, proto jsem se sem obrátil pro radu. Kdybych nad tim nestrávil tolik času, nikoho bych tím neotravoval. |
||
Keeehi Profil |
#4 · Zasláno: 27. 11. 2010, 15:13:24
Pak by to mohlo vypadat nějak takto:
<?php /* *************** diskuse.jakpsatweb.cz *** PHP FAQ ********************** */ function autoUTF($s) { if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) // detect UTF-8 { return $s; } elseif (preg_match('#[\x7F-\x9F\xBC]#', $s)) // detect WINDOWS-1250 { return iconv('WINDOWS-1250', 'UTF-8', $s); } else // assume ISO-8859-2 { return iconv('ISO-8859-2', 'UTF-8', $s); } } function cs_mail($to, $predmet, $zprava, $head = "") { $predmet = "=?utf-8?B?".base64_encode(autoUTF($predmet))."?="; $head .= "MIME-Version: 1.0\r\n"; $head .= "Content-Type: text/plain; charset=\"utf-8\"\r\n"; $head .= "Content-Transfer-Encoding: base64\r\n"; $zprava = base64_encode(autoUTF($zprava)); return mail($to, $predmet, $zprava, $head); } /* ********************************************************************** ** */ if(!empty($_POST["name_odesilaciho_inputu"])){ $mail = 'jmeno@email.cz'; $predmet = 'Formulář '.date("d.m.Y H:i:s"); $zprava = "Otázka 1:".$_POST["name_prvniho_inputu"]."\r\n"; $zprava .= "Otázka 2:".$_POST["name_druheho_inputu"]."\r\n"; $zprava .= "Otázka 3:".$_POST["name_tretiho_inputu"]."\r\n"; $zprava .= "Otázka 4:".$_POST["name_ctvrteho_inputu"]."\r\n"; $zprava .= "Otázka 5:".$_POST["name_pateho_inputu"]."\r\n"; $zprava .= "Otázka 6:".$_POST["name_sesteho_inputu"]."\r\n"; if (cs_mail($mail, $predmet, $zprava, 'From: vas@web.cz\r\n')) echo 'E-mail byl úspěšně odeslán.<br>'; else echo 'E-mail se bohužel nepodařilo odeslat.<br>'; } |
||
tomasck Profil |
#5 · Zasláno: 27. 11. 2010, 20:21:58
Keeehi:
Moc děkuju, skript už je ok. Ale sem prostě vocas, celkově mi to nefunguje, když to dam na FTP a dám na té stránce "poslat", tak mě to odkáže na tu stránku (send.php) místo toho, aby mi to napsalo "E-mail byl úspěšně odeslán" či nikoliv. Takže tam mám asi ještě někde nějakou hloupou chybu, která to ruší. Tak pokud bys to měl chuť řešit a pomoct mi, budu moc rád. Pokud ne, nebudu se zlobit. Kdyžtak icq 412 376 644 a ještě jednou díky moc za tamten skript. |
||
Keeehi Profil |
#6 · Zasláno: 27. 11. 2010, 20:33:49 · Upravil/a: Keeehi
Nevím přesně, jak to myslíš, proto mě napadají 2 možnosti:
Špatně vyplněný action u formu. Někde se objevil error a error reporting je vypnutý, takže se nezobrazila chybová hláška. Použij error_reporting(E_ALL);
|
||
tomasck Profil |
#7 · Zasláno: 27. 11. 2010, 20:38:36
<form action="send.php" method="post"> , to by mělo být dobře,
ostatně se můžeš letmo podívat do zdrojovýho kódu jestli se ti tam něco nezdá. Dotazník jsem dělal poprvé v životě, takže bych se nedivil, kdyby tam byla nějaká banální chyba. Té "mezery" si nevšímej, to se mi nějako celé posunulo, to napravím až nakonec. www.hanastrakata.webzdarma.cz |
||
Keeehi Profil |
#8 · Zasláno: 27. 11. 2010, 20:41:54
tomasck:
Zkus přidat ne začátek ten error_reporting. Pak na tebe vyskočí nejspíše nějaká hláška, se kterou se bude nechat dál pracovat. |
||
tomasck Profil |
#9 · Zasláno: 27. 11. 2010, 20:47:25
Achjo, tak já už jsem brutálně zblblej :/
Když to dám poslat ze složky v PC, napíše to '; else echo 'E-mail se bohužel nepodařilo odeslat. '; } Na netu, jak jsem psal, to nedělá nic. A když přidám ten error_reporting(E_ALL); do toho scriptu, tak to stejně žádnou chybu nepíše. Fakt sem blb, vůbec sem se do toho neměl pouštět, doufám, že se mnou nevynervíš :). To se tam jen normálně nakopíruje nebo se k tomu musí něco přidat? Omlouvám se, ale v tom PHP sem jak ryba na suchu :(. Pokud se to tam jen nakonec normálně do toho PHP souboru nakopíruje, pak se na webu nic nezměnilo po přidání na ftp. |
||
tomasck Profil |
#10 · Zasláno: 27. 11. 2010, 20:50:55
http://leteckaposta.cz/837713044
kdyžtak tady je ten script, co jsem si pro sebe upravil. Asi v tom také bude zas nějaká chyba? Hele moc se omlouvám, že otravuju, ale strávil sem nad tim už kupu času, a tak lituju už přestat a nevyřešit to (stejně by se to muselo nějako udělat, sestra to potřebuje tak jako tak). Takže díky moc za pomoc. |
||
Keeehi Profil |
#11 · Zasláno: 27. 11. 2010, 21:00:53 · Upravil/a: Keeehi
tomasck:
Aby ti to fungovalo doma, tak musel by jsi mít nainstalovaný server a php a ještě mailserver. 1) PHP musí začínat <?php a končit ?> 2) error_reporting(E_ALL); jsem psal, že má přijít na začátek, ne na konec
3) Chybí ti v tom souboru funkce autoUTF() a cs_mail(). (Ano, i ty se musí do toho souboru nakopírovat, ty jsi je vynechal) 4) Neupravil jsi name_odesilaciho_inputu. Ve formuláři name u submit inputu nemáš, tak ho tam přidej a stejné name napiš i místo tohoto. |
||
tomasck Profil |
#12 · Zasláno: 27. 11. 2010, 21:08:22
aha, takže to autoUTF tam doplním, ale to cs_mail() tam mám
v jakém tvaru by to mělo být? function cs_mail($to, $predmet, $zprava, $head = "") sem úplně ztracený :( místo $to, $predmet by se mělo něco doplnit? a $head = "" co by tam mělo být? |
||
tomasck Profil |
#13 · Zasláno: 27. 11. 2010, 21:09:28 · Upravil/a: tomasck
Parse error: syntax error, unexpected '<' in /3w/webzdarma.cz/h/hanastrakata/send.php on line 3
Toto je ta hláška, zobrazilo se to po doplnění toho erroru. A ještě jedna otázka. Pod pojmem name_odesilaciho_inputu si mám představit? Odesílací tlačítko? <input type="submit" value=" Poslat "> Fakt se omlouvám, sem úplně v háji :(. Děkuju moc za pomoc. |
||
Keeehi Profil |
#14 · Zasláno: 27. 11. 2010, 21:32:58 · Upravil/a: Keeehi
tomasck:
„Parse error: syntax error, unexpected '<' in /3w/webzdarma.cz/h/hanastrakata/send.php on line 3“ Netuším, jak vypadá ten upravený soubor, ale na řádku 3 je znak < který tam překladač nečekal. Očekával něco jiného. Bez kódu nedokážu říci co. > v jakém tvaru by to mělo být? > function cs_mail($to, $predmet, $zprava, $head = "") To nech být jak je. To už je správně. Jde o to, že tam ten kód mezi /*******diskuse.jakpsatweb.cz********/ a dalším /******/ nebyl nakopírovaný. Pokud už jsi ho tam nakopíroval, pak je vše v pořádku. „Pod pojmem name_odesilaciho_inputu si mám představit? Odesílací tlačítko? <input type="submit" value=" Poslat ">“ Ano. nude vypadat takto: <input type="submit" name="name_odesilaciho_inputu" value=" Poslat ">
|
||
tomasck Profil |
#15 · Zasláno: 27. 11. 2010, 21:51:05 · Upravil/a: tomasck
Děkuju!!!! Mám to :). Už to jde. Si fakt borec, hrozně moc děkuju za pomoc. Trápim se s tim celý den a ty to máš za 5 minut vyřešený. Si fakt machr :).
Můžu mít ještě jednu otázku? Šlo by udělat, že když by dali "Ne", tak by se ke dvěma otázkám (6 checkboxů) uzavřel přístup? Já vím, že to jde, mám takový pocit, že to tu na webu určitě je, ale teď to hledám a nikde to tu nevidím. A je to skript nebo normální html tag? A pokud to tam dám, tak nebude to vyhodnocovat třeba např. špatně ty otázky? A ještě poslední otázka : Když nezaškrtnu u jedné otázky odpověď (je to otázka jestli by to chtěli na jejich škole mít), tak mi to napíše Notice: Undefined index: chcimobilniinteraktivnisystem in /3w/webzdarma.cz/h/hanastrakata/send.php on line 123 . Je to jen poznámka, rozumím, takže si toho nemám všímat anebo by to šlo nějako odstranit? Teď mě ještě napadla opravdu už poslední otázka. Když mi ten mail, příjde, tak tam je Otázka 1: 0, Otázka 2: 4.. je to logický, rozumim tomu, takže se chci zeptat, jde místo value="0" dát např. value="rohlik", value="houska" ? Aby to vyhodnocování nebylo tak nepřehledné a složité? Děkuji moc za odpověď. |
||
Keeehi Profil |
#16 · Zasláno: 27. 11. 2010, 22:10:51
tomasck:
„Šlo by udělat, že když by dali "Ne", tak by se ke dvěma otázkám (6 checkboxů) uzavřel přístup?“ Ano, to by musel obstarávat javascript. „A pokud to tam dám, tak nebude to vyhodnocovat třeba např. špatně ty otázky?“ Nemělo by. „Notice: Undefined index:“ Ano, všímat si toho nemusíš, fungovat to bude správně. Pokud by jsi chtěl o tom něco zjistit více, tak se zeptej googlu, nebo koukni sem. A až budeš mít všechno hotovo, tak změň error_reporting(E_ALL); na error_reporting(0);
Tím se vypnou chybová hlášení a ani toto upozornění se nebude zobrazovat. |
||
tomasck Profil |
#17 · Zasláno: 27. 11. 2010, 22:44:21
Super, tak ještě jednou moc děkuji za rady. Bez nich bych byl ztracen.
|
||
Keeehi Profil |
#18 · Zasláno: 27. 11. 2010, 22:47:57
tomasck:
Není zač, rád jsem pomohl. |
||
Časová prodleva: 15 let
|
0