$_GET['key'];

teroristd

Registered
Здравейте правя си система за регистрация но се натъкнах на един проблем. Системата е по урок и аз само и добавям ключ който ще се изпраща на пощата.

$key=substr (md5(uniqid(rand(),1)), 3, 16);
$query = mysql_query("INSERT INTO `users`(`username` , `password` , `email`, `key` , `active` ) VALUES('".$username."' , '".md5($password)."', '".$email."' , '".$key."' , '0' )");
// inserts the information into the database.
$text="Здравейте $user вешия активиращ код е :$key ";
echo "$text";

//Показване на формата в която да се въведе активиращия код
echo "Успешна регистрация за да активирате акаунта си моля проверете пощата си! ";
echo "<form action=getkey.php method=get>";
echo "Въвъдете вашия активиращ код : <input type=text name=key /><br /><input type=submit /></form>";

Проблемът ми е че getkey.php не ъпдейтва информацията в базата. Ето и самият скрипт.

<?php
$key=$_GET['key'];
//присвояваме данните от гет в променвлива

include('onfig/config_log_in.php');
//инлудваме фаила за връзка с база данни

$key= htmlspecialchars(mysql_real_escape_string($key));
//почистваме от неприянни данни ;)

//проверка дали съществува такъв активиращ код
$sql="SELECT id FROM users WHERE `key`='$key' AND active='0'";
$q=mysql_query($sql);
if(mysql_num_rows($q)==1){
//ако има такав ред в база данни с такав код и той не е активиран т.е. active=0 то активира акаунта
$sql="UPDATE users SET active='1' WHERE `key`='$key' ";
$q=mysql_query($sql);
echo "Вашия акаунт е активиран!";
}
else{echo'Грешем код или акаунта вече е активиран.';}
?>
 
Сложи след заявките едно
Код:
or die (mysql_error());
за да покаже грешките, ако има такива.

Другото, което ми направи впечатление
Код:
include('onfig/config_log_in.php');
Дали не си изпуснал едно "C" в името на директорията, или така си се казва?
 
Мерси но сега ми изникна друг проблем иначе бях написал грешно базата.
Сега не мога да се логна дава ми грешен потребител или парола ето логин.пхп



<?php


if (!$logged[username])
{
if (!$_POST[login])
{
echo "<div class='post'>

<div class='entry' >

<form method='POST'> <br />
Потребител: <input type='text' name='username' style='width:250px; margin-left:14px; margin-bottom:10px;' /><br />
Парола: <input type='password' name='password' style='width:250px; margin-left:38px; margin-bottom:20px;' /> <br />

<input style = ' background: url(images/but_search.jpg) no-repeat; border:none; width:80px; font: 12px Helvetica, sans-serif; color:#FFFFFF; margin-left:56px; ' type='submit' name='login' value='Влез' >
<a href='register.php' style='float:left; margin-top:-7px; color:black;'>Регистрирай се</a>
<b style='float:left; margin-top:-9px; margin-left:5px;'>|</b>
<a href='register.php' style='float:left; margin-top:-7px; margin-left:5px; color:black;'>Забравена парола</a>
</form>

</div>

</div>";
}



if ($_POST[login]) {
// the form has been submitted. We continue...
$username=$_POST['username'];
$password = md5($_POST[password]);
// the above lines set variables with the submitted information.
$info = mysql_query("SELECT * FROM users WHERE username = '$username'") or die(mysql_error());
$data = mysql_fetch_array($info);
if($data[password] != $password) {
// the password was not the user's password!
echo "<div class='post'>
<div class='entry' >
<p style='margin-right:400px; margin-top:20px; color:red;'>Грешен потребител или парола!</p>
</div>
</div>";
}else{
// the password was right!
$query = mysql_query("SELECT * FROM users WHERE username = '$username'") or die(mysql_error());
$user = mysql_fetch_array($query);
// gets the user's information
setcookie("id", $user[id],time()+(60*60*24*5), "/", "");
setcookie("pass", $user[password],time()+(60*60*24*5), "/", "");
// the above lines set 2 cookies. 1 with the user's id and another with his/her password.
echo "<div class='post'>
<div class='entry' >
<p style='margin-right:400px; margin-top:20px; color:red;'>Вие успешно влязохте в акаунта си.</p>
</div>
</div>";
// modify the above line...add in your site url instead of yoursite.com
}
}
}
else
{
// we now display the user controls.
echo ("<center>Добре дошли <b>$logged[username]</b><br /></center>
<a href=\"editprofile.php\">Промени профила си</a><br />
<a href=\"members.php\">Виж всички регистрирани потребители</a><br />
<a href=\"logout.php\">Излез от акаунта си</a>");
}
?>
 
Най-лесно ще провериш като точно над
Код:
if($data[password] != $password) {
Сложиш
Код:
echo $password . '<br />' . md5($password) . '<br />' . $data['password'];

Като тръгнеш да се логваш ще провериш къде се дъни кода.
 
еми ето това ми изкарва

e10adc3949ba59abbe56e057f20f883e
14e1b600b1fd579f47433b88e8d85291
14e1b600b1fd579f47433b88e8d85291
 
Аз съм допуснал малка грешка в предния код :) Трябвало е да използваш $_POST['password'] при извеждането, не променливата, защото тя вече е криптирана. Ако си направил точно както съм написал и втория и третия резултат е еднакъв, явно в база данните се запазва паролата мината 2 пъти през md5, не веднъж.

Опитай да промениш този ред
Код:
$password = md5($_POST[password]);

Да изглeжда така
Код:
$password = md5(md5($_POST[password]));
 
Мерси братле златен си :D така стана. Дано да не ми се налага да отварям нова тема. Имаш точката.
Случайно да знаеш колко време е това демек колко държат кукитата и как мога да го променям.

setcookie("id", $user[id],time()+(60*60*24*5), "/", "");
setcookie("pass", $user[password],time()+(60*60*24*5), "/", "");
 
teroristd каза:
Мерси братле златен си :D така стана. Дано да не ми се налага да отварям нова тема. Имаш точката.
Случайно да знаеш колко време е това демек колко държат кукитата и как мога да го променям.

setcookie("id", $user[id],time()+(60*60*24*5), "/", "");
setcookie("pass", $user[password],time()+(60*60*24*5), "/", "");

* = умножeниe
time() + 60*60*24*5 = 5 дни, дeмeк 60 сeкунди * 60 минути * 24 часа * 5 дни.

time() + 60*60*24*7 = 1 седмица
time() + 60*60*24 = 24 часа
time() + 60*30 = 30 минути

Дано си ме разбрал :)
 

Back
Горе