Autor | Zpráva | ||
---|---|---|---|
jany Profil |
#1 · Zasláno: 7. 2. 2009, 21:18:01
kedze v php som nikdy sam nic nenapisal, pouzivam len vytvorene skripty a potreboval by som poradit.
Mam skript na odosielanie formulara na mail <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <title>Odesílání emailu</title> </head> <body> <h1>Odesílání emailu</h1> <form action="posli.php" method="post"> <input name="email" size="25" value="Váš@mail"><br> <input name="predmet" size="25" value="Předmět"><br> <input name="spam" size="25"> <strong>= 1 + 1</strong><br> <textarea name="zprava" rows="6" cols="55">Zpráva...</textarea><br> <input type="submit" value="Odeslat"> </form> </body> </html> a skript ktory vykona odoslanie <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <title>Odesílání emailu</title> </head> <body> <h1>Odesílání emailu</h1> <? $predmet = $_POST['predmet']; $email = $_POST['email']; $spam = $_POST['spam']; $zprava = $_POST['zprava']; if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2") { Mail("vase@adresa.com", $predmet, $zprava, "From: " . $email); echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>"; } else { echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>"; } ?> </body> </html> Chcel by som si tam pridat este dalsie vstupne polia a nejake select boxy "robalovacie policko, kde su na vyber moznosti". To policko by som asi aj zvladol, pridam dalsiu premennu, tak isto ju dam do if a do mail (tak isto by to malo asi byt aj ked by som tych vtupnych policok chcel mat 20) ale ako to spravit s tym select box ?? |
||
Alphard Profil |
#2 · Zasláno: 7. 2. 2009, 23:04:48
„ale ako to spravit s tym select box“
předpokládám, že s html si poradíte, když jste v sekci PHP <select name="ovoce"> bude mít své name a jednotlivé <option value="tresne"> budou mít své value, PHP potom dostane kombinaci name=value dle vybrané hodnoty „pridam dalsiu premennu, tak isto ju dam do if a do mail“ ano, ale nezapomeňte, že nemůžete přidat paramtery, vše musíte spojit do třetího |
||
jany Profil |
#3 · Zasláno: 8. 2. 2009, 10:21:31 · Upravil/a: jany
Nejak to nefunguje. Pridal som dalsie policko do formulara
<input name="meno" size="25" value="meno"><br> a pridal som aj dalsiu premennu aj v podmienke <? $predmet = $_POST['predmet']; $email = $_POST['email']; $meno = $_POST['meno']; $spam = $_POST['spam']; $zprava = $_POST['zprava']; if ($predmet!="" and $email!="" and $zprava!="" and $meno!="" and $spam=="2") { Mail("24680@seznam.cz", $predmet, $zprava, $meno, "From: " . $email); echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>"; } else { echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>"; } ?> A php vypisuje Warning: mail(): SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE. in /9p/wz.cz/j/jany/a/posli.php on line 19 ale pri tom pise, Váš e-mail byl úspěšně odeslán. ale nic neprislo. |
||
Alphard Profil |
#4 · Zasláno: 8. 2. 2009, 10:24:31
cituji svůj předchozí příspěvěk
ano, ale nezapomeňte, že nemůžete přidat paramtery, vše musíte spojit do třetího :-) jako bych to nepsal Mail("24680@seznam.cz", $predmet, $zprava."\r\nJmeno: ".$meno, "From: " . $email); „ale pri tom pise, Váš e-mail byl úspěšně odeslán.“ dejte mail do podmínky |
||
jany Profil |
#5 · Zasláno: 8. 2. 2009, 11:26:35
Nechapem, jak spojit do třetího ?
|
||
SwimX Profil |
#6 · Zasláno: 8. 2. 2009, 12:13:42 · Upravil/a: SwimX
jany
$zprava = "Uzivatel ".$_POST['meno']." vam pise ".$_POST['zprava']; if( Mail("24680@seznam.cz", $predmet,$zprava, "From: " . $email)) echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>"; else echo "Neodeslan"; edit: prostě v mail() musí být 4 parametry. Tvuj mejl, predmet zpravy, zprava, a od koho je (popřípadě + hlavičky) takže musíš všechny ty proměnný $_POST[neco] spojit do jedné - $zprava a potom poslat mejl s ní. Když budeš chtít do zprávy vložit nový řádek udělej: $zprava = "text \r\n text na dalsi radce"; je to escape sekvence nového řádku (stejně tak např tabulátor má \t) ale funguje pouze poud je v uvozovkách " "; |
||
jany Profil |
#7 · Zasláno: 8. 2. 2009, 12:48:26
Aha, tak toto uz funguje. Takze funkcia mail, moze mat najviac 4 parametre ? Lebo nasiel som este nejaky iny skript na odosielanie formulara na mail a tam som videl viac premennych asi 5-6 formularovych policok tam bolo, ale zase som tam nevidel funkciu mail (da sa to odosielat aj inak ako cez funkciu mail) ?
A ked potrebujem napr. 10 formul. policok, tak vsetko musim analogicky zakomponovat do tej $zprava ?? btw dik za vysvetlenie |
||
SwimX Profil |
#8 · Zasláno: 8. 2. 2009, 12:53:46
jany
„10 formul. policok, tak vsetko musim analogicky zakomponovat do tej $zprava ??“ ano nebo mail(komu, predmet, $_POST['zprava']. "text". $_POST['druha'], from); ale to s tou zprávou je takové hezčí. existuje eště třeba PHPmailer a nebo tady: http://cz2.php.net/manual/en/function.mail.php dole je See also |
||
jany Profil |
#9 · Zasláno: 8. 2. 2009, 14:21:21
Tak uz mi to funguje aj zo select boxom. dik vsem za pomoc, hlavne SwimXovy za vysvetlenie polopate.
A este by som chcel vediet jednu vec. Testujem to na wz, aj na ic a funguje to, ale z lokalneho serveru to hodi hlasku Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in f:\wampp1\htdocs\a\posli.php on line 18 pozeral som do php.ini ale neviem ako ho mam nakonfigurovat, aby posielal aj z localhostu, je to vobec mozne ? [mail function] ; For Win32 only. SMTP = localhost ; For Win32 only. sendmail_from = postmaster@localhost ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ;sendmail_path = |
||
SwimX Profil |
#10 · Zasláno: 8. 2. 2009, 15:37:54
jany
„z lokalneho serveru to hodi hlasku“ ano, že nemáš nasavené SMTP - tak to mám také, ale popravdě mě to netrápí. Něco už se tu řešilo, nevvím jak to ale dopadlo: http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=69876 něco je popsáno i třeba tady: http://forum.phpwcms.org/viewtopic.php?f=4&t=904 ale nečet sem to, takže nevím, zda to pomůže |
||
jany Profil |
#11 · Zasláno: 8. 2. 2009, 16:21:33
Tak na ten lokal kaslem tiez, ale este mi tu nieco nesedi, odosielaci skript som spravil ako ste radili a vyzera takto
<? $predmet = $_POST['predmet']; $email = $_POST['email']; $spam = $_POST['spam']; $zprava = "Meno ".$_POST['meno']." Vek ".$_POST['vek']." mesto ".$_POST['mesto']." Platforma ".$_POST['platforma']." vam pise ".$_POST['zprava']; if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2") { Mail("24680@seznam.cz", $predmet, $zprava."\r\nmeno:\r\nvek:\r\nmesto:\r\nplatforma: ", "From: " . $email); echo '<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>'; } else { echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>"; } ?> formular <form action="posli.php" method="post"> <input name="email" size="25" value="@"> mail<br> <input name="predmet" size="25" value="Předmět"> predmet<br> <input name="meno" size="25" value="meno"> meno<br> <input name="vek" size="25" value="25"> vek<br> <input name="mesto" size="25" value=""> mesto<br> <input name="spam" size="25"> <strong>= 1 + 1</strong><br> <select name="platforma" size="1"> <option value="win">Windows <option value="linux">Linux <option value="unix">Unix <option value="mac">Mac </select> platforma<br> <textarea name="zprava" rows="6" cols="55">Zpráva...</textarea><br> <input type="submit" value="Odeslat"> </form> A mail dostanem taky nejaky blby Meno Fero Vek 120 mesto Praha Platforma linux vam pise Zprava pre adresata ... meno: vek: mesto: platforma: |
||
SwimX Profil |
#12 · Zasláno: 8. 2. 2009, 16:31:45
jany
máš co sis napsal ;) poskládáš si zprava $zprava = "Meno ".$_POST['meno']." Vek ".$_POST['vek']." mesto ".$_POST['mesto']." Platforma ".$_POST['platforma']." vam pise ".$_POST['zprava']; a pak odešleš $zprava."\r\nmeno:\r\nvek:\r\nmesto:\r\nplatforma: " takže první řádka je zpráva: Meno Fero Vek 120 mesto Praha Platforma linux vam pise Zprava pre adresata ... a za tím je to "\r\nmeno:\r\nvek:\r\nmesto:\r\nplatforma: meno: vek: mesto: platforma: pravděpodobně chceš toto: $zprava = "Meno ".$_POST['meno']."\r\nVek ".$_POST['vek']." \r\nmesto ".$_POST['mesto']." \r\nPlatforma ".$_POST['platforma']." \r\nvam pise ".$_POST['zprava']; ... if( Mail("24680@seznam.cz", $predmet, $zprava, "From: " . $email) ) |
||
jany Profil |
#13 · Zasláno: 8. 2. 2009, 16:52:17
Ano presne toto chcem.
Ty si hlavicka A ja zase laidak, co sa nic nevie naucit :) |
||
jany Profil |
#14 · Zasláno: 9. 2. 2009, 10:52:26
Tak este mam nejaku tu otazku: do $zprava som si dal dalsich 35 poloziek (myslel som, ze ich bude menej :) ) chvalabohu funguje to, ale potreboval by som spravit, aby niektore polozky boli povinne a niektore nie. Zrejme to treba zakomponovat do toho, ale neviem ako to ma byt presne:
if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2") Lebo teraz to funguje tak, ze staci ak vyplnim nieco z tych 35 poloziek a mail sa odosle a ja potrebujem aby niektore museli byt vyplnene (niektore nemusia). A este dalsia vec, sice to nesuvisi z php, ale na mail nechodi š,č,ť,ž atd... ale ine znaky, ako nastvit kodovanie aby chodili aj š, č ... |
||
SwimX Profil |
#15 · Zasláno: 9. 2. 2009, 23:31:16
jany
vypíšeš sem ty povinné: (šlo ba to i jinak a čistěji, ale takle ti to stačí) if ($predmet!="" and $email!="" and $_POST['telefon']!="" and $_POST['mobil']!="" and $_POST['icw']!="" and $spam=="2") „ š,č,ť,ž atd...“ $hlavicky = "Content-type: text/plain; charset=windows-1250 \n"; mail($komu, $predmet, $textMailu, "From: $odesilatel\r\n".$hlavicky); |
||
Časová prodleva: 3 dny
|
|||
jany Profil |
#16 · Zasláno: 12. 2. 2009, 14:44:21
dik, ze si mi poradil, este sa opytam, pre nemecke znaky sa pouziva ake cislo charset=windows ?
|
||
jany Profil |
#17 · Zasláno: 12. 2. 2009, 20:28:45
aha, takze charset=windows-1250 funguje aj na nemecke znaky (tak potom je to vsetko OK) a diky SwimX
|
||
jany Profil |
#18 · Zasláno: 12. 2. 2009, 20:31:24
aha, takze charset=windows-1250 funguje aj na nemecke znaky (potom je to vsetko OK). Dik SwimX za vsetky rady
|
||
Časová prodleva: 11 dní
|
|||
jany Profil |
#19 · Zasláno: 23. 2. 2009, 14:57:28
Hi SwimX
mam dalsi problem s diakritikou pri odoslani mailu. Pokial som fungoval na seznam.cz tak to fungovalo, ale teraz nechavam formular odosielat na iny mailovy server a diakritika je zase blba. skusal so to zmenit aj na $hlavicky = "Content-type: text/plain; charset=utf8 \n"; |
||
nightfish Profil |
#20 · Zasláno: 23. 2. 2009, 15:00:57
„charset=utf8“
utf-8 a ještě dodám, že pokud je špatná diakritika v předmětu, tak je potřeba i předmět zakódovat |
||
jany Profil |
#21 · Zasláno: 23. 2. 2009, 18:23:46
To sa mi zda dost zlozite pe mna, neda sa to nejak jednoduchsie ? ved na seznam, gmail to chodi pekne, preco to na iny mail server nedojde korektne hmm...
|
||
jany Profil |
#22 · Zasláno: 24. 2. 2009, 21:16:45
tak ako by som to předmět zakódovat zakomponoval do toho prveho skriptu, co som sem dal, mam z toho trochu chaos
|
||
Časová prodleva: 5 dní
|
|||
SwimX Profil |
#23 · Zasláno: 1. 3. 2009, 18:35:05
jany
když jenom opíšu to Alphardovo řešení <?php // Komu má přijít $mail = $_POST['email']; // s jakým předmětem $predmet = $_POST['predmet']; //jaká zpráva $zprava = "Meno ".$_POST['meno']."\r\nVek ".$_POST['vek']." \r\nmesto ".$_POST['mesto']." \r\nPlatforma ".$_POST['platforma']." \r\nvam pise ".$_POST['zprava']; // From: tvuj@email.cz (musí tam zůstat to \n) $kon = cs_mail ($mail, $predmet, $zprava, "From: tvuj@email.cz\n"); if ($kon) echo "E-mail byl úspěšně odeslán.<br>"; else echo "E-mail se bohužel nepodařilo odeslat.<br>"; /* tady prostě funkce které dělají co mají */ function autoUTF($s) { if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) return $s; if (preg_match('#[\x7F-\x9F\xBC]#', $s)) return iconv('WINDOWS-1250', 'UTF-8', $s); 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\n"; $head .= "Content-Type: text/plain; charset=\"utf-8\"\n"; $head .= "Content-Transfer-Encoding: base64\n"; $zprava = base64_encode (autoUTF ($zprava)); $stav = mail ($to, $predmet, $zprava, $head); return $stav ? TRUE : FALSE; } ?> |
||
Časová prodleva: 6 dní
|
|||
jany Profil |
#24 · Zasláno: 7. 3. 2009, 11:30:42
Takze bohuzial nefungovalo to (neviem preco). Tak este raz, skript vyzera takto
<?php $mail = "mojmail@seznam.cz"; $predmet = "predmet_mailu"; $email = $_POST['email']; $spam = $_POST['spam']; $zprava = " \r\nNiečo 1: ".$_POST['nieco1']. " \r\nNiečo 2: ".$_POST['nieco2']. " \r\nNiečo 3: ".$_POST['nieco3']. " \r\nNiečo 4: ".$_POST['nieco4']. " \r\nNiečo 5: ".$_POST['nieco5']. " \r\nNiečo 6: ".$_POST['nieco6']. " \r\nNiečo 7: ".$_POST['nieco7']. " \r\nEmail: ".$_POST['email']. " \r\nSpráva: ".$_POST['zprava']; $kon = cs_mail ($mail, $predmet, $zprava, "From: $email\n"); if ($email!="" and $zprava!="" and $spam!="2" ) { if ($kon) echo "E-mail byl úspěšně odeslán.<br>"; } else echo "E-mail se bohužel nepodařilo odeslat.<br>"; ?> <?php function autoUTF($s) { // detect UTF-8 if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) return $s; // detect WINDOWS-1250 if (preg_match('#[\x7F-\x9F\xBC]#', $s)) return iconv('WINDOWS-1250', 'UTF-8', $s); // 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\n"; $head .= "Content-Type: text/plain; charset=\"utf-8\"\n"; $head .= "Content-Transfer-Encoding: base64\n"; $zprava = base64_encode (autoUTF ($zprava)); $stav = mail ($to, $predmet, $zprava, $head); return $stav ? TRUE : FALSE; } ?> Teraz sa mail odosle stale, aj ked niesu vyplnene ziadne polia vo formulary (ale vypise sa, ze mail nebol odoslany, asi mam nieco zle s tou podmienkou). Formular vyzera nasledovne <form action="posli.php" method="post"> <table> <tr> <td>Niečo 1:**</td> <td><input name="nieco1" size="25" value=""></td> </tr> <tr> <td>Niečo 2:**</td> <td><input name="nieco2" size="25" value=""></td> </tr> <tr> <td>Niečo 3:</td> <td><input name="nieco3" size="25" value=""></td> </tr> <tr> <td>Niečo 4:</td> <td><input name="nieco4" size="25" value=""></td> </tr> <tr> <td>Niečo 5:</td> <td><input name="nieco5" size="25" value=""></td> </tr> <tr> <td>Niečo 6:**</td> <td><input name="nieco6" size="25" value=""></td> </tr> <tr> <td>Niečo 7:**</td> <td><input name="nieco7" size="25" value=""></td> </tr> <tr> <td>Email:**</td> <td><input name="email" size="25" value=""></td> </tr> <tr> <td>Antispam** 1+1=</td> <td><input name="spam" size="10"></td> </tr> <tr> <td valign="top">Správa:</td> <td> <textarea name="zprava" rows="5" cols="30"></textarea><br> <input type="submit" value="Odoslať"> </td> </table> </form> Povinne polia by som chel tie, ktore su oznacene ** Hadam by to pre phpeckarov nemal byt problem (pre mna to problem je) |
||
Alphard Profil |
#25 · Zasláno: 7. 3. 2009, 12:03:22 · Upravil/a: Alphard
vycházím z posledního příspěvku, tu měsíc starou historii jsem nezkoumal
místo tohoto $kon = cs_mail ($mail, $predmet, $zprava, "From: $email\n"); if ($email!="" and $zprava!="" and $spam!="2" ) { if ($kon) echo "E-mail byl úspěšně odeslán.<br>"; } else echo "E-mail se bohužel nepodařilo odeslat.<br>"; tam dejte if ($email!="" and $zprava!="" and $spam=="2" ) { $kon = cs_mail ($mail, $predmet, $zprava, "From: $email\n"); if ($kon) echo "E-mail byl úspěšně odeslán.<br>"; } else echo "E-mail se bohužel nepodařilo odeslat.<br>"; |
||
jany Profil |
#26 · Zasláno: 7. 3. 2009, 17:13:58
Dik Alphard teraz to konecne vsetko slape aj s diakritikou
|
||
Alphard Profil |
#27 · Zasláno: 7. 3. 2009, 17:34:42 · Upravil/a: Alphard
jany
nz, tak po měsici ale ještě si opravte $spam=="2" |
||
jany Profil |
#28 · Zasláno: 7. 3. 2009, 21:14:34
jj toto som uz spravil (to by bol moc jednoduchy antispam $spam!="2" :) ) dik
|
||
Časová prodleva: 15 let
|
0