Mám takovejdle script:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title>Scripty</title>
</head>
<body>
Registrace:
<?php
function JeEmail($cislo)
{
return ereg("^.+@.+\..+$", $cislo);
}
function emailvdb ($email)
{
$vysledek=mysql_query("select * from uzivatele where email='".$email."'", $GLOBALS["link"]);
return (boolean) mysql_num_rows($vysledek);
}
function prezdivkavdb ($prezdivka)
{
$vysledek=mysql_query("select * from uzivatele where prezdivka='".$prezdivka."'", $GLOBALS["link"]);
return (boolean) mysql_num_rows($vysledek);
}
$link=mysql_connect("mysql.ic.cz", "xxx", "xxx");
mysql_select_db("xxx");
$Zobrazit=true;
if (!empty($_POST))
if (!JeEmail($_POST["email"])) echo "Tento email neexistuje, zadejte existující!";
elseif (emailvdb($_POST["email"])) echo "Tento email je již zaregistrován. Zkuste jiný.";
elseif (prezdivkavdb($_POST["prezdivka"]))
{
echo "Tato prezdivka je již zaregistrována";
echo "(<a href=\"index.php?clanek=zapomenuteheslo\">připomenout heslo</a>)";
}
elseif ((strlen ($_POST["prezdivka"])>50) | strlen ($_POST["prezdivka"])<3)echo "Přezdívka musí mít 3-50 znaků";
elseif ((strlen ($_POST["heslo"])>50) | strlen ($_POST["heslo"])<3) echo "Heslo musí mít 3-50 znaků";
elseif (($_POST["heslo"])!=($_POST["opakheslo"])) echo "Zadaná hesla nejsou stejná";
else
{
$Zobrazit=false;
echo "Gratulujeme! Nyní jste se uspěšně zaregistroval/a. Infomace pro dokončení registrace vám byli zaslány na email: ". $_POST["email"];
mysql_query ("insert into uzivatele (email, prezdivka, heslo) values ('".$_POST["email"]."', '".$_POST["prezdivka"]."', '".$_POST["heslo"]."');", $GLOBALS["link"]);
$lastid=mysql_insert_id();
// a sestavíme e-mail s instrukcemi, jak registraci dokončí
$path="http://".$_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["SCRIPT_NAME"]."registracedokoncena&id=".$lastid."&email=".$_POST["email"];
$telo = "Dekujeme Vam za registraci na nasem portale. Pro dokonceni ".
"registrace klepnete na nasledujici odkaz\n".
"<a href=\"$path\">$path</a>\n".
"Pokud jste se na nasem portale nechteli zaregistrovat, povazujte tento e-mail za bezpredmetny.\n";
$hlavicky="From: ".$_POST["email"]."\nReturn-Path:".$_POST["email"];
@mail ($_POST["email"], "Registrace na portalu", $telo, $hlavicky, "-f ".$_POST["email"]);
}
if ($Zobrazit):?>
<form method="post" action="registrace.php">
<table>
<tr>
<td>Přezdívka:</td>
<td><input name="prezdivka" value="<?echo $_POST["prezdivka"]?>"></td>
</tr>
<tr>
<td>E-mail:</td>
<td><input name="email" value="<?echo $_POST["email"]?>"></td>
</tr>
<tr>
<td>Heslo:</td>
<td><input name="heslo" type = "password"></td>
</tr>
<tr>
<td>Opakujte heslo:</td>
<td><input name="opakheslo" type = "password"></td>
</tr>
<tr>
<td colspan="2"><input type="Submit" name="odesli" value="Zaregistrovat"></td>
</tr>
</table>
</form>
<?php endif;?>
</body>
Ten script by měl zapsat data do databáze (to funguje) a spolu stim by měl poslat email ve kterým je odkaz na dokončení registace, to ale nefunguje:(. Nevíte čím to je? Popřípadě jak na to?
Tak prvni moznost - zkus si vyhodit potlaceni hlasek u funkce mail a mozna se dozvis o nejake chybe..
Nebo prekracujes povolene mnozstvi odeslanych e-mailu za hodinu (je jich 10) ..
Nebo jsi narazil na problem na serveru - i kdyz tohle je starsiho data - pro blizsi info staci pouzit hledani .. http://www.webzdarma.cz/forum/read.php?f=2&i=42001&t=41793
Žádný hlášky to nevyhazuje a potlačování chybovejch hlášek sem si v htaccess nevypínal.
Nn to určitě ne.
To taky neni ono.
<HTML>Pak tedy jistě víte, k čemu slouží zavináč před voláním funkce. Až odstraníte potlačování chybových hlášek, bude mít cenu pokračovat. Zatím jste nepopsal problém dostatečně.</HTML>
Takze jinak ..
K cemu mas u mail pouzite pridavne parametry? (-f)
Na jinem serveru to funguje?
Cetl jsi konec http://www.webzdarma.cz/forum/read.php?f=2&i=42001&t=41793 ?
____
"potlačování chybovejch hlášek sem si v htaccess nevypínal" ?
Chapu to tak, ze nevis proc mas @ pres funkci mail.
Jo aha. Tak teď to vypisuje: Warning: mail(): SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE. in /9p/wz.cz/j/juzras/registrace.php on line 57
Takze reseni uz mas ;)
A ted bych rad zjistil odpoved na mou otazku "K cemu mas u mail pouzite pridavne parametry? (-f)" ;) diky ..
___
nebos to jen zkopiroval z php manualu? (jeden priklad tam s tim myslim je .. )
Nn skopčil sem to z linuxsoftu. Tam k tomu sice diskuse je ale 4roky stará takže tam asi je k ničemu se ptát. Jinak jsem ten parametr smazal a nic se neděje pořád stejná chyba.
<HTML>Říkáte, že jste odstranil 5. parametr a že to stále nadává na 5. parametr? A já jsem už ráno tušil, že logika odjela na prázdniny. Ledaže byste:
a) ten soubor neupravil
b) to měl ve vaší cache
c) byl líný zkopírovat sem novou chybovou hlášku (pokud je jiná)</HTML>
"Říkáte, že jste odstranil 5. parametr"
Smazal jsem to -f.
A co ti rekla chyba php parseru? ze mas zrusit cely(!) paty parametr!
K cemu ho tam mas? Sdelis mi to uz? ;)
___
Proste ber funkci mail tak, ze ma pouze 4 parametry. Páty jako kdyby neexistoval. Akceptuj to prosím.
"ze mas zrusit cely(!) paty parametr!"
Tak co mam smazat když né to -f?
<HTML>Nechci být zlý a sarkastický, ale potřeboval byste nějakou lekci z PHP:
Volání funkce se skládá z jména funkce a kulatých závorek, mezi nimiž je výčet parametrů oddělený čárkami. Má-li tedy funkce 4 parametry, vypadá její volání zhruba takto:
funkce(a,b,c,d);
Zatímco funkce s 5 parametry je volána přibližně takto:
funkce(a,b,c,d,e);
Myslím, že tak do hodiny možná pochopíte pointu mého příspěvku a odhalíte jisté zákonitosti (vzory), jejichž aplikací se vám úspěšně podaří odmazat celý pátý parametr a tím zmenšit počet parametrů funkce na 4.</HTML>
Tedy .. radek s funkci mail bude vypadat takto:
mail($_POST["email"], "Registrace na portalu", $telo, $hlavicky);
<HTML>Zamykám.<style>form { display: none; }</style></HTML>