Autor | Zpráva | ||
---|---|---|---|
Eastbury village Profil * |
#1 · Zasláno: 17. 4. 2009, 11:55:07
Mam takovy problem s nasledujicim sciptem. Dodnes fungoval bez problemu, ale kdyz jsme upnul web na novy server, email se sice odesle a uspesne doruci, zobrazi se zprava, ze byl email uspesne odeslan, ale v emailu se zobrazi jenom predmet a jinak nic. Myslim, ze stary server byl Windows a novy jede na Linuxu, coz bude asi duvod, proc to nefunguje, ale nevim co s tim. Za jakekoliv tipy dekuji!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>php function</title> </head> <body> <? $subject="Web site message"; $displayedmessage="Name: ".$sendername."\nEmail: ".$senderemail."\nMessage: ".$message."\nUpdates: ".$updates; if ( Mail("mail@mail.co.uk", $subject, $displayedmessage, "From:". $senderemail ) ) print "<p>Thank you. Your message has been sent successfully. We will contact you shortly.</p><br/><a href=\"contactus.html\">back</a>"; else echo "Sorry, sending failed. Please try again or use email address in Contact Us page.";?> </body> </html> email byl zmenen |
||
Philber Profil |
#2 · Zasláno: 17. 4. 2009, 12:21:36 · Upravil/a: Philber
A jak inicializuješ proměnné z formuláře???,.. problém by mohl být v Register globals
|
||
Eastbury village Profil * |
#3 · Zasláno: 17. 4. 2009, 13:00:14
no, toto je muj prvni php pokus, takze nevim, co presne je Register globals. tady je formular:
<form action="sendmessage.php" method="post"><p> Your name <input name="sendername" type="text" value="" size="18" maxlength="28" /> <br/> Your email <input name="senderemail" type="text" value="" size="18" maxlength="28" /> <br/> <span id ="align_left">Message</span> <textarea name="message" cols="25" rows="4"></textarea><br/> <input name="updates" type="checkbox" value="YES" />Please inform me about news<br/> and updates on this website.<br/> <input name="send" type="submit" value="Send"/> </p></form> |
||
Philber Profil |
#4 · Zasláno: 17. 4. 2009, 13:05:06 · Upravil/a: Philber
no jde o to že ty na tom starém serveru po odeslání formuláře jsi obdržel jména polí ako proměnné např.
<input name="sendername" type="text" value="" size="18" maxlength="28" /> $sendername $sendername = $_POST['sendername']; $senderemail= $_POST['senderemail']; $message= $_POST['message']; $updates= $_POST['updates']; keď toto přidáš před $subject="Web site message"; tedy <?php //inicializace promenných $sendername = $_POST['sendername']; $senderemail= $_POST['senderemail']; $message= $_POST['message']; $updates= $_POST['updates']; // sestaveni zprávy $subject="Web site message"; $displayedmessage="Name: ".$sendername."\nEmail: ".$senderemail."\nMessage: ".$message."\nUpdates: ".$updates; //odeslání zprávy if ( Mail("mail@mail.co.uk", $subject, $displayedmessage, "From:". $senderemail ) ) print "<p>Thank you. Your message has been sent successfully. We will contact you shortly.</p><br/><a href=\"contactus.html\">back</a>"; else echo "Sorry, sending failed. Please try again or use email address in Contact Us page.";?> |
||
Eastbury village Profil * |
#5 · Zasláno: 17. 4. 2009, 13:50:49
Super, uz to funguje. Dik moc!
|
||
Časová prodleva: 15 dní
|
|||
saintanwar Profil |
#6 · Zasláno: 3. 5. 2009, 00:30:52 · Upravil/a: saintanwar
Ahoj mám podobný problém a ikdyž jsem (nejen zde) hleda různá řešení tak stejně mi to odesílá prázdné hodnoty. Bohužel nemohu najít přesnou příčinu. Takže budu velmi vděčen za její nalezení :-)
soubor send.php: <?php $mail = $_POST['mail']; $sex = $_POST['sex']; $age = $_POST['age']; $navstivili = $_POST['navstivili']; $kde_sa_dozvedeli = $_POST['kde_sa_dozvedeli']; $ine1 = $_POST['ine1']; $vseobecna_spokojnost = $_POST['vseobecna_spokojnost']; $ako_casto_navstevujete = $_POST['ako_casto_navstevujete']; $skala1 = $_POST['skala1']; $skala2 = $_POST['skala2']; $skala3 = $_POST['skala3']; $zprava_typ_vyrobku = $_POST['zprava_typ_vyrobku']; $aky_vyrobok = $_POST['aky_vyrobok']; $ine2 = $_POST['ine2']; $poradie1 = $_POST['poradie1']; $poradie2 = $_POST['poradie2']; $poradie3 = $_POST['poradie3']; $poradie4 = $_POST['poradie4']; $poradie5 = $_POST['poradie5']; $zprava_buducnost = $_POST['zprava_buducnost']; $mess = "E-mail: ".$mail."\nPohlavie:".$sex."\nVek: ".$age."\nNavštívili ste nás: ".$navstivili."\nAko ste sa o nás dozvedeli: ".$kde_sa_dozvedeli." - iné: ".$ine1."\nSpokojný: ".$vseobecna_spokojnost."\nAko často navštevujete: ".$ako_casto_navstevujete."\nOhodnocenie: ".$skala1." - ".$skala2." - ".$skala3."\nČo vám chýba: " .$zprava_typ_vyrobku."\nAký typ výrobkov: ".$aky_vyrobok." - iné: ".$ine2."\nPoradie: ".$poradie1." - ".$poradie2." - ".$poradie3." - ".$poradie4." - ".$poradie5."\nDo budúcnosti: ".$zprava_buducnost." \n"; reset($_POST); while(key($_POST)) { $mess .= key($_POST).": ".current($_POST)."\n"; next($_POST); } $text=StrTr($mess, "\x8A\x8D\x8E\x9A\x9D\x9E","\xA9\xAB\xAE\xB9\xBB\xBE"); $subject=StrTr('Dotaznik',"\x8A\x8D\x8E\x9A\x9D\x9E","\xA9\xAB\xAE\xB9\xBB\xBE"); $headers = "From: $mail\nX-Sender: $mail\nX-Mailer: IIS Mailform\nX-Priority: 1\nReturn-Path: $mail\nContent-Type: text/plain; charset=iso-8859-2\n"; if (@Mail('XXXX@XXXXXdomena.cz', $subject, $text, $headers)) { header('content-type: text/html;charset=windows-1250'); echo 'Odosláno. <a href="/">Spät na hlavnú stranu</a>'; } else { header('content-type: text/html;charset=windows-1250'); echo 'Došlo k chybě pri odoslanie. Pošlete dotazník ručne:<br><br>' . nl2br($mess); } ?> zkoušel jsem to na několika serverech se stejným výsledkem |
||
Alphard Profil |
#7 · Zasláno: 3. 5. 2009, 00:46:20
Testujte si postupně proměnné. Co vypíše echo $mess, echo $text (za 23. a 30. řádkem) atd.?
Pro testování doporučuji zakomentovat odesílání mailu a testovat jen přes výpisy echo, je to rychlejší. K tomu kódu, nemyslíte, že jsou ta přiřazení na řádcích 2 až 21 zbytečná? Šlo by to spojit přímo do řetězce $mess (řádek 23). Ten cyklus na řádcích 24 až 29 by bylo přehlednější nahradit cyklem foreach. |
||
AM_ Profil |
#8 · Zasláno: 3. 5. 2009, 02:24:38
ta pasáž s "while(key($_POST))" by byla hezčeji napsaná pomocí foreach
|
||
saintanwar Profil |
#9 · Zasláno: 3. 5. 2009, 11:17:54
Alphard: řádky 2-21 jsem před tím zkoušel implementovat přímo v té 23ce, se stejným výsledkem.
Zkoušel jsem i mnohem jednodušší formuláře... stejný výsledek (servery clevernet.cz, station.cz a free hostingy). Ale když jsem místo POST použil GET, tak mi hodnoty už přišly. Tak teď nevím no :-) |
||
nightfish Profil |
#10 · Zasláno: 3. 5. 2009, 11:24:45
„Ale když jsem místo POST použil GET, tak mi hodnoty už přišly“
jestli to není tím, že máš u formuláře method="get"... |
||
saintanwar Profil |
#11 · Zasláno: 3. 5. 2009, 11:31:05 · Upravil/a: saintanwar
„„Ale když jsem místo POST použil GET, tak mi hodnoty už přišly““
„jestli to není tím, že máš u formuláře method="get"...“ vtipné no :-) ne, byla tam před tím nastavena POST.... když jsem napsal, že jsem nahradil POST...tak bylo myšleno, že i ve formuláři ......... teď ještě taková drobnost.... enctype="text/plain" je vhodná u větších formulářů, nebo je zcela zbytečná. totiž po odstranění mi ten POST funguje |
||
Alphard Profil |
#12 · Zasláno: 3. 5. 2009, 11:41:34
saintanwar:
> teď ještě taková drobnost.... enctype="text/plain" je vhodná u větších formulářů, nebo je zcela zbytečná. > totiž po odstranění mi ten POST funguje Enctype dělá problémy, nevím proč, ale setkal jsem se s tím poněkolikáté. Pokud neodesíláte soubor (input type="file"), vůbec ho neuvádějte. Ničemu to nebude vadit a bude to fungovat. |
||
Časová prodleva: 15 let
|
0