PDA

View Full Version : سوال: چطور یک پروفایل برای کاربر بسازم؟



ABZiko
سه شنبه 21 بهمن 1393, 19:08 عصر
سلام دوستان، من می خوام برای یک پروژم یک پیشخوان (DashBoard) برای کاربران عضو سایتم درست کنم، می خواستم بدونم من اگر پس از لاگین شدن کاربر، بیام اطلاعاتش رو به صورت Session بگیرم و اون ها رو توی یک صفحه قرار بدم، درسته؟ یا نه باید با یک فیلد مثل ID بیام اطلاعات کاربر رو بگیرم و به صفحاتی مثل پیشخوان اون رو پاس بدم


$_GET['id']


یا می شه بیشتر در مورد ساخت یک پروفایل یا یک پیشخوان برای کاربر توضیح بدین؟

ABZiko
سه شنبه 21 بهمن 1393, 19:10 عصر
یک سوال دیگه هم داشتم، من برای ورود کاربران سایت باید دو کپی از صفحه اول سایتم داشته باشم، یا نه با If چک کنم اگر Session وجود داشت، نام کاربر رو بنویسه و اگر نبود بنویسه ورود ؟(خودم از نوع دوم استفاده کردم ولی می خواستم ببینم اصولی هست یا نه)

Tarragon
سه شنبه 21 بهمن 1393, 19:11 عصر
سلام
کار خاصی نداره شما ایدی رو که با $_GET گرفتی، حالا بیا اطلاعاتی که توی پنل مورد نیاز هست رو بهش نشون بده ( از دیتابیس واکشی کن) .

اره درسته.
کلا تو برنامه نویسی اصولش تو یه چیز خلاصه می شه "کمترین حجم کد"

دانیال دزفولی
سه شنبه 21 بهمن 1393, 19:19 عصر
شاید اینطوری به مقصودت برسی


@$getP = $_GET['p'];
$checkposts = $db->query ("select * from posts where `ID`= '$getP' ");

ABZiko
سه شنبه 21 بهمن 1393, 19:30 عصر
از هر دو عزیز ممنونم، دانیال اتفاقا در بعضی از قسمت ها از این روش استفاده کردم، ولی دوستان به نظرتون در مورد اولی بهتر نیست که از Session استفاده کنم، علاوه بر اینکه اطلاعات کاربر رو در همه صفحات سایت دارم و می تونم استفاده کنم، دیگر نیازی نیست که توی هر صفحه اطلاعات کاربر رو Fetch کنم و نمایش بدم.تازه مثلا وقتی بخوام کاربر وارد شد، به جای کلمه ورود و ثبت نام نام کاربر رو بنویسه و خوش آمد بگه هم باید از Session استفاده کنم، درسته؟

دانیال دزفولی
سه شنبه 21 بهمن 1393, 19:38 عصر
اینطوری ؟



خوش آمدید
<?php
$loged_in_uname = $_SESSION['loged_in_uname'];
$user = mysqli_query($con,"select * from users where `username` = '$loged_in_uname'");
$user = mysqli_fetch_assoc($user);


echo $user['name']; ?> عزیز !

ABZiko
سه شنبه 21 بهمن 1393, 19:43 عصر
آره تقریبا مثل همین چیزی که گفتی ولی کامل ترش که به صورت MVC و PDO هست اینطوری :


public static function Execute($query){
try{
$connection=self::gethandler();
$sqlStatement=$connection->query($query);
return true;}

catch( PDOException $pe){
self::close();
trigger_error($pe-getMessage(),E_USER_ERROR);//E_USER_ERROR
return false;}}




public static function logIn($userName,$passWord){
$sql='SELECT * FROM user WHERE firstName='."'$userName' and lastName='$passWord' ";
return $rslt=Database::FetchOne($sql);}}




$result=User::logIn($_POST['userName'],$_POST['passWord']);
if($result){
header('Location:Home.php');
session_start();
$_SESSION['userName']=$result['firstName'];
$_SESSION['passWord']=$result['lastName'];
$_SESSION['mail']=$result['mail'];
$_SESSION['ic']=$result['IC'];}

else{
header('Location:SignIn.html');}

ABZiko
سه شنبه 21 بهمن 1393, 19:44 عصر
و بعد در صفحه Home هم اینطوری نوشتم :


<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Home</title>
</head>
<body>
<?php

session_start();
if(!isset($_SESSION['userName'])){
echo "<a href='SignIn.html' style='font-family:Segoe UI'>Log In</a><br />";
echo "<a href='AddUser.html' style='font-family:Segoe UI'>Register</a><br />";
echo "<a style='font-family:Segoe UI'>Please Enter to Use the WebSite Facilities ! Also You Can Register from the Link Above !</a>";}

else{
echo "<div style='font-family:Segoe UI'>Welcome ".$_SESSION['userName'].'&nbsp;'.$_SESSION['passWord']."</div>";
echo "<a href='logOut.php' style='font:12px Segoe UI'>Log Out</a>
<a href='SignIn.html' style='font:12px Segoe UI'>Sign In Again</a>
<a href='DashBoard.php' style='font:12px Segoe UI'>DashBoard</a>";}

?>

</body>
</html>

ABZiko
سه شنبه 21 بهمن 1393, 19:45 عصر
توی صفحه پروفایل هم به این صورت نوشتم :


<title>DashBoard</title>
<?php

session_start();
echo "<div style='font:12px Segoe UI'>".$_SESSION['userName']."</div>";
echo "<div style='font:12px Segoe UI'>".$_SESSION['passWord']."</div>";
echo "<div style='font:12px Segoe UI'>".$_SESSION['mail']."</div><br />";
echo "<a style='font:15px Segoe UI'>Your ID Code : ".$_SESSION['ic']."</a>";

?>

Tarragon
سه شنبه 21 بهمن 1393, 21:17 عصر
سلام
خیر.
با $_GET بهتره چون ما قراره ما با موتور های جستجو هم کار کنیم.
این رو هم در نظر نگیریم، کاربر میاد لینک یک پروفایل رو تو بوک مارک ذخیره می کنه دفعه ی بعد که میاد باز نمی شه، بنظر شما خوبه؟
این مورد رو هم در نظر نگیریم طرف هم زمان می زنه 3-4 تا لینک باز شه بنظرت چی می شه؟

ABZiko
سه شنبه 21 بهمن 1393, 23:44 عصر
ممنون، یک سوال داشتم، توی صفحه پروفایل چطوری اطلاعات کاربر رو بگیرم؟ یعنی منظورم اینه که با همون $_Session که ایجاد کردم بیا توی صفحه پروفایل و یک کوئری بنویسم که داخلش از همون Session استفاده شده و اطلاعات کاربر رو بگیرم؟(دقیقا همین جاست که متوجه نمی شم باید چطور اطلاعات رو بگیرم چون کاربر در صفحه SignIn لاگین شده و بعد از لاگین شدن، گفتم اگر لاگین شدن مشکلی نداشت بید توی صفحه Home.php که توی اون صفحه چند تا محصول هست و بعدش توی همون صفحه نوشته سلام کاربر و ... و یک جا هست که نوشتم "DashBoard" و لینک دادم به صفحه DashBoard.php، همین جاش رو گیر کردم!؟!؟!):خجالت:

Tarragon
چهارشنبه 22 بهمن 1393, 12:24 عصر
شما ایدی کاربر رو با $_GET که گرفتید درست؟
تو دیتابیس هم اطلاعات مربوط به هر کاربر هم هست، درست؟
شما میای از دیتابیس تمام اطلاعات که با IDـی که از طریق $_GET دریافت کردی واکشی می کنی ( می کشی بیرون)‌بعدش نشون می دی.
کدوم قسمتش گنگه بیشتر توضیح بدم؟

ABZiko
چهارشنبه 22 بهمن 1393, 12:42 عصر
ممنون، اینجاش رو بلدم، مشکلم اینجاست که من توی صفحه SignIn.html کاربر باید لاگین کنه، درست؟ این کد رو براش نوشتم (دومین لایه PDO هستش):


$result=User::logIn($_POST['userName'],$_POST['passWord']);
if($result){
header('Location:Home.php');
session_start();
$_SESSION['userName']=$result['firstName'];
$_SESSION['passWord']=$result['lastName'];
$_SESSION['mail']=$result['mail'];
$_SESSION['ic']=$result['IC'];}

else{
header('Location:SignIn.html');}


که اگر کاربر ثبلا ثبت نام کرده بود که اونو بفرسته به صفحه Home.php، و گرنه دوباره بفرسته صفحه SignIn.html. خب؟ خب حالا کاربر که رفته به صفحه Home.php فقط یک $_session داره که برابر نام کاربریش هست، اینجا چی کار کنم؟(همون $_session رو به صورت یک id به صفحه داشبورد بفرستم یا ... ؟)

Tarragon
چهارشنبه 22 بهمن 1393, 17:48 عصر
سلام
شما ایدی رو هم تو یک سشن دیگه ذخیره کن. بعد اونو بفرست

ABZiko
چهارشنبه 22 بهمن 1393, 18:16 عصر
آها، یعنی ID رو بگیرم و مثل نام کاربری توی یک Session ذخیره کنم و بعدش وقتی به صورت خودکار رفت به Home.php، سشن مربوط به IDرو به صورت $_GET به صفحه داشبورد بفرستم، درسته؟

Tarragon
چهارشنبه 22 بهمن 1393, 18:42 عصر
بله درسته :)

ABZiko
چهارشنبه 22 بهمن 1393, 23:25 عصر
خیلی ممنون،خیلی اذیتتون کردم،ببخشید یکم خنگم، فقط آخرین سوال، نحوه نوشتنش چطوریه؟مثلا اینطوری :


DashBoard.php?id=$_SESSION['id']

Tarragon
چهارشنبه 22 بهمن 1393, 23:37 عصر
خواهش می کنم. یه روزی منم مثل شما بودم :)
نمونه :

<?php echo "dashBoard.php?id=".$_SESSION['id'];?>

<?php echo "<a href=\"dashBoard.php?id=".$_SESSION['id']."\">dashboard</a>";?>

ABZiko
چهارشنبه 22 بهمن 1393, 23:53 عصر
خیلی ممنون، واقعا ممنون، تشکر فراوان ! نمی دونم چطور تشکر کنم.:تشویق: