PDA

View Full Version : سوال: ايجاد پروفايل براي كاربران



iliamatin
یک شنبه 26 مهر 1388, 08:34 صبح
با سلام
من يه پروه نوشتم كه براي ايجاد پروفايل براي كاربران به مشكل خوردم.
ميخام بدونم چيكار كنم وقتي يه كاربر login ميكنه و وارد ميشه، اطلاعات مربوط به اون كاربر و سوالات ارسالي به اون كاربر، بهش نمايش داده بشه؟؟

hueman
یک شنبه 26 مهر 1388, 08:54 صبح
بعد از لاگین کردن username یا id کاربر رو تو session ذخیره کن و هرجا که لازم داشتی session رو بخون و اطلاعات متناظر با کاربر رو از بانک بیرون بکش
موفق باشی

iliamatin
یک شنبه 26 مهر 1388, 09:22 صبح
بعد از لاگین کردن username یا id کاربر رو تو session ذخیره کن و هرجا که لازم داشتی session رو بخون و اطلاعات متناظر با کاربر رو از بانک بیرون بکش
موفق باشی

ببخشا متوجه نميشم.ميشه بيستر توضيح بدي؟كدش چجوريه؟

hueman
یک شنبه 26 مهر 1388, 09:36 صبح
فرایند لاگین شما چطوره؟
مگه غیر از اینه که سلولی از آرایه گلوبال $_SESSION رو مقدار دهی می کنین و هر چا که نیاز به اعتبار سنجی هست چک می کنین که آیا اون سلول مقدار داره یا نه، همون مقدار اولیه ای که در سلول ذخیره می کنین رو برابر id یا username کاربر قرار بدین و هرجا نیاز شد بخونینش
مثلا اینطوری:



$UN = $_POST['un'];
$PW = $_POST['pw'];
$Sql = "select * from users where UN = '$UN' and PW = '$PW'";
$con=mysql_connect("localhost","root");
mysql_select_db("felandb",$con);
if(mysql_num_rows(mysql_query($Sql))==1)
{
session_start();
$_SESSION['user'] = $UN;
}else
echo 'Username or Password is wrong!';

هرجا هم که نیاز شد مقدار session رو بخونین و ازش استفاده کنین، مثلا اینطوری:



$UN = $_SESSION['user'];
$Sql = "select * from users where UN = '$UN'";
...........

iliamatin
یک شنبه 26 مهر 1388, 09:54 صبح
اوكي
مرسي hueman (http://barnamenevis.org/forum/member.php?u=117941) جان
يعني بعد از تعريف اون كد اولي كه نوشتي توي لاگين، توي هر صفحه اي كه كد دوم را بنويسم مثلا اينكه select كن فلان چيز را با توجه به اون كاربر انجام ميشه چون اولش دستور session اومده؟؟درسته؟؟

hueman
یک شنبه 26 مهر 1388, 11:17 صبح
session یه آرایه سراسریه، یعنی توی تمامی کدی که نوشتین قابل دسترسیه، شما پس از لاگین کردن یوزرنیم کاربر رو تو این آرایه ذخیره می کنین و هرجا که خاستین میتونین ازش استفاده کنین، به این صورت که مثلا تو صفحه پروفایل کاربر میخاین مشخصات کاربر رو از بانک بخونین و نمایش بدین، برای این کار ابتدا یوزرنیم رو که توی session ذخیره کردین می خونین و بعد تقاضاتون رو از بانک اطلاعاتی انجام میدین

mobin-co
دوشنبه 27 مهر 1388, 10:21 صبح
یه مشکل هم من اینجا مطرح کنم من سشن ها رو پر می کنم در یه صفحه با کد وی بی حالا این سشن تو یه صفحه دیگه وقتی می خواد خونده بشه نال میده من چیکار کنم به نظر شما

iliamatin
سه شنبه 28 مهر 1388, 09:49 صبح
hueman (http://barnamenevis.org/forum/member.php?u=117941) عزيز ، با تشكر فراوان ، من دستورات شما را چك كردم اما نشد.
ببينيد يوزر و پسورد كاربران در جدول user هست اما من ميخام وقتي كاربر وارد شد از جدول soal سوالات و مطالب ارسالي به اون كاربر نمايش داده بشه (قابل توجه اينكه در جدول soal فقط نام فارسي طرف وجود داره و يوزرش به همراه اسم فارسيش فقط تو جدول user است.

hueman
سه شنبه 28 مهر 1388, 19:40 عصر
منطق طراحی بانکتون مشکل داره دوست من، اسم فارسی کاربر که یکتا نیست، اگه دوتا کاربر با اسم یکسان داشته باشی از کجا میخای بدونی که کدوم سوال مال کدوم کاربره؟
شما ابتدا باید جدول سوالاتت رو تصحیح کنی، یا id (که معمول تره) یا username کاربر رو تو جدول سوالات به جای اسم فارسیش ذخیره کن.
حالا پست شماره 4 رو یه بار دیگه بخون و بعد باقی این متن رو
اگه username رو تو سژن ذخیره کرده باشی باقی کار خیلی راحته:
فرض می کنیم جدول users شامل این فیلدهاس: id , username,password, name,...
و جدول questions شامل اینا: id ,userid, question,...
حالا برای به دست آوردن سوالات کاربر اینطوری عمل کن:



$UN = $_SESSION['user'];
$Sql = "select * from users where username = '$UN'";
$con=mysql_connect("localhost","root");
mysql_select_db("felandb",$con);
$R = mysql_fetch_array(mysql_query($Sql));
$UserID = $R['id'];
$Sql = "select * from questions where userid = '$UserID'";
$UserQuestions = mysql_query($Sql);


موفق باشی

mobin-co
پنج شنبه 30 مهر 1388, 17:16 عصر
دوست عزیز من از سشن فقط برای این استفاده می کنم تا فرضا اگه یوزر تکست رو وارد دیتا بیس کرد اسمش خود به خود به عنوان نویسنده وارد دیتا بیس شه . شما جز سشن راه دیگه ای سراغ داری؟

mahmood3d
پنج شنبه 30 مهر 1388, 23:49 عصر
سلام
منم با hueman کاملاً موافقم.
شما با اینکه الان کار خودتون رو راحت کردین و به راحتی اسم نویسنده رو که به صورت فارسی هست به دیتا بیس اضافی کردین ولی باید زمانی رو هم در نظر بگیرید که شخص نویسنده خواست اطلاعات پروفایلشو تغییر بده و معمولا اسم شخص هم جزء این موارده. یعنی اگه شخص نویسنده اسمش رو تغییر بده کل اطلاعات (سؤالاتی) که مطرح شده به اسم شخص دیگه ای میشه.
بهترین کار ذخیر ID یا Username شخص نویسنده هست و زمانی هم که نیاز داشتین اسم شخص رو تو خروجی نشون بدین با یک کوری ساده که از ترکیب دو تا جدول ساخته میشه می تونین چیزی رو که می خواین به دست بیارین. با این کار برنامتون منطقی تر هم میشه.:لبخندساده:

kavoshgar63
پنج شنبه 30 مهر 1388, 23:49 عصر
بهترین راه همون سشن هست چون توی سشن آی دی کاربری رو میشه گذاشت و بر اساس همون آی دی کاربر توی جدول سئوالات ، سئوالهای مربوط به کاربر رو میشه بازیابی کرد و تک تک سئوالات رو چک کرد.
اگر کمی بیشتر فکر کنید راه حل به این راحتی رو برای خودتون سخت نمی پندارید.

mobin-co
شنبه 02 آبان 1388, 09:19 صبح
مسئله راحت یا سخت بودن نیست دوست عزیز.ما با این کار امنیت سیستم رو میاریم پایین واسه همین میخواستم بدونم شما راه دیگه ای سراغ دارین یا نه. چون بدون سشن نمیشه چک کرد یوزر آن لاین هست یا نه چون اگه بخواهیم online یا offline بودن رو با دیتا بیس چک کنیم جریان یه کم پیچیده میشه

hueman
شنبه 02 آبان 1388, 10:17 صبح
مسئله راحت یا سخت بودن نیست دوست عزیز.ما با این کار امنیت سیستم رو میاریم پایین واسه همین میخواستم بدونم شما راه دیگه ای سراغ دارین یا نه. چون بدون سشن نمیشه چک کرد یوزر آن لاین هست یا نه چون اگه بخواهیم online یا offline بودن رو با دیتا بیس چک کنیم جریان یه کم پیچیده میشه
ذخیره اطلاعات یکتای کاربر در سژن معمول ترین راه اعتبارسنجی کاربرهاس، یه روش دیگه برا این کار استفاده از کوکی هاس که محدودیت های خاص خودش رو داره

mahmood3d
شنبه 02 آبان 1388, 12:46 عصر
مسئله راحت یا سخت بودن نیست دوست عزیز.ما با این کار امنیت سیستم رو میاریم پایین
دوست عزیز اگه امنیت براتون مهم باشه باید موارد امنیتی رو هم روی پروژه اعمال کنید که راه های مختلفی توی این سایت ارائه شده و می تونید از انواع این روش ها استفاده کنید

mobin-co
شنبه 02 آبان 1388, 16:56 عصر
ممنون از توجه شما، من هم سعی بر همین دارم اما بالاخره همیشه راه نفوذی هست وگرنه هکر ها از نون خوردن می افتادن.

iliamatin
یک شنبه 03 آبان 1388, 10:44 صبح
منطق طراحی بانکتون مشکل داره دوست من، اسم فارسی کاربر که یکتا نیست، اگه دوتا کاربر با اسم یکسان داشته باشی از کجا میخای بدونی که کدوم سوال مال کدوم کاربره؟
شما ابتدا باید جدول سوالاتت رو تصحیح کنی، یا id (که معمول تره) یا username کاربر رو تو جدول سوالات به جای اسم فارسیش ذخیره کن.
حالا پست شماره 4 رو یه بار دیگه بخون و بعد باقی این متن رو
اگه username رو تو سژن ذخیره کرده باشی باقی کار خیلی راحته:
فرض می کنیم جدول users شامل این فیلدهاس: id , username,password, name,...
و جدول questions شامل اینا: id ,userid, question,...
حالا برای به دست آوردن سوالات کاربر اینطوری عمل کن:



$UN = $_SESSION['user'];
$Sql = "select * from users where username = '$UN'";
$con=mysql_connect("localhost","root");
mysql_select_db("felandb",$con);
$R = mysql_fetch_array(mysql_query($Sql));
$UserID = $R['id'];
$Sql = "select * from questions where userid = '$UserID'";
$UserQuestions = mysql_query($Sql);

موفق باشی

hueman جان واقعا ممنون
من در طراحي بانكم تغيير ايجاد كردم و همانطور كه شما گفته بودي به جاي اسم طرف، usernameش توي جدول question ذخيره ميشه.
حالا يه سوال دارم با توجه به همين مثال كه خودت گفتي فرض كن من ميخام جدول سوالات را نمايش بدم و ميخام به جاي username، نام واقعي طرف را از جدول user بخونه ودر جدول سوالات نمايش بده.
دستورش چيه؟؟
خودم كلي ور رفتم اما نشد لطفا كمكم كنيد

iliamatin
یک شنبه 03 آبان 1388, 11:31 صبح
شما پس کلا Mysql و دستورات دیتابیس رو بلد نیستی!
موقعی که داری کاربر رو ثبت می کنی همه اینا رو هم باید ازش بگیری , بعد با SELECT فراخوانی کنی !

نه عزيزم بلدم ديگه انقدرم ناشي نيستيم عزيز اما من هرچي امتحان كردم نشد گفتم از شما مهندسان بزرگوار بپرسم