« 1 2 »
Autor Zpráva
Xavi
Profil *
Ahoj,

chtěl bych se zeptat, jestli někoho napadá, proč tenhle skript pro reg. uživatele nefunguje. je to příklad z Linuxsoftu.

po nahrazení této části kódu
$hlavicky="From: ".$_POST["email"]."\nReturn-Path:".$_POST["email"];
      @mail ($_POST["email"], "Registrace na portalu", $telo, $hlavicky, "-f ".$_POST["email"]);


tímto
 @mail ($_POST["email"], "Registrace na portalu", $telo);


se mail odešle.

<?
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);
} 

$BudemeZobrazovat=true;
if (!empty($_POST)) // už se odeslalo
{
/*
budeme kontrolovat následující věci:
1) e-mailovou adresu
2) zda tam již e-mail není
3) zda tam již přezdívka není
4) zda je přezdívka mezi 3 a 50 znaky délky
5) zda je heslo 3 až 50 znaků dlouhé
*/
if (!JeEmail($_POST["email"])) echo "Není zadán platný e-mail";
elseif (emailvdb($_POST["email"])) echo "Uvedený e-mail je již
registrován";
elseif (prezdivkavdb ($_POST["prezdivka"])) 
{
echo "Uvedená přezdívka je již registrová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ů";
else
{
// kontolou jsme prošli
$BudemeZobrazovat=false;
// poděkujeme uživateli
echo "Děkujeme za registraci. Na vaši adresu ".$_POST["email"]." byly
zaslány informace pro její dokončení.";
// uložíme to do databáze
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"].$_SE
RVER["SCRIPT_NAME"]."?clanek=registracedokoncena&amp;id=".$citlive;
$telo = "Dekujeme Vam za registraci na nasem portale [nazev hudebniho
portalu]. Pro dokonceni ".
"registrace navstivte nasledujici odkaz\n\n$path\n\n".
"Pokud jste se na nasem portale nechteli zaregistrovat, povazujte tento
e-mail za bezpredmetny.\n".
"Vas [nazev hudebniho portalu] team.";
$hlavicky="From:
".$_POST["email"]."\nReturn-Path:".$_POST["email"];
@mail ($_POST["email"], "Registrace na portalu", $telo, $hlavicky,
"-f ".$_POST["email"]);
}
}
if ($BudemeZobrazovat):?>
<form method="post" action="index.php?clanek=registrace">
<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" value="<?echo
$_POST["heslo"]?>"></td>
</tr>
<tr>
<td colspan="2"><input type="Submit" name="odesli"
value="Zaregistrovat"></td>
</tr>
</table>
</form>
<?endif;?>


2.část otázky, když se pošle ten mail po úpravě těch dvou řádek, stejně se mi nedaří registraci přes mail potvrdit(v databázi se 0 změní na 1), neboť toto nefunguje. :
<?
  $sifra= new Crypt_Xtea;  
  $citlive=$sifra->decrypt(base64_decode(urldecode($_GET["id"])),"T3dX?2.5du");
  $udaje=explode("|",$citlive);
  mysql_query("update uzivatele set registracedokoncena=1 where id=".$udaje[0]." and email='".$udaje[1]."';",$GLOBALS["link"]);
  if (mysql_affected_rows()==1) echo "Vaše registrace byla dokončena.";
  else echo "Příkaz nebyl proveden, zřejmě jsou nesprávné parametry nebo již registrace byla dokončena";
?>



Předem děkuju za všechny podněty a nápady.
Díky, Xavi
Beavis
Profil
Xavi:
Začal bych povolením výpisu chyb. Hned budete moudřejší..
Xavi
Profil *
Chyby se mi vypisují, řekl bych, např. kdyby mi chyběl config.php tak se to ozve.

Pokud po změně kódu mail přijde, a zkusím potvrdit tu registraci, vypíše se toto: Příkaz nebyl proveden, zřejmě jsou nesprávné parametry nebo již registrace byla dokončena...
Majkl578
Profil
Odstranil bych zavináč před funkcí mail, třeba se dozvíme něco zajímavého.
V tom druhém kódu bych zkontroloval, co vrací funkce mysql_query, pokud false, vypiš si mysql_error.
Xavi
Profil *
tak po odstranění zavináče to vypsalo
Warning: mail() [function.mail]: SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE in /data/www/www_adresa_com/16/registrace.php on line 61
Xavi
Profil *
A nevím, jak použít string mysql_error. dá se vypat přes
echo
?
Majkl578
Profil
[#5] Xavi:
No vida, tak nepoužívej pátý argument.

[#6] Xavi:
Dá.
Xavi
Profil *
Pátý argument? Tím je v tomhle případě co?
slim12
Profil
Xavi:
na řadku 9-10 v tom kodu co jsi napsal mas spatne zapsano:

$vysledek=mysql_query("select * from uzivatele where
prezdivka='".$prezdivka."'", $GLOBALS["link"]);


a mnělo by to bejt:

$vysledek=mysql_query("select * from uzivatele where
prezdivka='".$prezdivka."', "'.$GLOBALS["link"].'"");


a na jiných řadkach maš stejnou chybu
Xavi
Profil *
Jsi si jistý, že je to chyba?
panther
Profil
Xavi:
Pátý argument? Tím je v tomhle případě co?
to je to, co je ve funkci mail za 4. čárkou.
slim12
Profil
jistý nejsem ale vim ze se proměnne do SQL se pišou tak ale skus to.pak se podivej zase na řadek 61 co ti vypisuje chyba myslim že tam maš taky chybu
panther
Profil
slim12:
jistý nejsem ale vim ze se proměnne do SQL se pišou tak ale skus to
ne, ten zápis je dobře. Není to hodnota vkládaná do tabulky, ta patří do apostrofů. Tohle je identifikátor připojení, v tomto případě (při jednom připojení k DB) zbytečný.

pak se podivej zase na řadek 61 co ti vypisuje chyba myslim že tam maš taky chybu
chybu dělá rozdělený název proměnné, zalomení řárků.
slim12
Profil
php ti muže hazet taky chyby kvuli uvozovkam:

$path="http://".$_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SE
RVER["SCRIPT_NAME"]."?clanek=registracedokoncena&amp;id=".$citlive


skus to taky změnit na:

slim12
Profil
aha tak sorry
Xavi
Profil *
To zalamuje tahle diskuze...
panther
Profil
slim12:
php ti muže hazet taky chyby kvuli uvozovkam:
může, tebou uvedené zápisy jsou stejné.

Xavi:
To zalamuje tahle diskuze...
já vím, slim12 si zkopíroval kód k sobě a upozorňoval na chybu na řádku 61, která tam vlastně není.

Trochu jsem se teď ztratil, s čímže to vlastně máš ještě problém. Umazal jsi pátý parametr ve funkci mail a nějaké další problémy máš?
Xavi
Profil *
Odstraněním toho pátehé argumentu to začalo běhat, tedy, první čás tscriptu. takže teď ještě potřebuju přijít na to, proč nefunguje schvalování... to jest:
<?
  $sifra= new Crypt_Xtea;  
  $citlive=$sifra->decrypt(base64_decode(urldecode($_GET["id"])),"T3dX?2.5du");
  $udaje=explode("|",$citlive);
  mysql_query("update uzivatele set registracedokoncena=1 where id=".$udaje[0]." and email='".$udaje[1]."';",$GLOBALS["link"]);
  if (mysql_affected_rows()==1) echo "Vaše registrace byla dokončena.";
  else echo "Příkaz nebyl proveden, zřejmě jsou nesprávné parametry nebo již registrace byla dokončena";
?>
slim12
Profil
panther:

moje uvedene zapisy nejsou stene podivejse do pole
$_SERVER['SERVER_NAME']
jsou tam jednoduche uvozovky. panther namisto toho aby ses se mnou hadal tak bys mohl skusit hledat chybu v kodu Xavi
panther
Profil
slim12:
namisto toho aby ses se mnou hadal
já se s tebou nehádám, jen opravuji tvé nepřesné výroky.

moje uvedene zapisy nejsou stene podivejse do pole
jsou různé, ale funkčně stejné.

tak bys mohl skusit hledat chybu v kodu Xavi
dokud nenapíše chybovou hlášku, odmítám se tím kódem probírat. Jediná chybová hláška se týkala 5. argumentu funkce mail, ten je opraven.
panther
Profil
Xavi:
na řádku 5 máš navíc na konci středník. Už ti bylo řečeno, že si máš vypsat mysql_error(). Ignoruješ dobře míněné rady, máme ti to tu omýlat pořád dokola?
Xavi
Profil *
Při přidání
echo string mysql_error
hlásí:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /data/www/www_adresa_com/16/registracedokoncena.php on line 9
Xavi
Profil *
Sorry, byl jsem si uvařit kafe.
slim12
Profil
no tak sorry panther moje chyba.ješte jednou sorry
panther
Profil
Xavi:
echo string mysql_error
mysql_query ("update uzivatele set registracedokoncena=1 where id=".$udaje[0]." and email='".$udaje[1]."'") or die (mysql_error());
echo ("update uzivatele set registracedokoncena=1 where id=".$udaje[0]." and email='".$udaje[1]."'"); //případně, pokud bude chyba, vypiš si dotaz, jestli jsou dobře naplněné proměnné udaje0 a udaje1
Xavi
Profil *
btw: je to správně napsané? echo string mysql_error;
Xavi
Profil *
OPRAVENO, tedy:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and email=''' at line 1
Xavi
Profil *
Jak to muze mit chybu near and email at line 1 kdyz at lin 1 nic takovýho nemám?
panther
Profil
Xavi:
Jak to muze mit chybu near and email at line 1
„near“ = blízko, vedle. Máš chybu v dotazu vedle uvedeného řetězce, zpravidla vlevo od něj. Neměla by tam náhodou být závorka?

kdyz at lin 1 nic takovýho nemám?
1. řádek SQL dotazu. Vzhledem k tomu, že je celý na jeden řádek, na jiném než prvním řádku chyba být nemůže.
Xavi
Profil *
Vím co znamená near :-)

jestli tam má být závorka, nechápu proč ani jak...
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0