PDA

View Full Version : سوال: اصلاح کد لاگین



farnaz.saeedi
سه شنبه 16 اسفند 1390, 13:32 عصر
سلام
من از این کد برای لاگین استفاده میکنم:


$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))
{

مشکلش اینه که اگه دو تا کاربر با یه username داشته باشیم هیچکدوم نمیتونن وارد بشن
اگه میشه این کد و یجوری اصلاح کنید که هم این مشکل و نداشته باشه هم از نظر امنیتی مشکل نداشته باشه
تشکر

reza10wert
سه شنبه 16 اسفند 1390, 13:37 عصر
خوب دوست عزیز
موقع ثبت نام چک کن که نامشون یکی نباشه

farnaz.saeedi
سه شنبه 16 اسفند 1390, 13:45 عصر
خوب دوست عزیز
موقع ثبت نام چک کن که نامشون یکی نباشه
چون کاربری میتونه اطلاعاتشو ویرایش کنه نمیخوام اینکارو بکنم
حالا اگه میشه شما یه کد دیگه پیشنهاد بدید

lady64
سه شنبه 16 اسفند 1390, 14:03 عصر
چون کاربری میتونه اطلاعاتشو ویرایش کنه نمیخوام اینکارو بکنم
حالا اگه میشه شما یه کد دیگه پیشنهاد بدید

در لاگین که نباید دو نفر یک user یکسان داشته باشند.میبایست user ، بصورت uniqe تعریف شود
اینکه میگید کاربری میتونه اطلاعاتشو ویرایش کنه ، منظورتون چیه ؟

shahriyar3
سه شنبه 16 اسفند 1390, 14:23 عصر
خوب توي كوئري آيدي يوزر و چك كنيد. آيدي ديگه حتما بايد يونيك باشه

farnaz.saeedi
سه شنبه 16 اسفند 1390, 14:24 عصر
در لاگین که نباید دو نفر یک user یکسان داشته باشند.میبایست user ، بصورت uniqe تعریف شود
اینکه میگید کاربری میتونه اطلاعاتشو ویرایش کنه ، منظورتون چیه ؟
ببینید من یه نوع کاربر دارم که اطلاعات کاربریشو خودم براش میفرستم
حالا شاید اون بخواد اطلاعاتشو عوض کنه
اگه کدی غیر از این دارید بدید
ممنون

MMSHFE
سه شنبه 16 اسفند 1390, 14:33 عصر
$sql = "SELECT * FROM `user` WHERE (`username`='{$username}' AND `password`='{$password}') LIMIT 1";
$result = mysql_query($sql);
if($result && mysql_num_rows($result) == 1) {
//user login is correct
}

البته کد فوق زمانی کار میکنه که رمز عبور کاربران با هم فرق کنه. اگه دوتا کاربر دارین که هم نام کاربریشون و هم رمز عبورشون یکسانه، دیگه اونوقت باید طراحی خودتون رو تغییر بدین. مثلاً علاوه بر نام کاربری و رمز عبور، ایمیل فرد رو هم که موقع ثبت نام داده، دریافت کنید.

shahriyar3
سه شنبه 16 اسفند 1390, 14:36 عصر
$sql = "SELECT * FROM `user` WHERE (`username`='{$username}' AND `password`='{$password}') LIMIT 1";
$result = mysql_query($sql);
if($result && mysql_num_rows($result) == 1) {
//user login is correct
}

البته کد فوق زمانی کار میکنه که رمز عبور کاربران با هم فرق کنه. اگه دوتا کاربر دارین که هم نام کاربریشون و هم رمز عبورشون یکسانه، دیگه اونوقت باید طراحی خودتون رو تغییر بدین. مثلاً علاوه بر نام کاربری و رمز عبور، ایمیل فرد رو هم که موقع ثبت نام داده، دریافت کنید.
خوب چرا از آيدي استفاده نمي كنيد؟
با آيدي كه براحتي در مياد. توي تيبل براي هر كاربر يك فيلد id از نوع auto_incerement تعريف كنيد و موفع كوئري گرفتن اونو چك كنيد