parsgreen.com
article

هوشمند سازی پنل ورود و خروج سایت

mysql-php-smart-login

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

ایجاد امکان "مرا به خاطر داشته باش" در پنل سایت


حتما سایت های زیادی را دیده اید که در هنگام ورود اطلاعات نام کاربری و کلمه عبور، معمولا به صورت یک چک باکس، امکانی تحت عنوان "مرا به خاطر داشته باش" یا عباراتی از این دست دارند، این امکان در واقع به این معنی است که سیستم تا مدت زمان معینی از شما در مراجعات بعدی نام کاربری و کلمه عبور نخواهد خواست و به صورت هوشمندانه ای شما را به یاد خواهد داشت، اما این امکان چگونه ایجاد می شود؟
این امکان به این صورت کار می کند: هنگامی که گزینه مورد نظر را انتخاب می کنید، برنامه یک کوکی (ckookie) در مرورگر شما ایجاد کرده و متناسب با آن کوکی، در سرور، متغیرهای سشن را برای مدت زمانی که برنامه نویس تعیین کرده است (به فرض یک ماه) نگهداری می کند، تا زمانی که سشن های مورد نظر در سرور وجود دارند و به طور مثال به دلیل منقضی شدن تاریخ کوکی یا کلیک کاربر بر روی دکمه خروج، unset نشده و از بین نرفته اند، کاربر برای سرور قابل شناسایی است و بدون ورود نام کاربری و کلمه عبور، حتی با بستن پنجره مرورگر و مراجعه بعدی، می تواند از امکانات بخش اعضاء استفاده نماید، برای ایجاد این امکان در 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 />
<label for="remember">مرا به خاطر بسپار:</label>
<input type="checkbox" name="remember" id="remember" checked="checked" value="1" /><br /><br />
<input type="hidden" name="check" value="sended" />
<input type="submit" value="ورود" />
</form>
</body>
</html>
توضیح:
- همان طور که ملاحظه می کنید؛ چک باکس ما در فرم بالا از نوع  input و checkbox است.
- برای اینکه به طور پیش فرض، چاک باکس فعال بوده و به حالت انتخاب شده درآمده باشد، بخش checked را اضافه می کنیم، اگر مایل هستید که به طور پیش فرض، (تیک) چک باکس غیر فعال باشد، این قسمت را حذف کنید.
- مقادیر value برای فرم بالا و قسمت چک باکس که عدد یک در نظر گرفته شده، فرضی است، شما می توانید مقادیر دیگری مثل true، ok و... در نظر بگیرید، اما نکته مهم این است که ما این مقادیر را در سمت سرور و در کد php خود به عنوان یک متغیر از فرم html دریافت خواهیم کرد تا از انتخاب شدن یا نشدن این گزینه توسط کاربر اطمینان حاصل کنیم.
اکنون در سمت سرور کد php با نام فرضی login.php را که در آموزش پیشین ساختیم، به صورت زیر ویرایش می کنیم.
<?php
//شروع یک نشست
session_start();
//دریافت و تنظیم متغیرهای ارسال شده توسط کاربر
@$username = $_POST['username'];
@$password = $_POST['password'];
@$check = $_POST['check'];
$check_error = 0;
//بررسی معتبر بودن اطلاعات ارسالی کاربر
//نام کاربری
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'];
        $_SESSION['remember'] = $_POST['remember'];
        // اطلاعات کاربر صحیح است، انتقال به صفحه اعضاء
        header("location:user.php");
    }
    else{
        // اطلاعات کاربر صحیح نیست
        echo "Error!<br />";
    }
}
//پایان ارتباط با پایگاه داده  
mysql_close($con);
?>
توضیح:
- در این فایل ما سشن remember را به کد خود افزوده ایم که مقادیر آن در واقع همان مقادیر چک باکس خواهد بود.
$_SESSION['remember'] = $_POST['remember'];
به این صورت، اگر کاربر تیک "مرا به خاطر داشته باش" را غیر فعال نکرده باشد، مقدرا آن 1 و در غیر این صورت مقدار آن خالی خواهد بود.
- به دلیل اینکه در اینجا ما از تابع header و در ادامه از تابع setcookie استفاده می کنیم، باید هیچ نوع خروجی html و حتی فضای خالی یا کاراکترهای نامرئی (byte order mark یا BOM) پیش از فراخوانی آنها از طریق مرورگر ارسال نکنیم، در غیر این صورت با پیغام خطای headers already sent مواجه خواهیم شد، از این رو در کد خود، مقادیر کدهای html را حذف کرده ایم و در عوض با ایجاد یک انتقال از طریق header و location، کاربر را به طور خودکار به صفحه دیگر منتقل می کنیم.
حال نوبت به مقایسه مقادیر چک باکس و تنظیم یا عدم تنظیم کوکی است؛ لذا پس از انتقال کاربر به فایل user.php که در واقع محیط کاربری اعضای سایت است، مقادیر سشن remember را که پیش تر با دریافت اطلاعات فرم ورود تنظیم کرده ایم، بررسی می کنیم، اگر مقدار آن 1 بود، پس کاربر تمایل دارد که اطلاعاتش به خاطر سپرده شود، لذا کوکی را تنظیم می کنیم، اگر غیر از این بود، یعنی نباید کوکی یادآوری کاربر تنظیم شود.
<?php
//شروع یک نشست
session_start();
//بررسی تنظیم شدن یا نشدن متغیرهای سشن
if (!isset($_SESSION['username']) || !isset($_SESSION['password'])){
//در صورتی که متغیرهای سشن تنظیم نشده باشند، کاربر مجاز به دیدن ادامه صفحه نیست و او را به صفحه اصلی منتقل می کنیم
header("location:index.php");
die();     
}
//بررسی امکان مرا به خاطر بسپار
elseif (isset($_SESSION['remember']) && $_SESSION['remember'] == '1'){
    $login_time=3600;//یک ساعت
    setcookie(session_name(),session_id(),time()+$login_time,("/"));
}
?>
<!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>وبگو | محیط کاربری اعضای سایت</title>
<!-- http://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    direction:rtl;
    font-size:12px;
}
</style>
</head>
<body>
شما در حال استفاده از بخش کاربری سایت هستید!
</body>
</html>
توضیح:
- از تابع setcookie برای تمدید مهلت استفاده از بخش اعضاء برای یک بار ورود کاربر (با ایجاد یک کوکی ) استفاده می کنیم.
- تابع setcookie باید یک آرگومان به صورت زمان به ثانیه داشته باشد که نمایانگر مدت زمان فعال بودن کوکی است، به فرض برای یک ساعت مقادیر 3600 ثانیه یا برای یک ماه معادل 2592000 ثانیه، بدین منظور ما از تابع time با افزودن یک مقدار به آن استفاده کرده ایم.
- نام کوکی با پارامتر session_name و مقادیر آن با session_id ذخیره می شود، همچنین برای تعیین یک مسیر (path) ذخیره سازی اطلاعات کوکی، پارامتر آخر را اضافه می کنیم، با تنظیم آن به صورت "/"، کوکی برای تمام فولدرهای یک سرور قابل دسترسی خواهد بود، در صورت عدم استفاده از متغیر path به طور پیش فرض، کوکی فقط در دایرکتوری که آن را ایجاد کرده است قابل استفاده است، به فرض با تنظیم آن به صورت "/user/" کوکی فقط در این فولدر قابل استفاده است، از این رو بهتر است همواره از روش ذکر شده در مثال استفاده کنید.
توجه کنید که قابلیت "مرا به خاطر داشته باش" برای برنامه هایی که به امنیت بالایی احتیاج دارند، معمولا توصیه نمی شود، چرا که اگر کاربر به هر دلیل از سیستم به شکل استاندارد خارج نشود (به فرض پنجره مرورگر خود را ببندد یا برق به طور ناگهانی  قطع شود)، فردی دیگر بر روی همان سیستم (و همان مرورگر) می تواند بدون وارد کردن نام کاربری و کلمه عبور و تنها با داشتن آدرس url صفحه کاربری، وارد قسمت مدیریت شود، متاسفانه این مشکلی است که بیشتر از روی ناآگاهی و معمولا در کامپیوترهای اشتراکی مانند کافی نت ها اتفاق می افتد؛ لذا استفاده از این امکان باید با در نظر گرفتن هشدارها و نکات امنیتی صورت گیرد.

ایجاد امکان خروج خودکار بعد از مدت زمان عدم فعالیت


در مقابل امکان "مرا به خاطر داشته باش"، قابلیت دیگری را نیز می توان برای پنل مدیریت سایت در نظر گرفت که معمولا به دلیل وجود حساسیت های خاص و ارتقاء امنیت صورت می گیرد، این امکان ایجاد یک سیستم خودکار خروج است، یعنی اگر به فرض مدت زمانی کاربر بدون فعالیت در صفحه باقی بماند، نشست او خود به خود منقضی شود، در این حالت حتی در موقعی که پنجره مرورگر هنوز باز است، اعتبار کاربر در سرور به پایان می رسد و او باید مجددا در پنل سایت وارد شود، این امکان معمولا در سیستم هایی که جنبه امنیت برایشان از اهمیت بالایی برخوردار است (مانند سیستم تراکنش های بانکی و مالی، کنترل پنل هاست ها و...) به کار گرفته می شود.
برای افزودن این امکان به سیستم خود، ابتدا در فایل اصلی لاگین، یعنی login.php مقادیر زیر را در ابتدای کد اضافه کنید.
<?php
//زمان برای خروج خودکار کاربر
$now_time = time();
$_SESSION['time_started'] = $now_time;      
$_SESSION['time_remaining'] = 3600;
?>
به این صورت:
<?php
//شروع یک نشست
session_start();
//زمان برای خروج خودکار کاربر
$now_time = time();
$_SESSION['time_started'] = $now_time;      
$_SESSION['time_remaining'] = 3600;
//دریافت و تنظیم متغیرهای ارسال شده توسط کاربر
@$username = $_POST['username'];
@$password = $_POST['password'];
@$check = $_POST['check'];
$check_error = 0;
//بررسی معتبر بودن اطلاعات ارسالی کاربر
//نام کاربری
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'];
        $_SESSION['remember'] = $_POST['remember'];
        // اطلاعات کاربر صحیح است، انتقال به صفحه اعضاء
        header("location:user.php");
    }
    else{
        // اطلاعات کاربر صحیح نیست
        echo "Error!<br />";
    }
}
//پایان ارتباط با پایگاه داده  
mysql_close($con);
?>
توضیح:
- در ابتدا ما زمان آخرین فعالیت کاربر را در متغیر now_time ذخیره می کنیم و آن را به سشن time_started نسبت می دهیم.
- سپس حداکثر زمان مجاز برای ماندن کاربر در صفحات (بدون رفرش کردن یا رفتن به صفحه دیگر) را  در سشن دیگر با نام time_remaining تنظیم می کنیم.
این اطلاعات به دلیل اینکه از نوع سشن هستند، در صفحات دیگر که در آنها نیز سشن را شروع می کنیم (با session_start)، قابل دسترسی می باشند، لذا پس از انتقال کاربر به صفحه user.php می توانیم حداکثر زمان مجاز را با زمان آخرین فعالیت او مقایسه کنیم، اگر اختلاف کم تر از صفر بود، پس کاربر زمانی ندارد و باید از نو وارد سیستم شود، در غیر این صورت حداکثر زمان او را برای به فرض 1 ساعت دیگر (3600 ثانیه) تمدید می کنیم، این کار را در ادامه انجام داده ایم.
<?php
//شروع یک نشست
session_start();
//بررسی تنظیم شدن یا نشدن متغیرهای سشن
if (!isset($_SESSION['username']) || !isset($_SESSION['password'])){
//در صورتی که متغیرهای سشن تنظیم نشده باشند، کاربر مجاز به دیدن ادامه صفحه نیست و او را به صفحه اصلی منتقل می کنیم
header("location:index.php");
die();     
}
//بررسی امکان مرا به خاطر بسپار
elseif (isset($_SESSION['remember']) && $_SESSION['remember'] == '1'){
    $login_time=3600;//یک ساعت
    setcookie(session_name(),session_id(),time()+$login_time,("/"));
}
//مقایسه زمان باقی مانده
$old_time = $_SESSION['time_started'];      
$new_time = time();     
$remain_time = $new_time - $old_time;      
$_SESSION['time_remaining'] = $_SESSION['time_remaining'] - $remain_time;      
if ($_SESSION['time_remaining'] > 0) {
    //تمدید مهلت
    $_SESSION['time_started'] = $new_time;     
}
else {
    //زمان کاربر به پایان رسیده است، انتقال به صفحه ورود
    header("location:index.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>وبگو | محیط کاربری اعضای سایت</title>
<!-- http://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    direction:rtl;
    font-size:12px;
}
</style>
</head>
<body>
شما در حال استفاده از بخش کاربری سایت هستید!
</body>
</html>
با کمی دقت در کد بالا و آشنایی با نحوه عملکرد سشن ها در php، به راحتی می توانید فعل و انفعالات صورت گرفته را در مثال بالا تفسیر کرده و با توجه به برنامه خود از آنها استفاده نمائید.
sectionدسته بندی: آموزش کاربردی » MySQL
related مطالب بیشتر:
» نحوه رسم چارت و نمودار آماری با php و mysql
» آموزش ساخت فرم عضویت در سایت با php و mysql
» آموزش حذف گروهی اطلاعات از MySQL با استفاده از چک باکس
» ساخت فید آر اس اس (RSS Feed)، با استفاده از php و mysql
» آموزش ساخت پنل ورود و خروج سایت با php و mysql
commentنظرات (۶۰ یادداشت برای این مطلب ارسال شده است)
نویسنده: سعید
زمان: ۱۸:۵۵:۵۳ - تاریخ: ۱۳۹۱/۰۵/۰۲
سلام آموزشهای سایتتون فوق العاده اند. لطفا با قدرت به کارتون ادامه بدین.
یه سوالی داشتم در مورد php :
من میخوام موقع حذف یک رکورد پایگاه داده ، اول یک کادری ظاهر شود که بپرسد که آیا از حذف مظمئن هستید یا نه ؟ که اگر کابر روی بله کلیک کرد عمل حذف انجام شود؟ چه طوری میشه این کار رو انجام داد ؟
یه سوال دیگه هم دارم من موقعی که کدهای پی اچ پی رو در یک قالب آماده قرار میدم قسمت ساید بار به پایین سقوط میکنه مشکل از چی میتونه باشه ؟ قالب با css و html نوشته شده. ممنون
پاسخ: 
سلام
ممنون از لطف شما، در مورد سوال اول: این کار به طور معمول با ارسال مقادیر به صورت متد get یا post در دو مرحله به همان فایل یا یک فایل دیگر (به فرض با نام delete.php) صورت می گیرد، به فرض لینک اولیه حذف فایل اگر به صورت زیر باشد:
yoursite.com/index.php?action=del&id=4324
در فایل مقصد پس از دریافت مقادیر del از پارامتر action یک لینک دیگر به عنوان تایید چاپ می کنیم به صورت زیر:
yoursite.com/index.php?action=del&id=4324&confirmed=true
با کلیک مجدد کاربر بر روی لینک دوم و بررسی مقادیر پارامتر فرضی confirmed، می توانیم از مطمئن بودن کاربر از حذف اطلاعات اطمینان حاصل کنیم؛ همین کار را از طریق فرم های html و متد post می توان انجام داد، البته انجام صحیح این کار تا حدود زیادی بستگی به تسلط شما بر روی برنامه ای دارد که قصد ویرایش آن را دارید.
در مورد سوال دوم: منظور از قرار دادن کدهای php در قالب چیست؟ php زبان سمت سرور است و تنها خروجی آن در صفحات html نمایش داده می شود، شاید حروف خروجی کد شما در قسمتی بدون فاصله و شکستگی است یا مقادیری به خروجی ارسال می شود که از عرض سایدبار بیشتر است و این باعث تغییر اندازه سایدبار شده و نهایتا به دلیل کمبود فضای در نظر گرفته شده، به پائین سقوط می کند.
رفع دقیق مشکل نیاز به بررسی کد و صفحه مربوطه دارد.
نویسنده: سعید
زمان: ۱۱:۱۵:۱۴ - تاریخ: ۱۳۹۱/۰۵/۰۷
سلام مطلب کاربردی بود.ممنون
ببخشید باز من اومدم با سوال :
دارم یه سایت طراحی میکنم که کاربر بعد از ورود به قسمت کاربریش با صفحه ای مواجه میشود که مشخصات به همراه عکس خود را مشاهده میکند (تا اینجا مشکلی نیست همش درست انجام شده)، حال با کلیک بر روی لینکی در صفحه کاربری به صفحه دیگری میرود که دارای فرمی است که فیلدهای آن را تکمیل کرده و با کلیک بر روی دکمه ثبت به صفحه ثبت در پایگاه منتقل میشود. حال در این صفحه من میخوام غیر از ثبت مقادیر فیلدها که با $_post گرفتم، 2 تا از اطلاعات کاربر هم در بانک اضافه شود. مثلا کد عضویت و نام کاربر. این مقادیر را چگونه باید از سشن دریافت کرد و همراه مقادیر فرم در بانک و در فیلد مربوطه ذخیره کرد؟ ممنون (الان مقادیر فرم درج میشود ولی مقادیر کد عضویت و نام کاربر درج نمیشود) دستورات را به شکل زیر نوشتم :
$code1=$_SESSION['code'];
mysql_connect('localhost','root','');
mysql_select_db("project");
$f2="select * from collegians where collegian_code='$code'";
$g2=mysql_query($f2);
$row2=mysql_fetch_array($g2);
$_SESSION['lname']=$row2['Lname'];
$col_name=$_SESSION['lname'];
$query="insert INTO unitsselect (collegian_name, collegian_code, lesson_name, units, master_name, unterm_id ) values ('{$lname}', '{$col_code}', '{$lesson}', {$unit}, '{$masname}', '{$punit}')";
پاسخ: 
سلام
استفاده از سشن در این مورد ضرورتی ندارد، تنها در صورتی از سشن استفاده می شود که بخواهیم متغیرهای موقتی و حساسی (به طور مثال نام کاربری و کلمه عبور) که مربوط به شناسایی هویت کاربر است در هنگامی که او به سیستم وارد شده بین صفحات کاربری مختلف در دسترس باشند، تا امکان یا عدم امکان دسترسی در هر صفحه بررسی شود یا اعتبار نشست او تمدید گردد.
در خصوص مشکل شما با توجه به اطلاعاتی که قرار داده اید، می توان در قسمت mysql_fetch_array متغیرهایی با مقادیری از ردیف های موجود در جدول collegians ایجاد کرد و از آنها در ادامه استفاده نمود.
به نظر می رسد شما در کار با mysql دچار اشتباهاتی شده اید، این آموزش را ملاحظه کنید:
انتخاب ردیف ها با دستور SELECT FROM در MySQL
نویسنده: علی
زمان: ۱۴:۲۶:۵۸ - تاریخ: ۱۳۹۱/۰۵/۱۴
سلام
لطفا آموزش کد تشخیص انسان از نرم افزار را هم در سایت قرار دهید. مثل همین کد حاصل از عبارت زیر یادداشت. ممنون
پاسخ: 
سلام
ضمن تشکر از پیشنهاد شما، در ادامه آموزش ها و به تدریج به این مطلب نیز خواهیم پرداخت.
نویسنده: فاطمه
زمان: ۱۹:۲۸:۵۲ - تاریخ: ۱۳۹۱/۰۵/۱۵
سلام سایت شما عالیه میخواستم فقط تشکر کنم لطفا ادامه بدین.
پاسخ: 
سلام
نظر لطف شماست.
نویسنده: saeed
زمان: ۲۳:۵۶:۲۶ - تاریخ: ۱۳۹۱/۰۵/۲۸
با عرض سلام و خسته نباشيد و همچنين بابت اين سايت خوب و پر محتوا خيلي ممنون بابت اين فايل هاي كمكي چون خيلي اين فايل ها بدرد من ميخورن اگه كد ساختن آمار بازديد در سايت خودتون بزاريد با ديتابيس خيلي ممنون ميشيم، يه عضويت هم بيزاريد كه بتونيم مطالب روز دنيا رو بگريم از سايت شما با تشكر از سايت خوبتون
پاسخ: 
سلام
ممنون، نظر لطف شماست.
در مورد مطالب و آموزش های درخواستی طبق روال و آهسته و پیوسته پیش می رویم، به موضوع آمار بازدیدها نیز در آینده خواهیم پرداخت، در مورد عضویت و خبرنامه، بهترین امکان برای اطلاع از به روز رسانی سایت، استفاده از فید آر اس اس آن است.
نویسنده: نجمه
زمان: ۱۲:۵۹:۱۹ - تاریخ: ۱۳۹۱/۰۶/۰۵
سلام سایتتون واقعا عالیه بهتون تبریک میگم.من تازه کار هستم دارم اموزش میبینم اما خیلی مشکل دارم .بعضی از کدهارو درک نمیکنم .لطفا اگه میشه کلاس login و ثبت فرم را بذارید
پاسخ: 
سلام
واقعیت مطلب این است که login یا ثبت نام چیزی جداگانه ای نیست و مبتنی بر آشنایی و مهارت کلی شما با PHP است، لذا بهترین روش برای اینکه در کدنویسی دچار مشکل نشوید این است که از ابتدا مباحث را با مثال یاد بگیرید، برنامه نویسی در بیشتر مواقع بدون دانستن مقدمات کار، ممکن است پیچیده به نظر برسد.
نویسنده: rojyar
زمان: ۱۳:۱۰:۲۴ - تاریخ: ۱۳۹۱/۰۷/۱۵
سلام واقعآ عالی بود...
میشه درخواست کنم که اگه امکان داره مراحل ساخت یک سایت کوچک با php و mysql رو آموزش بدید که داینامیک باشه؟
درحد مثلآ ایجاد صفحه ی جدید و مثلآ مدیریت اعضا و یه بخش مثلآ خبرهای سایت
اگه این رو آموزش بدید در قالب یک سایت کوچک، مطمئنآ ما یاد خواهیم گرفت چه طور یه سایت با php طراحی کنیم
در واقع انجام برنامه نویسی درقالب پروژه خیلی مفید هستش..
لطف کنید این زحمت رو برای متحمل بشید، انشاالله اجرتو با خدا و بزرگان اهل بیت....
پاسخ: 
سلام
سپاس از نظر لطف و پیشنهاد شما، البته مواردی که عنوان کردید در قالب یک مطلب نمی گنجند، سعی می کنیم آموزش های مورد نیاز را برای طراحی یک سایت با php در قالب مطالب جداگانه ارائه دهیم تا از کنار هم نهادن آنها بتوانید ایده هایتان را در این خصوص به واقعیت تبدیل کنید.
نویسنده: علی
زمان: ۱۳:۲۷:۵۷ - تاریخ: ۱۳۹۱/۰۹/۰۸
با عرض سلام و خسته نباشید
سایت شما بسیار عالی می باشد و مطالب بسیار آموزنده ای در آن می توان یافت
امیدوارم که خداوند پاداش زحمتتان را بدهد.
پاسخ: 
سلام
ممنون از نظر لطف شما.
نویسنده: ansherli
زمان: ۲۱:۰۲:۴۷ - تاریخ: ۱۳۹۱/۱۰/۲۶
سلام
ببخشید من می خواستم بدونم فرق include با تابع header در چی هستش؟
من وقتی برای header بعد یا قبلش echo میزارم اجرا نمیشه ولی با include کاملا درست اجرا میشه!
//بررسی معتبر بودن اطلاعات ارسالی کاربر
//نام کاربری
if (!isset($username) || $username == ''){
include("login.php");
echo "<font color='#FFFFFF'><table align='center' ><tr><td>!فیلد نام کاربری نباید خالی باشد</td></tr></table></font>";
$check_error = 1;
}
//کلمه عبور
elseif (!isset($password) || $password == ''){
include("login.php");
echo "<font color='#FFFFFF'><table align='center'><tr><td>!فیلد کلمه عبور نباید خالی باشد</td></tr></table></font>";
$check_error = 1;
}
کدهام رو براتون ارسال می کنم . می خوام بببینم مشکلی ایجاد نمی کنه اگه از include استفاده کنم ؟ چطور میشه از همین header استفاده کرد و echo ها هم اجرا بشه؟
من بعضی از کدها رو توی session.php قرار دادم که با
<?php include("session.php");?>
فراخوانی می کنم توی صفحات
کدهام:
http://uplod.ir/bjn7zcj2h3yj/webgoo.zip.htm
ممنون میشم راهنماییم کنید.
پاسخ: 
سلام
تابع header و include کاملا متفاوت هستند، همان طور که از نام header پیداست برای ارسال سربرگ های HTTP به مرورگر از آن استفاده می شود (به طور مثال انتقال به یک صفحه دیگر، ارسال کدهای وضعیت HTTP مانند کد 404، 301 و...) اما از include برای وارد کردن کدهای php درون یک فایل php دیگر و دسترسی آن فایل به کدها (ترکیب فایل ها) استفاده می شود، به همین دلیل وقتی از دستور زیر استفاده می کنید و این دستور اجرا می شود:
header("location:login.php");
به محض اجرا به فایل login.php منتقل شده و سایر دستورات php نادیده گرفته می شوند.
نویسنده: عادل
زمان: ۲۲:۵۹:۴۷ - تاریخ: ۱۳۹۱/۱۱/۰۷
سلام ...
دیگه نامردی بود اگه پیام نمیذاشتم ...
مطالب بسیار عالیست ..
خیلی استفاده کردیم ...
تشکر از زحمات شما.
پاسخ: 
سلام
نظر لطف شما است.
نویسنده: reza
زمان: ۲۰:۴۷:۵۶ - تاریخ: ۱۳۹۱/۱۱/۲۰
با سلام
آقا سایتتون عالیه فقط 1 مورد این که وقتی بخوایم که کاربر بعد از ورود به سایت به صفحه شخصی خودش هدایت بشه کدش چی هست؟
یعنی برای هر کاربر 1 صفحه جداگانه با محتویات جداگانه.
1 مورد دیگه این که کدی وجود داره که کاربر به صورت مستقیم نتونه از مرورگر به یه صفحه دسترسی پیدا کنه؟ یعنی اخطار بده بعد بگه اول باید لوگین کنی. ممنونم
راستی خیلی واجبه.
پاسخ: 
سلام
برای مواردی که می خواهید انجام دهید، کدی آماده وجود ندارد، باید با برنامه نویسی php (مخصوصا بخش توابع هدر، سشن و کوکی) آشنا باشید و کدها را مطابق سلیقه خودتان بنویسید، در آموزش های کاربردی php و mysql در این خصوص نمونه کدهایی آموزش داده شده است، اما پیش از استفاده باید با مقدمات کار آشنا باشید.
نویسنده: ehsan
زمان: ۱۸:۰۲:۴۰ - تاریخ: ۱۳۹۱/۱۲/۲۲
سلام
setcookie(session_name(),session_id(),time()+$login_time,("/"));
میشه در مورد
session_name() , session_id()
توضیح بدید.
پاسخ: 
سلام
هنگامی که از سشن (تابع session_start) در کدهای خود استفاده می کنیم (اطلاعات سشن ها به صورت فایل، در پوشه ای در سرور ذخیره می شوند)، هر سشن در php چند پارامتر در خود دارد، یکی از این پارامترها نام نشست است که با تابع session_name در دسترس است (در حالت پیش فرض معمولا نام سشن PHPSESSID است)، پارامتر دیگر مقادیر سشن است که با تابع session_id قابل چاپ یا استفاده است (این مقادیر معمولا یک کد درهم یا hash است)، حال وقتی می خواهیم یک کوکی در مرورگر کاربر ایجاد کنیم (با تابع setcookie)، از این مقادیر برای تنظیم پارامترهای کوکی نیز می توانیم استفاده کنیم.
دقت کنید که سشن در سرور و کوکی در مرورگر ایجاد می شود.
نویسنده: ehsan
زمان: ۰۹:۲۰:۵۳ - تاریخ: ۱۳۹۱/۱۲/۲۶
با سلام. همه مراحل را قدم به قدم اجرا کردم.
موقع لاگین شدن این پیغام ظاهر میشود.
Notice: Undefined variable: check_error in
پاسخ: 
سلام
پیغام ظاهر شده در واقع یک راهنمایی است و دلیل آن به تنظیمات نمایش خطا در php ارتباط دارد، برای رفع آن می توانید یک مقدار پیش فرض برای متغیر check_error تعریف کنید، این کار برای آموزش فعلی انجام شد، می توانید کدهایتان را مطابق آخرین تغییرات ویرایش کنید.
نویسنده: سعید زارع
زمان: ۱۲:۳۲:۵۴ - تاریخ: ۱۳۹۲/۰۲/۰۹
سلام دوست عزیز
ای کاش اموزش هاتون به صورت فیلم می بود
بخش های متنوع و خوبی دارید فقط خیلی سنگینه واسه کسی که تا حالا زیاد کار نکرده
اگه میشد این اموزش ها رو به صورت تصویری با دریم ویور و xwamp اموزش میدادین خیلی راحت تر میتونستیم یاد بگیریم
پاسخ: 
سلام
آموزش های کاربردی با فرض آشنایی کاربران با مقدمات کار تهیه می شوند، اگر به نظر سخت یا پیچیده است، باید به مقدمات مبحث رجوع کنید، در مورد آموزش به صورت فیلم، متاسفانه به دلیل محدودیت های فنی امکان پذیر نیست ضمن اینکه این نوع آموزش برای زبان های برنامه نویسی روش متداولی نیست، چرا که اصولا یادگیری برنامه نویسی نیاز به نوشتن و برررسی کد دارد و صرف دیدن و شنیدن کفایت نمی کند.
نویسنده: mahdi
زمان: ۱۵:۲۷:۲۲ - تاریخ: ۱۳۹۲/۰۴/۲۲
با سلام ...
ابتدا تشکر از آموزش های خوب و با ارزشتون :
من با استفاده از php یک فرم ثبت نام و ورود کاریر درست کردم که کاربر پس از ورود ، به پنل کاربری خودش منتقل میشه .
حالا اگه ما بخوایم موقعی که کاربر وارد پنل کاربریش شد اطلاعات مربوط به خودش رو ببینه ، باید چطوری بنویسیم کدش رو ؟
یه راه حلی به ذهنم اومد استفاده از سسشن های موقع ورود اما فقط برای user و pass که موقع ورود خواسته میشن کار ساز هست و بقیه column های دیتابیس مثل کشور یا ... رو نمیده ! باید چیکار کرد ؟ آیا باید به دیتابیس وصل شد و با استفاده از توابع مخصوص خودش column ها رو گرفت ؟ لطفا در صورت راهنمایی کد آن را هم قرار دهید .
با تشکر
پاسخ: 
سلام
راه حل شما صحیح است، یعنی زمانی که نام کاربری و کلمه عبور را با دیتابیس چک می کنید، در صورت صحیح بودن، سایر اطلاعات را نیز استخراج کرده و در سشن آی دی هایی ذخیره کنید (روش سریع تر)، یا اینکه برای هر صفحه، این کار را مجددا با استفاده از به فرض آی دی کاربر که در یک سشن آی دی وجود دارد انجام دهید، به طور مثال:
<?php
//پرس و جوی فرضی
$result = mysql_query ("SELECT name, family, age FROM register WHERE username = '$username' AND password = '$password'")
or die(mysql_error());
while($row = mysql_fetch_array($result)){
$_SESSION['name'] = $row['name'];
$_SESSION['family'] = $row['family'];
$_SESSION['age'] = $row['age'];
}
//گرفتن خروجی فرضی
echo $_SESSION['name'];
?>
paged صفحه 1 از 4




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

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

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