PDA

View Full Version : سوال: مشکل در login



farnaz.saeedi
دوشنبه 07 آذر 1390, 23:40 عصر
با سلام
دوستان من یه فرم لاگین دارم که به خوبی کار میکرد اما خواستم مثلا امنیتشو ببرم بالا از تابع MD5 استفاده
کردم الان دیگه کار نمیکنه
این قسمتی از کد لاگین:


$username=$_POST['username'];
$password=md5(strtolower($_POST['password']));
$username = strtolower($username);
$username = preg_replace("([^a-z0-9_]*)", '', $username);
$sql = "SELECT `password` FROM `user` WHERE `username` = '$username' LIMIT 0,1";
$result = mysql_query($sql);
if(mysql_num_rows($result) == 1)
{
if($password == mysql_result($result,0))
{
.
.
.
.

ابنم قسمتی از کد ثبت نام:


$reg_name=$_POST['reg_name'];
$reg_pass=md5(strtolower($_POST['reg_password']));
.
.
.
.
$sql = "insert into user(userID,username,password,email,date,code,acti ve)values('$userID','$reg_name','$reg_pass','$reg_ email','$jdate','$code','0')";
$res=mysql_query($sql);
.
.
.

الان پسورد بصورت هش تو بانک ذخیره میشه اما وقتی میخام وارد بشم میگه همچین کاربری وجود ندارد
ممنون میشم کمک کنید

farnaz.saeedi
سه شنبه 08 آذر 1390, 19:51 عصر
دوستان کسی نمیتونه کمک کنه؟

Arthas1990
سه شنبه 08 آذر 1390, 23:11 عصر
سلام
query رو یک بار die کن ببین نام کاربری درسته و بعد دقیقا همون رو که در بروزری چاپ شده کپی کن و با phpmyadmin مثلا اجرا کن . ببین جواب میده ؟
آی دیم و شمارم هست اگه جواب نداد pm بزن یا بزنگ تا درستش کنیم . اما اگه درست شد ، جواب رو بذار اینجا تا باقی دوستان هم استفاده کنند.

امیدوارم کمکی کرده باشم

farnaz.saeedi
چهارشنبه 09 آذر 1390, 11:15 صبح
سلام
query رو یک بار die کن ببین نام کاربری درسته و بعد دقیقا همون رو که در بروزری چاپ شده کپی کن و با phpmyadmin مثلا اجرا کن . ببین جواب میده ؟
آی دیم و شمارم هست اگه جواب نداد pm بزن یا بزنگ تا درستش کنیم . اما اگه درست شد ، جواب رو بذار اینجا تا باقی دوستان هم استفاده کنند.

امیدوارم کمکی کرده باشم

نام کاربری و بقیه موارد هیچ مشکلی نداره من اگه اون md5 و حذف کنم بخوبی کار میکنه.مشکل نحوه استفاده از تابع هش است
دوستانی که با این تابع سرو کار دارن لطفا کمک کنن

pejman_view
چهارشنبه 09 آذر 1390, 11:53 صبح
کدتان را یکم تغییر دادم لطفاً به تک تک خط ها دقت کنید:


$username=$_POST['username'];
$password=md5(mysql_real_escape_string(trim($_POST['password'])));
$username = strtolower($username);
$username = preg_replace("([^a-z0-9_]*)", '', $username);
$sql = "SELECT * FROM user WHERE username = '$username' AND password = md5('$password')";
$result = mysql_query($sql);
if(mysql_num_rows($result) == 1)
{
echo 'this user exists..';
.
.
.
.

farnaz.saeedi
چهارشنبه 09 آذر 1390, 12:12 عصر
کدتان را یکم تغییر دادم لطفاً به تک تک خط ها دقت کنید:


$username=$_POST['username'];
$password=md5(mysql_real_escape_string(trim($_POST['password'])));
$username = strtolower($username);
$username = preg_replace("([^a-z0-9_]*)", '', $username);
$sql = "SELECT * FROM user WHERE username = '$username' AND password = md5('$password')";
$result = mysql_query($sql);
if(mysql_num_rows($result) == 1)
{
echo 'this user exists..';
.
.
.
.

کدهاتون و جایگزین کردم اما متاسفانه هنوز مشکلم حل نشده:گریه:

pejman_view
چهارشنبه 09 آذر 1390, 12:23 عصر
سلام

اولین کاری که می کنید یک دیتابیس بصورت دستی بسازید:

insert into user(username,password,email,date,code,active) values('pejman',md5('test'),'pejman.ghasemi@gmail. com',NOW(),'11111','0')

سپس از کد اصلاح شده استفاده کنید.

نگاه کنید برای بالا بردن امنیت تنها md5 کردن لازم نیست، شما باید به هر نحوی جلوی ایجاد خطا در دیتابیس را بگیرید و اطلاعات وارد شده در دیتابیس را فیلتر کنید این بحث کمی پیچیدس اما انشاء الله وقت کنم در مورد این بحث مقالاتی خواهم گذاشت.

farnaz.saeedi
چهارشنبه 09 آذر 1390, 14:06 عصر
دوستان من مشکلم حل شد.
در واقع قضیه این بود که من فیلد رمز عبور رو تو بانک طولش و 30 گرفته بودم.که باید 32 باشه
برای همین دو کد هش شده با هم برابر نبودند:اشتباه: