Autor | Zpráva | ||
---|---|---|---|
zarkan Profil * |
#1 · Zasláno: 25. 3. 2011, 12:27:29
Zdarec,
můžu poprosit o radu – co dělám blbě? De mě o to, že si posílám výsledky na e-mail. Email nevyplňuji - mám v hidden svůj, aby to návštěvníka zbytečně neotravovalo, případně neodradilo vyplnit, jméno je předmět a vyber písmene je zprava. Kdybych tam měl na výběr jen z jedné možnosti tak je to v pohodě a chápal bych to, ale když tam mám už dvě možnosti výběru tak nevím co s tím. Chtěl bych to mít prostě tak, že mě na e-mail přijde předmět se jménem a ve zprávě bude napsaný třeba acko a ecko. <form action="pokus.php" method="post"> <input type="hidden" name="email" value="muje-mail"> Jméno: <input name="predmet"><br> Vyber písmeno:<br> <input type="radio" name="zprava" value="acko">acko<br> <input type="radio" name="zprava" value="becko">becko<br> <input type="radio" name="zprava" value="cecko">cecko<br><br> Vyber dalsi písmeno:<br> <input type="radio" name="prava" value="decko">decko<br> <input type="radio" name="prava" value="ecko">ecko<br> <input type="radio" name="prava" value="efko">efcko<br><br> <input type="submit" value="Odeslat"> </form> A tady je ten pokus.php <? if ( Mail("muje-mail", $predmet, $zprava, $prava, "From: " . $mail_odesilatele) ) echo "Mail byl odeslán"; else echo "Mail se nepodařilo odeslat"; ?> |
||
zarkan Profil * |
#2 · Zasláno: 25. 3. 2011, 12:36:30
v tom 1 řádku u toho pokus.php nemá být $mail_odesilatele) ale $email)
|
||
Davex Profil |
#3 · Zasláno: 25. 3. 2011, 20:45:11 · Upravil/a: Davex
zarkan:
1) Jako čvrtý parametr funkce mail() patří tvůj pátý s přidaným koncem řádku "\n" .
2) Spoléháš na zapnuté register_globals. Pro získání vyplněných údajů používej superglobální pole $_POST .
|
||
zarkan Profil * |
#4 · Zasláno: 26. 3. 2011, 15:01:02
Davex:
Tak abych řekl pravdu tak nejsem o moc chytřejší ten kód jsem vzal normalně tady na stránkách - Formulář na mail a ten mail_odesilatel jsem psal ze to mam blbe viz #2 .... |
||
jenikkozak Profil |
#5 · Zasláno: 26. 3. 2011, 15:41:36
zarkan:
1) Na uvedené stránce není přidán ten další parametr funkce mail(), a sice to $prava. Tuto proměnnou musíte přidat do $zpravy. Například zápisem $zprava.=$prava; 2) Není-li na serveru zapnuté register_globals, což už moc nebývá, je nutné místo $predmet pracovat s $_POST["predmet"], místo $zprava s $POST["zprava"] a tak. 3) Yuhů má v kódu input <input name="mail_odesilatele">, ve Vašem skriptu chybí. Proměnná $mail_odesilatele, resp. $_POST["mail_odesilatele"] tedy neexistuje. |
||
zarkan Profil * |
#6 · Zasláno: 26. 3. 2011, 22:13:04
Mužu vědět co tam mám teď blbě:?
<form action="prihlaska.php" method="post"> <input type="hidden" name="email" value="muj.e-mail"> Jméno: <input name="predmet"><br> Vyber písmeno:<br> <input type="radio" name="zprava" value="acko">acko<br> <input type="radio" name="zprava" value="becko">becko<br> <input type="radio" name="zprava" value="cecko">cecko<br><br> Vyber dalsi písmeno:<br> <input type="radio" name="prava" value="decko">decko<br> <input type="radio" name="prava" value="ecko">ecko<br> <input type="radio" name="prava" value="efko">efcko<br><br> <input type="submit" value="Odeslat"> </form> A tady "prihlaska.php" <? $predmet = $_POST['predmet']; $email = $_POST['email']; $zprava = $_POST['zprava']; $zprava = $_POST['prava']; if ($predmet!="" and $email!="" and $zprava!="" and $prava!="") { Mail("muj.e-mail", $predmet, $zprava, $prava, "From: " . $email); echo "<p><strong>Díky za tip.</strong></p>"; } else { echo "<p><strong>Vypln jméno a tip!</strong></p>"; } ?> Kam mám dat tohle? $zprava.=$prava; |
||
jenikkozak Profil |
#7 · Zasláno: 26. 3. 2011, 23:39:57
Čárkou se v závorce za názvem funkce oddělují její parametry.
Funkce mail má (v tomto případě) 4 parametry - adresáta, předmět, tělo e-mailu a hlavičky. Ty však máš parametrů 5. Chápeš? Takže buď napíšeš: $zprava=$zprava.$prava; //což se dá zkrátit na $zprava.=$prava; mail ("adresát","předmět",$zprava,"hlavičky"); mail ("adresát","předmět",$zprava.$prava,"hlavičky"); Na řádku 5 máš zřejmě překlep: $zprava=$_POST['prava']; Davex ti radil, abys čtvrtý parametr ukončil zpětným lomítkem a enkem. |
||
G3n3sis19 Profil |
#8 · Zasláno: 27. 3. 2011, 03:30:58
jenikkozak:
má to skoro dobře ;) zarkan: ta prihlaska.php by měla být takto <? $predmet = $_POST['predmet']; $email = $_POST['email']; $zprava = $_POST['zprava']; $zprava .= $_POST['prava']; if ($predmet!="" and $email!="" and $zprava!="" and $prava!="") { Mail("muj.e-mail", $predmet, $zprava, $prava, "From: " . $email . "\n"); echo "<p><strong>Díky za tip.</strong></p>"; } else { echo "<p><strong>Vypln jméno a tip!</strong></p>"; } ?> |
||
TomasJ Profil |
#9 · Zasláno: 27. 3. 2011, 03:49:06 · Upravil/a: TomasJ
G3n3sis19:
„ta prihlaska.php by měla být takto“ Ne neměla. zarkan: Mohla by být takto: <?php if(isset($_POST['zprava'])) { if(isset($_POST['predmet']) && isset($_POST['email'])) { $predmet = $_POST['predmet']; $email = $_POST['email']; $zprava = $_POST['zprava']."\n".$_POST['prava']; mail("tvuj@mail.cz", $predmet, $zprava, "From: $email"); echo "<p><strong>Díky za tip.</strong></p>"; } else{echo "<p><strong>Vyplň jméno a tip!</strong></p>";} } ?> |
||
G3n3sis19 Profil |
#10 · Zasláno: 27. 3. 2011, 13:06:01
Dobře, mohla. ta moje oprava byla jen kvůli tomu \n. fungovalo by to
|
||
TomasJ Profil |
#11 · Zasláno: 27. 3. 2011, 13:36:18 · Upravil/a: TomasJ
G3n3sis19:
Ne nefungovalo. Posíláš tam 5 parametrů a funkce mail() má jen 4. mail("pro@koho.cz", "Předmět", "Zpráva", "Další parametry, třeba informace hlavičky mailu, oddělené \n"); |
||
G3n3sis19 Profil |
#12 · Zasláno: 27. 3. 2011, 13:52:34
Jo a joo, tak na to jsem nekoukal, nevšiml jsem si toho. Omlouvám se ti
|
||
zarkan Profil * |
#13 · Zasláno: 27. 3. 2011, 20:16:58
TomasJ:
Díky moc :) |
||
Časová prodleva: 1 měsíc
|
|||
zarkan Profil * |
#14 · Zasláno: 27. 4. 2011, 13:37:25
Mám menší problém - mám stejný kód jako předtím, s tím že tam mám 4 otázky na který jsou možnosti odpovědět přes input typ radio. Jakmile jsou vyplněny všechny čtyři odpovědi tak je vše v pořádku - vypíše se diky a odpovědi všech otázek mi dojdou na email. Jakmile ale vynechám otázku "acko" tak se bohužel už nic nestane - ani se nenapíše chybová hláška (else). Nevíte někdo prosím kde je problém? Předem díky.
<?php if(isset($_POST['acko'])) { if(isset($_POST['predmet']) && isset($_POST['email'])) { $predmet = $_POST['predmet']; $email = $_POST['email']; $acko = $_POST['acko']."n".$_POST['becko']."n".$_POST['cecko']."n".$_POST['decko']; mail("muj@mail.cz", $predmet, $acko, "From: $email"); echo "<p><strong>Díky.</strong></p>"; } else{echo "<p><strong>Chyba!</strong></p>";} } ?> |
||
petr 6 Profil |
#15 · Zasláno: 27. 4. 2011, 13:39:40 · Upravil/a: petr 6
zarkan:
„Nevíte někdo prosím kde je problém?“ Problém je v tom, že to máš tak napsané, aby se kód na řádcích 4 až 12 provedl jen při vyplněném áčku, viz řádek 2: if(isset($_POST['acko'])) |
||
zarkan Profil * |
#16 · Zasláno: 27. 4. 2011, 13:49:29
petr 6:
A nějakej tip na to jak to udělat aby mě přišli výsledky i jen v té situaci když odpovím jen např. na cecko a decko? |
||
petr 6 Profil |
#17 · Zasláno: 27. 4. 2011, 13:52:10
zarkan:
Třeba odstranit tu podmínku |
||
zarkan Profil * |
#18 · Zasláno: 27. 4. 2011, 13:54:04
petr 6:
Takže stačí smazat 2,3 a 13 řádek? |
||
petr 6 Profil |
#19 · Zasláno: 27. 4. 2011, 13:55:54
zarkan:
Ano. Co jiného? |
||
zarkan Profil * |
#20 · Zasláno: 27. 4. 2011, 14:01:33
petr 6:
No, že mě to teď nefunguje už vůbec, ani když odpovím na všechny 4 otázky. |
||
petr 6 Profil |
#21 · Zasláno: 27. 4. 2011, 14:10:16 · Upravil/a: petr 6
zarkan:
„No, že mě to teď nefunguje už vůbec, ani když odpovím na všechny 4 otázky.“ Asi to máš rozbité. Buďto jsi umazal málo nebo moc, nebo máš nějakou další chybu mimo uvedený kód. |
||
Časová prodleva: 14 dní
|
|||
Zarkan Profil * |
#22 · Zasláno: 11. 5. 2011, 18:37:31
Ten kód mám teďka takhle:
<? $predmet = $_POST['predmet']; $email = $_POST['email']; $zprava = $_POST['acko']."\n".$_POST['becko']."\n".$_POST['cecko']."\n".$_POST['decko']; if ($predmet!="" and $email!="" and $zprava!="") { Mail("muj@mail.cz", $predmet, $zprava, "From: " . $email); echo "<p><strong>Díky.</strong></p>"; } else { echo "<p><strong>Chyba!</strong></p>"; } ?> A mám menší problém když nenapíšu ani předmět ani zprávu, tak se mě vypíše chyba to samé i u toho když vypíšu jen zprávu, ale ne předmět - to je vše v pořádku. Ale, bohužel když vypíšu předmět a zprávu nechám volnou, tak se to odešle a potvrdí se to tím díky. Tak nevíte jak bych to měl upravit, aby se to odeslalo a aby se to díky zobrazilo jen v případě, že vyplním jak předmět tak i zprávu. |
||
Časová prodleva: 6 dní
|
|||
petr 6 Profil |
#23 · Zasláno: 17. 5. 2011, 16:43:30
Zarkan:
Máš tam pořád $zprava = "\n\n\n" $zprava!="" Zkus testovat trim($zprava)!="" !empty($zprava) |
||
Časová prodleva: 3 dny
|
|||
zarkan Profil * |
#24 · Zasláno: 20. 5. 2011, 10:20:36
petr 6:
Jo díky, sice to jsem ani po pár dnech hraní to trim a ani empty moc nepobral, ale nakonec jsem jen smazal ty novy řádky a faká to, jak má. Takže děkuji. |
||
Časová prodleva: 4 dny
|
|||
Sirion Profil |
#25 · Zasláno: 24. 5. 2011, 00:54:04
Používat skryté prvky ve formulářích nedoporučuji, je to potenciální zdroj útoku a navíc zbytečné. Uložení do proměnné je lepší.
např. $odesilatel="From: Jan Novák <jan.novak@seznam.cz>"; |
||
G3n3sis19 Profil |
#26 · Zasláno: 24. 5. 2011, 13:41:13
zarkan:
„trim a ani empty“ trim ti smaže všechny zbytečný mezery (na začátku a na konci proměnné) a empty zkontroluje, jestli je proměnná prázdná ;) |
||
zarkan Profil |
#27 · Zasláno: 24. 5. 2011, 22:16:53
Ještě jeden dotaz - k výpisům hlášek. Mám teďka ten kód (jen ty hlášky) takto:
if ($jmeno!="" and $zprava!="") { // tady mám ten samotný kód který se udělá v případě že vypíšu jak jmeno tak i zprávu echo "<b><font color=green>Díky.</font color=green></b><br><br>";} // a tady ta hláška - díky else {echo "<b><font color=red>Chyba!</font color=red></b><br><br>";} // hláška - chyba A chtěl bych to mít ještě tak, že tam nebude jen ta chyba, ale aby se dál ještě zobrazilo buď: ($jmeno!="") echo "<b><font color=red>Není vypsána zpráva.</font color=red></b><br><br>"; ($zprava!="") echo "<b><font color=red>Není vypsáno jmeno.</font color=red></b><br><br>"; else {echo "<b><font color=red>Chyba - neni vypsáno ani jmeno ani zprava!</font color=red></b><br><br>";} |
||
Keeehi Profil |
#28 · Zasláno: 24. 5. 2011, 22:32:31
if(empty($jmeno) and !empty($zprava)) echo "<b><font color=red>Není vypsána zpráva.</font></b><br><br>"; if(!empty($jmeno) and empty($zprava)) echo "<b><font color=red>Není vypsáno jmeno.</font></b><br><br>"; if(empty($jmeno) and empty($zprava)) echo "<b><font color=red>Chyba - neni vypsáno ani jmeno ani zprava!</font></b><br><br>"; |
||
zarkan Profil |
#29 · Zasláno: 24. 5. 2011, 22:40:58
Parada díky.
Jinak jaktože tam nikde nejsou ty zavory { a } ???? |
||
Keeehi Profil |
#30 · Zasláno: 24. 5. 2011, 22:44:08 · Upravil/a: Keeehi
zarkan:
Pokud se má if (a další) vztahovat jen k jednomu následujícímu příkazu, je možné je vynechat. |
||
Téma pokračuje na další straně.
|
0