parsgreen.com
article

آموزش ساخت پنل ورود و خروج سایت با php و mysql

mysql-php-login-logout

در مطلب قبلی از بخش آموزش کاربردی برنامه نویسی وب با php و mysql، با نحوه ساخت یک فرم عضویت ساده در سایت خود آشنا شدیم، فرم html جهت ورود اطلاعات کاربران را با چند فیلد جهت نمونه ساختیم و در سمت سرور، به کمک php، داده ها را کنترل و در دیتابیس ذخیره نمودیم، اکنون می خواهیم کار خود را با فرم ورود و خروج تکمیل کنیم تا کاربرانی که پیش تر در سایتمان ثبت نام کرده اند، بتوانند به سایت وارد شده و از پنل کاربری شخصی خود استفاده کنند، در این آموزش خواهیم دید که مبحث مربوط به نشست ها (سشن یا session)، برای ایجاد یک فرم ورود و خروج تا چه میزان اهمیت دارد و با نحوه تنظیمات سفارشی مربوط به آن، بیشتر آشنا خواهیم شد.

سشن (session) یا نشست چه کاربردی دارد؟


قبل از اینکه به کدنویسی کار پردازیم، لازم است نگاهی اجمالی داشته باشیم به اینکه چرا باید در فرم ورود و خروج از سشن (session) یا نشست استفاده کنیم، برای درک صحیح مطلب اجازه دهید با یک مثال موضوع را مطرح کنیم، فرض کنید می خواهید وارد یک نمایشگاه بزرگ کتاب با غرفه های متعدد شوید (شما به عنوان کاربر و نمایشگاه کتاب به فرض به عنوان یک سایت)، در قسمت ورودی نمایشگاه برگه ای با یک کد اختصاصی و تاریخ انقضاء به شما تعلق می گیرد که برای ورود به غرفه های گوناگون باید آن را ارائه کنید (کد را به فرض همان سشن فرض کنید و غرفه ها را صفحات یک سایت)، ممکن است شما بعد از خروج از نمایشگاه دیگر نتوانید با آن برگه وارد شوید (برگه منقضی شود) و یا بعد از گذشت چند ساعت، این اتفاق رخ دهد و مجبور به گرفتن یک برگه جدید شوید، حال اگر این برگه که روی آن مشخصات اختصاصی شما در مراجعه فعلی به نمایشگاه درج شده است، به هر دلیل دریافت نشود یا از بین برود، غرفه ها نمی توانند هویت شما را به درستی شناسایی کنند و لذا ممکن است اجازه استفاده از خدمات خود را ندهند، مشابه همین اتفاق به نوعی در یک سایت در مورد بحث سشن (session) یا نشست  می افتد، با سشن سرور کدهای اختصاصی برای هر کاربر و در مرورگر او ایجاد می کند (که به آن کوکی می گویند) تا در هر بار درخواست یک صفحه، مرورگر کد سشن را ارسال کرده و سرور بررسی کند که آیا کاربر مورد نظر دارای اعتبار لازم برای استفاده از آن صفحه می باشد یا خیر، این اعتبار نیز در صورتی به کاربر تعلق می گیرد که او نام کاربری و کلمه عبور را به طور صحیح وارد کرده باشد و متغیرهای سشن مربوط به آن نام کاربری و کلمه عبور در سمت سرور از قبل تنظیم شده و دارای اعتبار باشند (به فرض نشست منقضی نشده باشد یا کاربر از سیستم خارج نشده باشد).

ساخت دیتابیس، ردیف ها و اطلاعات اعضاء


همانطور که گفتیم، آموزش فعلی، در ادامه مطلب گذشته بیان می شود، به این دلیل، نیاز به دیتابیس و اطلاعاتی از پیش ثبت شده داریم، بدین منظور می توانید مطلب زیر را مطالعه کنید:
آموزش ساخت فرم عضویت در سایت با php و mysql  

فرم html جهت ورود و خروج


همانطور که در آموزش مربوط به ساخت فرم عضویت در سایت با php و mysql ملاحظه کردید، در اینجا نیز به یک فرم html ساده جهت دریافت نام کاربری و کلمه عبور اعضاء، نیازمندیم، البته اگر چه این فرم به زبان html است، اما بهتر است پسوند فایل خود را به php ذخیره کنید، چرا که به دلیل کار با سشن و دریافت پاره ای اطلاعات از کاربر و به فرض نمایش پیام، در حالت ورود و خروج به سایت، به آن نیاز خواهیم داشت؛ لذا ابتدا فرم زیر را در یک فایل php ایجاد کنید.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>وبگو | پنل ورود و خروج در سایت با php و mysql</title>
<!-- http://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    direction:rtl;
    font-size:12px;
}
</style>
</head>
<body>
<form action="login.php" method="post">
<label for="user">نام کاربری:</label><br />
<input name="username" id="user" type="text" maxlength="255" /><br /><br />
<label for="pass">کلمه عبور:</label><br />
<input name="password" id="pass" type="password" maxlength="255" /><br /><br />
<input type="hidden" name="check" value="sended" />
<input type="submit" value="ورود" />
</form>
</body>
</html>
توضیح:
- دوفیلد اصلی در فرم ما با نام های  username و password مشخص شده اند، فیلد مربوط به پسورد از نوع password است تا کلمه عبور کاربر به شکل حفاظت شده ای وارد شود.
- اطلاعات این فرم به فایل فرضی login.php با متد post ارسال می شود.
- فیلد مخفی با نام فرضی check، جهت اطمینان از ارسال فرم توسط کاربر و اختیاری است.

فایل login.php جهت بررسی ورود و خروج کاربر


پس از اینکه کاربر اطلاعات خود را ارسال می کند، داده ها و از جمله نام کاربری و کلمه عبور او باید با آنچه که در دیتابیس سرور وجود دارد تطبیق داده شود، از اینرو به برنامه ای به یک زبان سمت سرور نیاز خواهیم داشت که در اینجا php این کار را برایمان انجام خواهد داد، کد زیر یک نمونه را نشان می دهد.
<?php
//شروع یک نشست
session_start();
//دریافت و تنظیم متغیرهای ارسال شده توسط کاربر
@$username = $_POST['username'];
@$password = $_POST['password'];
@$check = $_POST['check'];
$check_error = 0;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>وبگو | پنل ورود و خروج در سایت با php و mysql</title>
<!-- http://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    direction:rtl;
    font-size:12px;
}
</style>
</head>
<body>
<?php
//بررسی معتبر بودن اطلاعات ارسالی کاربر
//نام کاربری
if (!isset($username) || $username == ''){
    echo "فیلد نام کاربری نباید خالی باشد!";
    $check_error = 1;
}
//کلمه عبور
elseif (!isset($password) || $password == ''){
    echo "فیلد کلمه عبور نباید خالی باشد!";
    $check_error = 1;
}
//اطلاعات اتصال به پایگاه داده
$con = mysql_connect("localhost", "user", "pass")
or die(mysql_error());
//نام دیتابیس
mysql_select_db("db", $con)
or die(mysql_error());
//جلوگیری از نفوذ به دیتابیس
$username = mysql_real_escape_string($username);
$password = md5($password);
if ($check_error != 1 && $check == 'sended'){
    //تطبیق اطلاعات کاربر با آنچه که در دیتابیس ذخیره شده
    $result = mysql_query ("SELECT * FROM register WHERE username = '$username' AND password = '$password'");
    // تعداد ردیف های موجود
    $count = mysql_num_rows($result);
    if($count > 0){
        // اطلاعات کاربر درست است، تنظیم مجوز های استفاده از بخش اعضاء
        $_SESSION['username'] = $_POST['username'];
        $_SESSION['password'] = $_POST['password'];
        // اطلاعات کاربر صحیح است
        echo "شما به سایت وارد شده اید!<br />";
    }
    else{
        // اطلاعات کاربر صحیح نیست
        echo "اطلاعات وارد شده صحیح نیست!<br />";
    }
}
//پایان ارتباط با پایگاه داده  
mysql_close($con);
?>
</body>
</html>
توضیح:
- قبل از هر چیز، با تابع session_start یک نشست یا سشن را در صفحه تعریف می کنیم، دقت کنید که این تابع باید قبل از ارسال هر نوع خروجی به مرورگر، تنظیم شود در غیر اینصورت خطای Cannot modify header information - headers already sent را دریافت خواهید کرد.
- سپس مقادیر ارسالی کاربر از فرم را در متغیرهایی ذخیره می کنیم، تا در ادامه از آنها استفاده کنیم، در اینجا نام فیلد ها از اهمیت زیادی برخوردار است، چرا که متغیرها و مقادیر آنها بر اساس نام فیلد و متد post تعریف می شوند.
- قسمت مربوط به متغیر check، اختیاری است، صرفا به این جهت آن را قرار داده ایم که شما را با تکنیک ارسال مقادیر به صورت فیلدهای مخفی از فرم های وب آشنا کنیم، از این روش معمولا برای اعتبار سنجی یا حفظ امنیت داده ها استفاده می شود که خود یک بحث مفصل می طلبد.
- قسمت میانی کد بالا، شباهت زیادی به آنچه در آموزش ساخت فرم عضویت در سایت گفتیم دارد، با استفاده از بررسی دستورات شرطی if و else از خالی نبودن فیلدها اطمینان حاصل می کنیم.
- سپس اطلاعات اتصال به پایگاه داده را تعریف کرده، به طور مثال، برای سرور مجازی یا لوکال هاست معمولا از نام کاربری root و بدون پسورد استفاده می شود، نام پایگاه داده نیز، بستگی به خود شما و دیتابیسی دارد که پیش تر ساخته اید (دیتابیس را می توانید به صورت دستی در برنامه phpmyadmin بسازید).
- بعد از اتصال موفقیت آمیز به پایگاه داده، متغیر های نام کاربری و کلمه عبور را با دو تابع mysql_real_escape_string و md5 به نوعی ایمن سازی می کنیم، تا هم از نفوذ احتمالی به پایگاه داده و هم از نام کاربری اعضاء سایت، حفاظت کرده باشیم، البته یادآور می شویم، توابع عنوان شده صرفا جهت نمونه و برای برنامه های عادی است، شما می توانید از روش ها و توابع پیچیده تری نیز برای افزایش ضریب امنیت استفاده کنید.
- اکنون با دستور SELECT * FROM  بررسی می کنیم تا ببینیم، آیا کاربری با این مشخصات در دیتابیس ما وجود دارد یا خیر، اگر تعداد فیلد های انتخاب شده بزرگتر از یک باشد (mysql_num_rows تعداد ردیف های نتایج یک پرس و جو را نشان می دهد)، پس چنین کاربری وجود دارد، در غیر اینصورت پیام خطا نشان داده خواهد شد.
- اگر کاربر مشخصات را صحیح وارد کرده باشد، دو متغیر به صورت superglobal برای کار با توابع سشن (session) تنظیم می کنیم، متغیر نام کاربری و کلمه عبور، از این دو متغیر در هنگامی که کاربر صفحات سایت را مرور می کند، برای بررسی معتبر بودن ورود او، استفاده خواهیم کرد.
- در نهایت نیز اتصال به پایگاه داده را با تابع mysql_close خاتمه می دهیم.

نحوه استفاده از سشن (session) در صفحات مختلف


اکنون که کاربر با موفقیت وارد سایت شد و دو متغیر برای کار با سشن ها تعریف کردیم (به صورت superglobal یعنی کافی است یک بار متغیر را در کدمان تعریف کنیم، آنگاه در تمام صفحات آن را در اختیار خواهیم داشت و نیازی به دریافت مجدد و تعریف دوباره متغیر نیست)، برای هر صفحه از سایتمان باید بررسی کنیم تا ببینیم این دو متغیر (سشن username و سشن password) تنظیم شده اند یا خیر، این کار را با یک بررسی ساده بر مبنای isset در php انجام می دهیم.
<?php
//شروع یک نشست
session_start();
//بررسی تنظیم شدن یا نشدن متغیرهای سشن
if (!isset($_SESSION['username']) || !isset($_SESSION['password'])){
//در صورتی که متغیرهای سشن تنظیم نشده باشند، کاربر مجاز به دیدن ادامه صفحه نیست و او را به صفحه اصلی منتقل می کنیم
header("location:index.php");     
}
?>

دکمه خروج از سایت


برای ساخت یک دکمه خروج، هنگامی که کاربر وارد سایت می شود، ابتدا یک فایل با نام فرضی logout.php بسازید و سپس با یک فرم ساده html آن را فراخوانی کنید، مثال زیر گویا است.
محتویات فایل logout.php:
<?php
//شروع یک نشست
session_start();
//منقضی کردن متغیر های نشست
unset($_SESSION['username']);
unset($_SESSION['password']);
//پایان نشست
session_destroy();
//انتقال به صفحه اصلی یا صفحه مورد نظر
header("location:index.php");
?>
توضیح:
- همانطور که ملاحظه می کنید، در اینجا از unset برای منقضی کردن متغیرهای سشن استفاده کرده ایم.
- با تابع session_destroy یک نشست را به پایان می بریم و برای ورود مجدد کاربر، نیاز به ارسال نام کاربری و کلمه عبور است.
محتویات فرم و دکمه ساده html جهت خروج:
<form action="logout.php" method="post">
<input type="submit" value="خروج" />
</form>
توضیح:
- این فرم صرفا فایل logout.php را فراخوانی می کند و با فراخوانی آن فایل، سشن به طور کامل منقضی می شود.
- با کمی آشنایی با این روش، می توانید ایده های جالبی تعریف کنید، مثلا پیام های خوش آمد گویی و خروج به کاربر نشان دهید، یا از نام او که در متغیر سشن username وجود دارد، به فرض برای نمایش نام کاربری استفاده کنید.
مبحث مربوط به سشن ها ممکن است در نگاه اول کمی پیچیده به نظر برسد، به همین جهت در این مطلب به همین حد اکتفا می کنیم و در آموزش های بعدی، خواهیم دید که چگونه می توان امکانات جانبی بیشتری به فرم ورود و خروج کاربر به سایت، افزود.
sectionدسته بندی: آموزش کاربردی » MySQL
related مطالب بیشتر:
» هوشمند سازی پنل ورود و خروج سایت
» صفحه بندی مطالب و محتوا با PHP و MySQL
» ساخت فید آر اس اس (RSS Feed)، با استفاده از php و mysql
» ایجاد لینک دانلود مدت دار با PHP و MySQL
» آموزش ساخت فرم عضویت در سایت با php و mysql
commentنظرات (۲۰۴ یادداشت برای این مطلب ارسال شده است)
نویسنده: Reza
زمان: ۰۹:۴۸:۱۴ - تاریخ: ۱۳۹۱/۰۴/۰۳
ممنون
نویسنده: Reza
زمان: ۲۲:۲۴:۱۵ - تاریخ: ۱۳۹۱/۰۴/۲۳
سلام
می خواستم بپرسم چطوری میشه به جای متن "شما به سایت وارد شده اید" یک پیغام خوش آمد گویی به همراه نام کاربری اعضا نمایش داده شود؟
مثلا اگه من با نام کاربری Reza ثبت نام کرده باشم، بعد از ورود به سایت بنویسه "خوش آمدید Reza"
پاسخ: 
سلام
برای این کار دو راه وجود دارد، یک حالت استفاده از متغیر
$_SESSION['username']
است، اگر از این متغیر با دستور echo خروجی بگیرید، نام کاربر را نشان می دهد، چون ما آن را برابر با username قرار داده ایم، راه دوم اینکه نام کاربر را در دیتابیس، هنگام ثبت نام، ذخیره کرده باشیم و پس از تطبیق مشخصات او، از آن نام استفاده کنیم.
نویسنده: mohammad
زمان: ۰۱:۵۶:۵۵ - تاریخ: ۱۳۹۱/۰۴/۲۴
سلام
خیلی جامع و کامل بود ...مرسی
فقط من یه سوال دارم، من می خوام وقتی طرف وارد شد نام و نام خانوادگی و چند فیلد دیگه که تو دیتابیس هست رو در چند تکست باکس متفاوت نمایش بدم (هر کدام از فیلد ها در یک تکست) میشه بگین چجوری این کار رو بکنم؟
پاسخ: 
سلام
اگر با نحوه کار php و mysql آشنا باشید، انجام این کار چندان سخت نیست، کافی است مقادیر ردیف های مورد نظر را با دستور SELECT * FROM فراخوانی کنید و متغیر مورد نظر را به عنوان value برای فیلدها در نظر بگیرید.
مثال:
<?php
//تعریف متغیر ها
$user_name = $_SESSION['username'];
$user_pass = $_SESSION['password'];
$result = mysql_query("SELECT * FROM table_name WHERE user = '$user_name' AND pass = '$user_pass' LIMIT 1")
or die(mysql_error());
while($row = mysql_fetch_array($result)){
//در یافت مقادیر ردیف ها و تعریف متغیر
$id = $row['id'];
$name = $row['name'];
$family = $row['family'];
}
?>
<form action="#" method="post">
<input name="id" type="hidden" value="<?php echo $id ?>" /><br />
<label for="name">نام:</label>
<input name="name" id="name" type="text" value="<?php echo $name ?>" /><br />
<label for="family">نام خانوادگی:</label>
<input name="family" id="family" type="text" value="<?php echo $family ?>" /><br />
<input type="submit" value="ارسال" />
</form>
البته این تنها یک مثال است، می توان با کمی تجربه شیوه های مورد نظر خودتان را ایجاد کنید.
نویسنده: علی
زمان: ۱۷:۵۴:۳۵ - تاریخ: ۱۳۹۱/۰۵/۰۱
سلام
آموزش بسیار عالی بود
فقط می خواستم بدونم کلا بحث استفاده از دیتابیس توش چیه من باید برم یک table به نام register ایجاد کنم بعدش باید چی کار کنم لطفا کمک کنید.
پاسخ: 
سلام
از آنجایی که سیستم های ورود و خروج اعضاء به سایت، مبتنی بر پایگاه داده هستند، لذا باید اطلاعات آنها هنگام ثبت نام، ابتدا در دیتابیس و در جدولی با چند ستون مختلف (id, username, password و...) ذخیره شود، این اطلاعات به طور معمول شامل نام کاربری و کلمه عبور است، سپس در هنگام ورود، اطلاعات ارسالی کاربر از فرم ورود، با آنچه که در دیتابیس موجود است تطبیق داده می شود تا اگر منطبق بود، اجازه ورود داده شود و سشن ها تنظیم شوند، پس هدف از ساخت جدول: 1- دریافت و ذخیره اطلاعات هنگام ثبت نام درون فیلدها است. 2- تطبیق نام کاربری و کلمه عبور با آنچه از قبل ذخیره شده است. در ضمن این آموزش مبتنی بر مطلب دیگری است که لینک آن در بالا و در قسمت "ساخت دیتابیس، ردیف ها و اطلاعات اعضاء" ذکر شده.
اگر مشکل دیگری بود عنوان کنید.
نویسنده: متین
زمان: ۱۹:۴۹:۵۳ - تاریخ: ۱۳۹۱/۰۵/۰۳
با سلام
من یک سایت دارم طراحی میکنم یه مشکل کوچولو دارم اگه ممکنه یه کمکی بکنید:
من یک صفحه بنام index.php دارم که میخوام وقتی کاربر به این صفحه میاد خود به خود آدرس به این شکل تغییر کنه :
index.php?page=1
میشه راهنمایی کنید چه جوری باید این کار رو کرد.
خیلی متشکر
پاسخ: 
سلام
ساده ترین راه برای این کار استفاده از توابع header و ریدایرکت در php است، به فرض ابتدا چک می کنیم که آیا متغیر page تنظیم شده است یا خیر، اگر تنظیم نشده باشد، با ریدایرکت، کاربر را به طور خودکار به آدرس پیش فرض انتقال می دهیم:
$page = $_GET['page'];
if (!isset($page) || $page == ''){
header('Location: http://yoursite.com/index.php?page=1');
die();
}
این کد باید قبل از ارسال هر نوع خروجی html در صفحه قرار گیرد (در بالاترین قسمت صفحه)، یک روش دیگر بررسی لینک درخواستی است، اگر 9 حرف آخر آدرس درخواستی برابر index.php باشد، آنگاه کاربر را به آدرس مورد نظر منتقل می کنیم:
$requested_url = $_SERVER['REQUEST_URI'];
if (substr($requested_url,-9) == 'index.php'){
header('Location: http://yoursite.com/index.php?page=1');
die();
}
اگر می خواهید یک لینک را برای همیشه منتقل کنید نیز از ریدایرکت 301 استفاده نمائید:
$requested_url = $_SERVER['REQUEST_URI'];
if (substr($requested_url,-9) == 'index.php'){
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://yoursite.com/index.php?page=1');
die();
}
استفاده از این کدها باید با آگاهی از نحوه عملکرد آنها انجام شود تا دچار مشکل دیگری نشوید.
نویسنده: solmaz
زمان: ۰۰:۲۲:۴۶ - تاریخ: ۱۳۹۱/۰۵/۰۵
سلام
ببخشید من می خواهم یک سیستم تغذیه دانشگاه با php برای پروژه ام درست کنم ولی نمی تونم متاسفانه چون من نمی دونم چه جوری ما دانشگاه مون فیش می گیریم و php در حد مبتدی بلدم
پاسخ: 
سلام
با شرایطی که عنوان کردید، حل مشکل شما نیاز به آشنایی و کار قبلی با php دارد، برنامه شما به فرض نیاز به دیتابیس، جداول و لیست کارت های تغذیه، سیستم ثبت روزانه و... خواهد داشت که هر کدام نیاز به کدنویسی دارند، واقعیت مطلب این است که تبدیل ایده های ذهنی به یک برنامه کاربردی بدون تجربه و تسلط چندان متصور نیست، اما اگر قبلا چند پروژه ساده انجام داده بودید، این کار را هم به راحتی می توانستید انجام دهید.
نویسنده: mahsa
زمان: ۱۵:۱۵:۱۹ - تاریخ: ۱۳۹۱/۰۵/۰۵
سلام
تشکر از آموزشتون. میخواستم بدونم آموزش بعدی در رابطه با "امکانات جانبی بیشتر این فرم" رو تقریباً چه مدت دیگه میذارید؟ آخه یه پروژه وبسایت دارم که بهش نیاز دارم هر چه زودتر
پاسخ: 
سلام
یک بخش کوچک از آموزش مربوط به فرم ثبت نام باقی است و آن نحوه به خاطر سپاری کاربر و همچنین خارج شدن خودکار از سیستم بعد از چند دقیقه غیر فعال بودن است که در هفته آینده تکمیل خواهد شد، اگر امکانات جانبی دیگری مد نظر شماست، لطفا بیان کنید تا در صورت امکان در آموزش بعدی گنجانده شود.
نویسنده: مانوک
زمان: ۱۵:۲۷:۰۸ - تاریخ: ۱۳۹۱/۰۵/۰۶
سلام، ممنون از راهنماییتون، میخواستم بدونم اگر ممکنه در مورد MD5 کردن یه توضیحی بدین الان من با user و pass وارد میشم و pass من 32 کاراکتری یا همون md5 میشه، این کار تو جدول session انجام میشه و اون 32 کاراکتر هم برای check id هست و هم برایsession id، میخواستم بدونم نقش این دوتا با هم چیه و زمانیکه رمز عبور گرفته میشه، این دو چه کاری میکنند؟ ممنون میشم اگه زود جواب بدین
پاسخ: 
سلام
md5 یک تابع برای رمزنگاری بدون بازگشت کلمه عبور است که برای محافظت از پسوردها استفاده می شود، البته عیب و شاید در عین حال مزیت آن در این است که تنها کاربر می داند که چه چیز را به عنوان پسورد تعیین کرده است، یعنی در صورت فراموش شدن کلمه عبور نمی توان عین آن را بازیابی کرد و باید رمز جدید اختصاص داده شود، حاصل استفاده از md5 برای هر پسورد همیشه یک کد رمزی شده است، به فرض کلمه php اگر به تابع md5 داده شود، همیشه نتیجه به صورت زیر خواهد بود:
<?php
echo md5('php');
e1bfd762321e409cee4ac0b6e841963c
?>
به این صورت هنگام ورود، کلمه عبور، ابتدا تبدیل به رمز شده و رمز با آنچه در دیتابیس از قبل و در هنگام ثبت نام ذخیره شده تطبیق داده می شود.
اما session id تنها یک کد است که سرور آن را به صورت رندوم ساخته و به کاربر اختصاص می دهد تا در درخواست ها، کاربران متفاوت را از هم شناسایی کند، session id هم در سرور و هم در مرورگر کاربران به صورت کوکی ایجاد می شود، اما آنچه که باعث شناسایی دقیق کاربر هنگام ورود و استفاده از بخش اعضاء سایت می شود در واقع وجود نام کاربری و کلمه عبور به صورت متغیر های سشن
$_SESSION['username'];
$_SESSION['password'];
در سرور است، برای هر session id دو متغیر بالا در سرور تنظیم می شود و این کار تنها پس از ورود صحیح اطلاعات نام کاربری و کلمه عبور صورت می گیرد و با خروج از سیستم نیز متغیر های سشن با تابع unset از بین می روند.
نویسنده: mahsa
زمان: ۱۶:۰۳:۱۳ - تاریخ: ۱۳۹۱/۰۵/۰۷
سلام
من تمام کدهای شما رو پیاده سازی کردم ولی میخوام با ورود کاربر، باز همان صفحه ای که username و password از ما میخواد نمایش داده بشه با این تفاوت که دکمه خروج اضافه بشه.
پاسخ: 
سلام
این کار بسیار ساده است، کافی است وضعیت مجوز استفاده از بخش اعضاء کاربر را با یک دستور شرطی if بررسی کنید، اگر وارد سیستم شده باشد، کد مربوط به خروج یا هر چیز دیگری را که بخواهید، با دستور echo چاپ کنید. به طور مثال:
<?php
session_start();
//پیش فرض
$user_login = 0;
//بررسی ورود کاربر
if (!isset($_SESSION['username']) || !isset($_SESSION['password'])){
header("location:index.php");
}
//بررسی مجوز استفاده از بخش اعضاء
elseif (isset($_SESSION['username']) && isset($_SESSION['password'])){
$user_login = 1;
}
//چاپ خروجی برای اعضاء
if ($user_login == 1){
echo'<form action="logout.php" method="post">
<input type="submit" value="خروج" />
</form>';
}
?>
اگر به نحوه عملکرد کد دقت کنید، خودتان می توانید به راحتی آن را توسعه دهید و امکانات مورد نظر را اضافه نمائید.
نویسنده: Reza
زمان: ۱۷:۰۹:۰۳ - تاریخ: ۱۳۹۱/۰۵/۱۳
سلام
من پنل ورود سایتم رو با کوکی نوشتم، یه سوال راجب نوشتن نام کاربری در کنار یک متن دلخواه به جای عبارت "شما به سایت وارد شده اید" قبلا پرسیدم و کارهایی که شما گفتین رو انجام دادم. ولی نتیجه نگرفتم، این کدی که من نوشتم:
$lname = $_COOKIE['lname'];
lname یعنی نام خانوادگی که کاربر هنگام عضویت وارد میکنه و برای فراخوانی نام خانوادگی این کد رو نوشتم:
echo $lname;
لطفا راهنمایی کنید.
پاسخ: 
سلام
استفاده از متغیر کوکی نیز می تواند مقصود شما را برآورده کند، اما اگر متغیر های سشن را درست تنظیم کرده باشید، با خروجی گرفتن از آنها باید نام کاربر (یا هر مقدار دیگر) نشان داده شود، در غیر این صورت به احتمال قوی در جایی از برنامه خود اشتباه کرده اید، وقتی یک متغیر سشن ست می شود، در هر صفحه که نشست ادامه دارد و شروع می شود، آن متغیر باید در دسترس باشد و با دستور echo خروجی مورد نظر را بدهد، اگر مقادیر دستور echo از آن سشن خالی باشد، پس سشنی ست نشده یا خالی است! می توانید از isset نیز برای بررسی ست شدن یا نشدن سشن استفاده کنید. یک نکته دیگر اینکه ممکن است مشکل شما از ست شدن اشتباه کوکی ها باشد و سرور نتواند متغیرهای سشن را از صفحه ای به صفحه دیگر منتقل کند، کد خود را بدون ست کردن کوکی نیز تست کنید، منتها ابتدا کوکی های موجود را از حافظه مرورگر حذف نمائید.
نویسنده: علی
زمان: ۱۵:۳۱:۳۵ - تاریخ: ۱۳۹۱/۰۵/۱۴
با سلام
اگه مثلا ادمین سایت بخواهد بفهمه که چه کسانی ثبت نام کردند باید چی کار کنم ؟؟
مثلا با دادن رمز عبور و نام کاربری وارد یک جدول بشه که اطلاعات اون هایی که ثبت نام کردند رو ببینه
لطفا کمکم کنید ممنون
پاسخ: 
سلام
شما باید با نحوه کار php و mysql آشنا باشید، دستور SELECT * FROM می تواند به راحتی این کار را انجام دهد و مقادیر را به خروجی ارسال کند، توصیه می کنیم بخش آموزش های مقدماتی MySQL را مطالعه کنید.
نویسنده: مصی جون
زمان: ۲۲:۴۳:۲۷ - تاریخ: ۱۳۹۱/۰۵/۱۴
سلام
فرم ثبت نام من درست کار میکنه ولی فرم ورود خطای اطلاعات وارد شده صحیح نیست!
را میدهد.درصورتی که اطلاعات در دیتابیس مشاهده مییشود.
درضمن من سیشن روهم درهمون صفحه در بالای همه کدها نوشتم.
پاسخ: 
سلام
هنگام ورود از متغیر count ، username و password با echo خروجی بگیرید و آن را با دیتابیس مقایسه کنید، این خطا یعنی اطلاعات شما یا نوع کدنگاری با md5 بین فرم ورود و ثبت نام متفاوت است یا اینکه اطلاعات واقعا درست و یکسان وارد نمی شود.
نویسنده: ادیبی
زمان: ۱۳:۰۳:۱۱ - تاریخ: ۱۳۹۱/۰۵/۱۵
خیلی عالی بود تشکر
نویسنده: محسن
زمان: ۱۱:۵۴:۵۸ - تاریخ: ۱۳۹۱/۰۵/۱۹
سلام
میشه یه پروژه ثبت نام حرفه ای برای سایت با php رو بزارید که تو فرم ثبت نام ایمیل طرفو بگیره بعد لینک فعال سازی براش بفرسته و تو فرم ثبت نام کد تشخیص انسان رو هم داشته باشه خیلی من این پروژه رو لازم دارم انصافا سایتی مثل سایت شما تو اینترنت پیدا نکردم اجرت با خدا
پاسخ: 
سلام
نظر لطف شما است.
پروژه درخواستی از قسمت های مختلفی تشکیل می شود که باید هر کدام به صورت مجزا آموزش داده شوند، بخشی از آموزش های مورد نیاز تا این لحظه در سایت قرار داده شده است و برخی نیز در ادامه مطالب، منتشر خواهند شد.
برای اینکه بتوانید امکانات مورد نظر خود را ایجاد کنید، باید تا حدودی با برنامه نویسی وب نیز آشنا باشید، در غیر این صورت، واقعیت این است که هیچ کد آماده ای نمی تواند تمام نیازهای شما را برآورده کند.
نویسنده: ادیبی
زمان: ۱۳:۱۳:۴۶ - تاریخ: ۱۳۹۱/۰۵/۱۹
با سلام و خسته نباشید
من میخوام وقتی کاربری که هنوز وارد سیستم نشده لینکی که مجاز به دیدنش نیست رو می زنه وقتی برگردونده میشه به صفحه اصلی سیستم بهش پیغام بده که چون وارد نشدید مجاز به دیدن این صفحه نیستید
حالا در فایلی که کاربر مجاز به دیدن آن نیست بعد از چک ورود کاربر متغیری رو مقداردهی می کنم می خوام بدونم برای اینکه این متغیر رو بتونم در فایل صفحه اصلی چک کنم آیا باید حتما در فایلی که کاربر مجاز به دیدن آن نیست فرم تعریف کنم تا بتونم متغیر رو از طریق post_ $ در صفحه اصلی بهش دسترسی پیدا کنم یا راه دیگه ای برای دسترسی به این متغیر بدون تعریف فرم وجود داره؟
با تشکر منتظر پاسختون هستم
پاسخ: 
سلام
دسترسی به مقادیر متغیر ها در php از چند طریق امکان پذیر است، یک روش استفاده از متدهای POST یا GET و... است که بیشتر برای فرم های وب کاربرد دارد، روش دیگر که در مورد مشکل شما می تواند کاربردی باشد، استفاده از متغیرهای سشن است، وقتی متغیری به صورت سشن (session) تعریف می شود، مقادیر آن در هر صفحه ای که نشست در آن شروع شود، قابل دسترسی است که به این حالت در اصطلاح متغیر های superglobals می گویند، متغیرهای این دسته شامل موارد زیر می شود:
 $GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV
توجه کنید قبل از شروع تابع session_start نباید هیچ نوع خروجی به مرورگر ارسال شود، برخی ویرایشگرها کاراکترهای نامرئی (BOM) به صفحات اضافه می کنند که باعث دریافت خطای Cannot modify header information - headers already sent می شود.
لذا کافی است متغیر مورد نظر خود را در قالب یک SESSION_$ تعریف کنید و از آن در صفحات مختلف جهت بررسی موارد مورد نظر استفاده نمائید.
paged صفحه 1 از 14




more لطفا دقت کنید که یادداشت های زیر منتشر نشده و حذف خواهند شد:
- یادداشت های خارج از موضوع این مطلب.
- سوالات کلی، غیر ضروری و مشکلاتی که هیچ تلاشی برای رفع آن نکرده باشید.
- نظرات حاوی کدها و اسکریپت های خیلی طولانی (به طور مثال کد کامل قالب وبلاگ).

6 × 9
 refresh
آگهی
seonab.com
طراحی نرم افزار اندروید
رنگین کمان عکس
Ranginkamaan.com

آرشیو عکس های باکیفیت با موضوعات متنوع...