Autor | Zpráva | ||
---|---|---|---|
Abbysak Profil |
#1 · Zasláno: 18. 10. 2010, 21:28:03 · Upravil/a: Abbysak
Dobrý večer,
Mám problém, skúšal som hľadať, ale nijak mi to nepomohlo.. Chcel by som formulár, ktorý by posielal email na nejakú emailovú schránku. (to viem, to mi išlo), ale chcel by som skúsiť, nejak urobiť, aby na jednej stránke bol formulár a sám na seba odkazoval cez action. Viem, že by som to mal urobiť nejak cez podmienky. Ale ako.. Napr. Viem, že nemám žiadne skúsenosti s Php ani podobne, takže len radu .. |
||
panther Profil |
#2 · Zasláno: 18. 10. 2010, 21:30:00
Abbysak:
„aby na jednej stránke bol formulár a sám na seba odkazoval cez action.“ action="" action="<?php echo $_SERVER['REQUEST_URI'] ?>" |
||
Abbysak Profil |
#3 · Zasláno: 18. 10. 2010, 21:33:06 · Upravil/a: Abbysak
Toto som vedel, ale neviem ako urobiť, aby som mal nejaké pripomienky k webu a ak sa klikne na nejaké tlačítko v menu napr. pošlite nám pozrie sa, či napr. $predmet je prázdny a ak je, tak nech vypíše formulár, a keď nie tak nech zobrazí formulár. niečo ako
<? if (empty ($_POST['email'])) { ?> <form action="" method="post"> <fieldset><legend>Formulár a email</legend> Meno: <input name="meno" type="text" size="32" /><br /> Priezvisko: <input name="priezvisko" type="text" size="28" /><br /> E-mail: <input name="email" type="text" size="32" /><br /> Predmet: <input name="predmet" type="text" size="30" /><br /> <br>Text:<br> <textarea name="text" rows="7" cols="30"></textarea><br> <input name="odoslat" type="submit" value="Odoslať" /> </fieldset></form> <br> <font color="red">Všetky údaje sú povinné!</font> <? } else { echo "Vaša poznámka bola spracovaná" } ?> Ešte som tam nestihol dokompetizovať skript na odoslanie mailu, ale to sa dorobí.. Aby ste lepšie chápali, bude s formulárom len jedna stránka a keď sa formulár odošle vráti to na stránku formuláru, ale server zistí, že $_POST[email] nieje prázdny, tak už len ukáže echo "vas email bol odoslany" vôbec neviem, či by sa niečo také dalo, preto sa pýtam profesionálov... |
||
panther Profil |
#4 · Zasláno: 18. 10. 2010, 21:41:35 · Upravil/a: panther
Abbysak:
nahoru si dej zpracování formuláře, pod to formulář. Symbolicky takto nějak: <?php if (odeslano) { if (!empty($_POST['mail']) and !empty($_POST['name']) ...) {mail(), redirect} else { $message = array(); if (empty($_POST['mail']) $message[] = 'Vyplnte mail'; if (empty($_POST['name'])) $message[] = 'Vyplnte jmeno'; } } ?> <form ...> <?php if (!empty($message)) echo $message; //ja to ukladal do pole, vypisuju to pres foreach do seznamu vetsinou, jde naplnovat i promenna, pak by zde stacilo echo ?> <input ...> </form> Ještě můžeš kontrolovat, jestli je v proměnné s emailem správný formát e-mailové adresy, koukni se na filter_var. |
||
Abbysak Profil |
#5 · Zasláno: 18. 10. 2010, 21:46:12 · Upravil/a: Abbysak
Cez noc sa to pokúsim nejak zostaviť pre seba, ak by mi niečo nevyšlo, ešte sem napíšem.. Ináč Vám veľmi pekne ďakujem.. S Php tak "začínam" a také drobné vysvetlenie na pochopenie mi vždy veľmi pomôže..
Na zistenie emailu by mohlo byť aj ereg alebo preg? |
||
panther Profil |
#6 · Zasláno: 18. 10. 2010, 21:48:44
Abbysak:
„Na zistenie emailu by mohlo byť aj ereg alebo preg?“ ano, regulárem by to také šlo, ale jednodušší a kratší je použít rovnou tuto funkci. |
||
Abbysak Profil |
#7 · Zasláno: 18. 10. 2010, 21:49:03
Tak ešte raz ďakujem :-)
|
||
Časová prodleva: 7 dní
|
|||
Abbysak Profil |
#8 · Zasláno: 25. 10. 2010, 22:53:28 · Upravil/a: Abbysak
<?php $prijemca = "rmsoftx@gmail.com"; if (odoslane){ if (!empty($_POST['mail']) and !empty($_POST['name'])) {mail("$prijemca, $name, $email")} echo "odoslane"; else { $message = array(); if (empty($_POST['mail']) $message[] = 'Vyplnte mail'; if (empty($_POST['name'])) $message[] = 'Vyplnte jmeno'; } } ?> <form action="poslitenam.php" method="post"> <?php if (!empty($message)) echo $message; ?> <fieldset><legend>Formulár a email</legend> Meno: <input name="name" type="text" size="32" /><br /> E-mail: <input name="mail" type="text" size="32" /><br /> <br>Text:<br> <textarea name="text" rows="7" cols="30"></textarea><br> <input name="odoslat" type="submit" value="Odoslať" /> </fieldset></form> Môžte mi poradiť ešte raz a opraviť ma? Nechápem tomu.. Ako som už vravel som len začiatočník... |
||
panther Profil |
#9 · Zasláno: 25. 10. 2010, 22:59:50
Abbysak:
začni tím, že si nastuduješ základy PHP. Copak ti to nepíše žádnou chybu? Když jsem v [#4] psal doslova „Symbolicky takto nějak:“, bylo tím myšleno, že ten zápis je opravdu symbolický. Na 2. ř. tvého kódu chybí středík, 3. řádek je taky blbost (v podmínce je nějaký rádoby string, navíc bez uvozovek), atd. Programovat/učit se programovat stylem Ctrl+C, Ctrl+V z diskusního fóra není dobrý nápad. Spíše bych řekl, že špatný. |
||
Abbysak Profil |
#10 · Zasláno: 25. 10. 2010, 23:34:46
panther:
<?php $prijemca = "rmsoftx@gmail.com"; if (empty($_POST['name']) and empty($_POST['email']) and empty($_POST['text'])) { echo " <form action=\"formular.php\" method=\"post\"> <fieldset><legend>Formulár a email</legend> Meno: <input name=\"name\" type=\"text\" size=\"32\" /><br /> E-mail: <input name=\"email\" type=\"text\" size=\"32\" /><br /> <br>Text:<br> <textarea name=\"text\" rows=\"7\" cols=\"30\"></textarea><br> <input name=\"odoslat\" type=\"submit\" value=\"Odoslať\" /> </fieldset></form>"; echo "<font color=\"red\"> Všetky údaje sú povinné </font>"; } else { mail ("$prijemca", "$name", "$email", "$text"); echo "email uspesne odoslany"; } ?> Toto mi aj ide, nájdeš tam nejakú chybu? Je to samozrejme len začiatok budem to upravovať pre bezpečnosť, lenže ja tam nič chybné nevidím, funguje to... |
||
panther Profil |
#11 · Zasláno: 25. 10. 2010, 23:38:52
Abbysak:
„nájdeš tam nejakú chybu?“ jestli tam je chyba, PHP ti o ní řekne samo, když si zapneš výpis chybových hlášek. Upřímně, kde se vzala ta móda dávat do PHP sáhodlouhé výpisy HTML kódu, ke všemu ještě s escapovanými uvozovkami (když se dají použít apostrofy)? Na 25. ř. nenaplňuješ nikde proměnné name, email a text (ty proměnné tahej z $_POST), podívej se, jaké parametry má funkce mail(). A zapni si vypisování chyb. hlášek, na tohle bys přišel sám. |
||
Abbysak Profil |
#12 · Zasláno: 25. 10. 2010, 23:42:07 · Upravil/a: Abbysak
panther:
Tie "sáhodlouhé" kódy som sa učil z knihy. Prepáč nie každý je vzdelaný ako vy :-). Čiže stačí ak pred mail dám $meno = $_POST['name']; a do mail ($meno);? Neviem, ako by som si mal zapnúť chybové hlášky, mám to na webzdarma a tam mi to fičí... |
||
Keeehi Profil |
#13 · Zasláno: 26. 10. 2010, 00:11:08
Abbysak:
divím se, že ti funguje toto: mail ("$prijemca", "$name", "$email", "$text"); Takto to vypadá lépe: mail ($prijemca, "Zpráva od $name", $text, "From: $email\r\nReply-To: $email\r\n"); |
||
AM_ Profil |
#14 · Zasláno: 26. 10. 2010, 00:26:07 · Upravil/a: AM_
Abbysak:
„Toto mi aj ide, nájdeš tam nejakú chybu?“ pokud něco funguje, těžko v tom hledat chybu. To, že stylisticky je to hrozné, je jiná věc, ale o tom si raději najdi nějaký obsáhlejší materiál, jak psát slušně vypadající kód. Pro začátek vypisovat celý formulář echem je dost hrozné, toto funguje také: <?php if (podminka) { ?> <nejaky_html_kod> <?php } else ... |
||
Abbysak Profil |
#15 · Zasláno: 26. 10. 2010, 17:11:26
AM:
Presne to som potreboval, nejak som nenašiel a bál som sa, že to takto nebude fungovať.. :-) Ďakujem, hneď ešte pozriem ako dobre "štýlovať" a potom sa môžem pustiť do ďalšieho vzdelávania.. :-/ |
||
Abbysak Profil |
#16 · Zasláno: 27. 10. 2010, 20:49:38 · Upravil/a: Abbysak
<?php $prijemca="rmsoftx@gmail.com"; // Prijemca Mailu if(odoslane) (empty($_POST['name']) and empty($_POST['email']) and empty($_POST['text'])) { //Zacina prva podmienka // Zacina druha podmienka if(odoslane1) (empty($_POST['name']) or empty($_POST['email']) or empty($_POST['text'])) { ?> <form action="formular.php" method="post"> <fieldset><legend>Formulár a email</legend> Meno: <input name="name" type="text" size="32" /><br /> E-mail: <input name="email" type="text" size="32" /><br /> <br>Text:<br> <textarea name="text" rows="7" cols="30"></textarea><br> <input name="odoslat" type="submit" value="Odoslať" /> </fieldset></form> <font color="red"> Nevyplnili ste všetky údaje! </font> <?php } else { ?> <form action="formular.php" method="post"> <fieldset><legend>Formulár a email</legend> Meno: <input name="name" type="text" size="32" /><br /> E-mail: <input name="email" type="text" size="32" /><br /> <br>Text:<br> <textarea name="text" rows="7" cols="30"></textarea><br> <input name="odoslat" type="submit" value="Odoslať" /> </fieldset></form> <font color="red"> Všetky údaje sú povinné </font> <? } } //else obalovej podmienky else { mail ($prijemca, "Správa od $name", $text, "From: $email\r\nReply-To: $email\r\n"); echo "Email bol uspesne odoslany!"; } ?> Čo v tomto mám zlé prosím vás? Chcel by som niečo také urobiť, neviem či to robím dobre. Ak NIESÚ dané všetky 3 polia tak mu hodí formulár, a v tom je ďalšia podmienka a ak uživateľ už niečo zadal, ale nevyplnil všetky 3 údaje tak mu to hodí ten formulár + ešte dopíše, že ste nezadali všetky povinné údaje. Viem, že by to stačilo vyriešiť tým, že by som to hneď povedal, a stále ak by nevyhodil bola by iba tá prvá podmienka, ale ja sa tak radšej učím z kódov a tak, ako z nejakej knižky čo všetko hneď zabudnem.. ďakujem |
||
Časová prodleva: 14 let
|
0