Vím že je to o pár řádků níž, ale mě mail prostě nefunguje.
vrací to true, ale na mail nic nepřijde. zkoušel jsem různé adresy a furt nic.
kdyžtak je to tu: http://fbcstraznice.wz.cz/date.php
kód je následující(zkopíroval jsem to z webtip.cz):
<?
function formular()
{
?>
<form action="<?= $PHP_SELF ?>" method="post">
<table width="400" border="1" cellpadding="5" align="center">
<tr>
<td colspan="2" align="center">php mailer</td>
</tr>
<tr>
<td>adresa příjemce:</td>
<td>
<input type="text" name="mail[adresa]">
</td>
</tr>
<tr>
<td>adresa odesílatele:</td>
<td>
<input type="text" name="mail[odesilatel]">
</td>
</tr>
<tr>
<td>předmět:</td>
<td>
<input type="text" name="mail[predmet]">
</td>
</tr>
<tr>
<td>text:</td>
<td>
<textarea name="mail[telo]" cols="50" rows="10"></textarea>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="submit" value="odeslat">
</td>
</tr>
</table>
</form>
<?
}
function posli($mail)
{
$hlavicka = "From: $mail[odesilatel]\r\n";
$hlavicka.= "Reply-To: $mail[odesilatel]\r\n";
$hlavicka.= "X-Mailer: PHP";
mail ("$mail[adresa]", "$mail[predmet]", "$mail[telo]", "$hlavicka")
or die ("error");
echo "OK";
}
if (!isset($submit)) formular();
else posli($mail);
?>
Ježkovy voči. Na ten příklad úplně zapomeň. To je totální prasárna a ještě k tomu sedm let stará. Se divím, že tyto kostlivci ještě existuji.
Jelikož nemám co na práci, tak ti udělam službičku. Neodzkoušeno.
<?php
if(isset($_POST['odeslat'])) {
if($_POST['odesilatel']=="" || $_POST['adresa']=="") {
echo "Chybi odesilatel nebo adresat. Bez nich nelze email odeslat";
} else {
$hlavicka = "From:". $_POST['odesilatel'] ."\r\n";
$hlavicka .= "Reply-To: ". $_POST['odesilatel'] ."\r\n";
$hlavicka .= "X-Mailer: PHP";
if ( mail($_POST['adresa'],$_POST['predmet'],$_POST['telo'],$hlavicka) ) {
echo "Odeslano";
} else {
echo "Chyba pri odesilani";
}
}
}
?>
<form action="" method="post">
<table width="400" border="1" cellpadding="5" align="center">
<tr>
<td colspan="2" align="center">php mailer</td>
</tr>
<tr>
<td>adresa příjemce:</td>
<td>
<input type="text" name="adresa">
</td>
</tr>
<tr>
<td>adresa odesílatele:</td>
<td>
<input type="text" name="odesilatel">
</td>
</tr>
<tr>
<td>předmět:</td>
<td>
<input type="text" name="predmet">
</td>
</tr>
<tr>
<td>text:</td>
<td>
<textarea name="telo" cols="50" rows="10"></textarea>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="odeslat" value="odeslat">
</td>
</tr>
</table>
</form>
viz Tomik. Priklady z PHP3 jsou stare a pouzivaji nebezpecne moznosti. Proto je tu zapnuty safe_mode, ktery to zakazuje.
1. zkus si na zacatek programu dat
<?php print_r($_POST); ?>
a pak odesli formular. Uvidis, ze se vse prenasi, jen se automaticky nevytvari
$telo = $_POST['telo'];
$_SESSION['telo'] = $_POST['telo'];
$_COOKIES['telo'] = $_POST['telo'];
a ja nevim, co jeste...
2. maily na wz.cz jsou tusim omezeny na pocet 10 nebo 50 nebo 100 za hodinu. A tez jsou snad i filtrovane, prilis bych na odeslani pres mail() nespolehal.
Hlavicka mailu by mela obsahovat i pouzite kodovani, vyhnes se problemy s hacky a carkami.
cz.php.net/mail
Peta: A jak pomůžou tvoje reakce dotyčnému? V prvé řadě, vzhledem k jeho znalostech, se nebude zabývat nějakými sessiony čí cookiesy, u kterých ani já nevím k čemu to má jako být. A když neznáš potřebné informace, tak je sem nedávej. Jen šíříš zavádějící informace. Funkce email je omezena a to 10 emailů za hodinu, přičemž jeden email může mít 10 adresa. Že by byl i nějak filtrovaný, o tom slyším poprvé.
Tomik: nejde ani tak o skript.. ten sem tam dal enom abych ukazal názorně , že mě nefunguje funce mail. i když jsem na http://fbcstraznice.wz.cz/date.php dal tvůj skript, dělá to stále to samé.. vrací true a žádný mail nepřijde.. chtěl jsem mail na potvrzení registrace, ale tady mě přišlo názornější ukázat že to nefunguje.
No tak je možné, že server nestíhá nebo je chyba někde mimo. Skript email předá poštovnímu serveru a ten odpoví kladně. Tudíž skript splnil svou část. Něco jiného už může být za tuto část. Buď se email zdržuje ve frontě - server prostě nestíhá - nebo se zasekne někde venku.
Mi to na té tvojí stránce s formulářem píše toto:
Array ( [adresa] => dfsfsf [odesilatel] => sdfdsf [predmet] => sdfdsf [telo] => sdfsfdsdf [odeslat] => odeslat ) Array ( ) Array ( [PHPSESSID] => 1bb64264cca474bb0e7d005eb77978fd ) Odeslano
To "sdfds" atd. jsem zadával do formuláře. Takže tam budeš mít asi chybu ve zdrojáku. O tom, že to nikam neodešlo nemám pochyby.
Tomík (tom.czweb.org) :)
Pro ty lidi, co neumi cist, Tomika = PTLCNCT
slaweet (fbcfotky.wz.cz)
* zakladem je stranka ... PTLCNCT
cz.php.net/mail
* druha vec, co jsem take rikal, ze wz.cz ma maily hodne hlidane a omezovane ... PTLCNCT
* take muze byt problem s cestinou, ale to by nenapsalo, ze je mail odeslan.
Takze ted je podstatny tento radek:
if ( mail($_POST['adresa'],$_POST['predmet'],$_POST['telo'],$hlavicka) ) {
echo "Odeslano";
} else {
echo "Chyba pri odesilani";
}
A podstatne, zjistit, co v tom presne je ... PTLCNCT
<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
echo 'hlavicka = '.$hlavicka;
?>
A kdyz posles i tento vypis a to, co zadavas do policek formulare a pridas odkaz na zdrojak tveho programu, pak lze tvuj problem zopakovat a muzeme se zabyvat jeho resenim
Tomík (tom.czweb.org)
Uz jasnejsi jakym zpusobem peta dohledava chyby a jejich reseni?
Peta: Echování proměnných je mi jasný. Sám to taky používám při hledání chyb. Jen mi není jasné, proč používat $_SESSION nebo $_COOKIE když je v tomto případě ani nepotřebuje. Pokud jsi to myslel všeobecně, pak fajn. Ono totíž tvoje reakce jdou někdy těžko rozluštit.
Teď budu asi hloupý. Co je sakra PTLCNCT?
<HTML>Tomíku, dovol mi ocitovat začátek petova příspěvku:
<cite>Tomík (tom.czweb.org) :)
Pro ty lidi, co neumi cist, Tomika = PTLCNCT</cite>
PS. Taky mi to při čtení chvíli trvalo, než jsem na to přišel.</HTML>
:) No jo pátek. Myšlenkama jsem už někde jinde.
Sumici more, teplo, krasne devcata...
A predevsim zadna chripka! :)
Tomík (tom.czweb.org)
Myslel jsem to obecne, chtel jsem naznacit, ktere pole se prepisuji pri nastaveni global=on , nebo, jak se to jmenuje, v zivote jsem to nepouzil. Zatim vsude to bylo vyple.