Autor Zpráva
Eastbury village
Profil *
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
A jak inicializuješ proměnné z formuláře???,.. problém by mohl být v Register globals
Eastbury village
Profil *
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
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" />
a z toho ty vzešla proměnna
$sendername
. No ale když je teď register globals vypnuté tak musís k proměnným přistupovat přes superglobální pole a to následovně

$sendername = $_POST['sendername'];
$senderemail= $_POST['senderemail'];
$message= $_POST['message'];
$updates= $_POST['updates'];


keď toto přidáš před
$subject="Web site message";
vše by mělo fungovat ako předtím xd

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 *
Super, uz to funguje. Dik moc!
saintanwar
Profil
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
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
ta pasáž s "while(key($_POST))" by byla hezčeji napsaná pomocí foreach
saintanwar
Profil
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
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
„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
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.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: