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>
<!-- https://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>
<!-- https://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 مطالب بیشتر:
» هوشمند سازی پنل ورود و خروج سایت
» تعویض کد امنیتی Captcha با Ajax و MySQL
» آموزش ساخت فرم تماس با PHP و MySQL
» نحوه رسم چارت و نمودار آماری با PHP و MySQL
» ساخت فید آر اس اس (RSS Feed) با استفاده از PHP و MySQL
commentنظرات (۲۲۹ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: عاطفه قنبری
زمان: ۱۱:۴۰:۱۵ - تاریخ: ۱۳۹۱/۰۸/۲۷
سلام توضیحات خیلی عالین لطفا در مورد سبد خرید نیز توضیح دهید. باتشکر از شما
پاسخ: 
سلام
ممنون از پیشنهاد خوب شما، در فرصت مناسب در این خصوص نیز خواهیم نوشت.
نویسنده: علی
زمان: ۱۳:۱۹:۵۳ - تاریخ: ۱۳۹۱/۰۹/۰۳
سلام
لطفا نحوه ایجاد پنل ارسال مطلب برای سایت را آموزش دهید.
ممنون
پاسخ: 
سلام
ممنون از پیشنهاد خوب شما، به لیست مطالبی که در آینده منتشر خواهیم کرد افزوده شد!
نویسنده: سهیل
زمان: ۱۱:۴۷:۵۴ - تاریخ: ۱۳۹۱/۰۹/۲۰
سلام من چه طوری می تونم یک کاری کنم که کاربر بتونه هم با ایمیل وارد شه هم با یوزر نیم ؟؟؟
پاسخ: 
سلام
برای این کار ابتدا باید ستون مربوط به ایمیل کاربر را هنگام ساخت جدول ثبت نام در MySQL تعریف کنید، سپس در هنگام تطبیق اطلاعات کاربر از پرس و جوی نمونه زیر استفاده نمائید:
$result = mysql_query ("SELECT * FROM register WHERE username = '$username' AND password = '$password' OR username = '$username' AND email = '$username' ");
نویسنده: sanaz
زمان: ۱۶:۰۹:۵۹ - تاریخ: ۱۳۹۱/۰۹/۲۶
سلام
میبخشین چه جوری کاری کنم که کاربر اگه سه بار رمز و اشتباه وارد کرد پاس داده شه به کپچا؟ یعنی کپچا باید پایینش؟ کپچا رو بلدم فقط شرط 3 بار غلط زدن پسورد و نمی دونم
پاسخ: 
سلام
این نوع موارد بستگی به خودتان دارد و اینکه تا چه میزان با برنامه نویسی php آشنا باشید، به طور مثال اگر با سشن ها کار کرده باشید می توانید با وارد کردن پسورد اشتباه، یک سشن با مقادیر به فرض 1 تنظیم کنید و در خطاهای بعدی آن را افزایش دهید و با دستورات شرطی if و... بررسی کنید، اگر تعداد خطا (مقادیر سشن) از 2 بزرگتر بود کد امنیتی نشان داده شود یا اینکه همین کار را از طریق دیتابیس انجام دهید.
نویسنده: maasoum
زمان: ۲۱:۰۹:۳۱ - تاریخ: ۱۳۹۱/۱۰/۰۳
با سلام. ممنون از توضیحات خوبتون.
ببخشید ولی کد login که گفتید واسه من جواب نمیده!!!
هرچی کد امتحان می کنم همشون error میدن. معمولا error هاش مربوط به session هست و mysql_num_rows. در حالی که اطلاعات من توی بانک ثبت هست.
و اینکه اگه قسمت آخر به جای چاپ " شما به وب سایت وارد شده اید " بخوایم یه صفحه html واسمون باز بکنه از چه دستوری باید استفاده بکنیم؟ (header)؟؟؟
و یه چیز دیگه اینکه توی کد login یوزر و پسورد مدیر رو جدا چک بکنه؟ بگه اگه فلان یوزر یا فلان پسورد بود صفحه مدیر رو باز بکنه؟
تو رو خدا هر چه زودتر جوابم رو بدین. ضروریه. ممنونم
پاسخ: 
سلام
برای رفع مشکلات باید ببینید خطای دریافتی چیست و کجای کار را اشتباه انجام می دهید، در مورد سشن اگر خطای Cannot modify header information - headers already sent را دریافت می کنید، یعنی قبل از تابع session خروجی به مرورگر ارسال می شود، این خروجی می تواند کاراکترهای مرئی یا حتی کاراکترهای نامرئی (BOM) باشد، برای اطمینان از برنامه هایی مانند ++Notepad استفاده و از قسمت Encoding کاراکترهای نامرئی BOM را حذف و فایل را مجددا ذخیره نمائید.
اما در مورد سایر خطاهای مروبط به mysql، باید کدتان را چک کنید، از اتصال و متغیر های اتصال گرفته تا پرس و جو و... مطمئن شوید که همه چیز درست است (که اگر این طور باشد نباید خطایی نمایش داده شود)، اینکه اطلاعات ثبت باشد کافی نیست، پرس و جویی که انجام می دهید هم باید همواره شیوه دستور صحیح و استاندارد داشته باشد.
برای انتقال به هر لینکی در php می توانید از توابع header و سربرگ location مطابق نمونه که در آموزش آمده استفاده کنید.
در مورد سوال آخر کافی است به فرض با دستورات شرطی (if، else و...) نام کاربری را بررسی کنید، اگر به طور مثال برابر admin بود یک قسمت کد اجرا شد و اگر نبود بخشی دیگری از کد، یا اینکه یک ستون دیگر در دیتابیس بسازید با نام فرضی mode یا access یا ... و برای کاربران سطح دسترسی تعریف کنید، سپس هنگام وارد شدن اگر کاربر سطح دسترسی مورد نظر را داشت، یک قسمت کد اجرا شود و...
نویسنده: ansherli
زمان: ۰۰:۲۱:۴۱ - تاریخ: ۱۳۹۱/۱۰/۱۳
سلام
من لاگین رو طبق کدهای شما نوشتم ولی از خط
if ($check_error != 1 && $check == 'sended')
خطا میگیره البته وارد سایت میشه ولی همراه با خطا!
خطا:
Notice: Undefined variable: check_error in C:\wamp\www\form\login.php on line 46
شما به سایت وارد شده اید!
کدهام:
http://uplod.ir/ljyl8vuqlx1x/webgoo.zip.htm
ممنون میشم راهنماییم کنید
پاسخ: 
سلام
خطاهای دریافتی از نوع Notice در واقع یک یادآوری هستند و به معنی خطای حقیقی نیستند، در اینجا به این خاطر که متغیر check_error از ابتدا و قبل از بررسی شرطی با if تعریف نشده است، مفسر php در برخی نسخه ها پیام Undefined variable را نشان می دهد، برای رفع مشکل کافی است برای متغیر check_error قبل از بررسی با if یک مقدار پیش فرض در نظر بگیرید، مثال:
<?php
//شروع یک نشست
session_start();
//دریافت و تنظیم متغیرهای ارسال شده توسط کاربر
$username = $_POST['username'];
$password = $_POST['password'];
$check = $_POST['check'];
$check_error = 0;
?>
نویسنده: ansherli
زمان: ۱۸:۴۶:۱۵ - تاریخ: ۱۳۹۱/۱۰/۱۳
خیلی ممنونم از راهنمایی خوبتون
نویسنده: حیاتی
زمان: ۱۰:۱۷:۰۳ - تاریخ: ۱۳۹۱/۱۰/۲۱
سلام و خسته نباشید.
من در سایتم صفحات مختلفی هست و در سمت راست همه آنها فرم ورود و ثبت نام هست. بهترین راه حل برای اینکه کاربر پس از وارد کردن نام کاربری و پسوردش در همون صفحه باقی بمونه و مثلا به صفحه اول نره چیه؟ فرستادن آدرس صفحه به صورت پنهان در فرم به ذهنم رسید ولی خیلی سخت میشه.
پاسخ: 
سلام
این موضوع بستگی به ساختار برنامه شما دارد، یک راه حل هم می تواند ذخیره آدرس صفحه فعلی در یک سشن id و ریدایرکت کردن کاربر با دستورات header پس از لاگین به آن آدرس باشد.
نویسنده: آیلین
زمان: ۱۰:۲۷:۲۱ - تاریخ: ۱۳۹۱/۱۱/۱۰
خیلی واضح و روشن مطالب را توضیح میدهید. واقعا ممنون.
اگر ممکنه قسمت "رمز عبور را فراموش کرده ام" را هم بگین.
یا اگه قبلا گفتین ، راهنمایی کنید لینکش چیه.
پاسخ: 
این مطلب به صورت مجزا منتشر نشده و در آموزش های آینده به آن خواهیم پرداخت، اما مواردی که به آن نیاز دارید، کمی آشنایی با php و mysql و همچنین ارسال ایمیل با php است که در آموزش های کاربردی، مطالب آنها موجود است.
نویسنده: ایمان
زمان: ۲۱:۰۳:۳۲ - تاریخ: ۱۳۹۱/۱۱/۱۱
مرسی از آموزش خوبتون
یک کدی در کامنت ها نوشتید برا اینکه دکمه خروج وقتی ظاهر شه که کاربر لوگین کرده، من این کد رو که مینویسم و وارد سایت میشم با همچین پیغامی مواجه میشم:
Warning: Cannot modify header information - headers already sent ...
پاسخ: 
سلام
این مشکل قبلا، چه در آموزش و چه در یادداشت ها توضیح داده شده، باید قبل از استفاده از توابع سشن یا توابع هدر، از ارسال هر نوع خروجی (اعم از مرئی و کاراکترهای نامرئی BOM) اجتناب کنید.
نویسنده: zaher
زمان: ۲۰:۵۱:۵۷ - تاریخ: ۱۳۹۱/۱۱/۱۲
سلام چرا wampserver من هر چند خذف میکنم و دوباره نصب میکنم باز از رنگ نارنجی به سبز تبدیل نمیشه؟ تو رو خدا زود جواب من رو بدید
پاسخ: 
سلام
این مشکل معمولا به دلیل اشغال بودن پورت 80 توسط برنامه های دیگر مانند Skype رخ می دهد، اگر این برنامه یا برنامه ای که از ارتباط تحت وب استفاده می کند در سیستم شما فعال است، به طور کامل از آنها خارج شوید و سپس تمام سرویس های wampserver را از نو شروع کنید، نکته دیگر اینکه wampserver نیاز به فریم ورک دات نت مایکروسافت (ترجیحا آخرین نسخه) و Microsoft Visual C++ 2010 Redistributable Package یا همان فایل vcredist_x86.exe دارد که باید قبلا این برنامه ها را نصب کرده باشید.
نویسنده: سینا
زمان: ۱۳:۳۸:۲۲ - تاریخ: ۱۳۹۱/۱۱/۱۴
با درود
ممنون از سایت خوبتون
یه پرسشی دارم :
می خواستم بدونم چرا برای پسورد از md5 استفاده کردین ولی برای نام کاربری از یه دستور دیگه.
یعنی میشه برای هر دوتاش از md5 اسفاده کرد؟
پاسخ: 
سلام
اینکه از چه روشی استفاده کنید بستگی به خود شما و میزان اهمیت کار دارد، به طور مثال می توان حتی بدون رمزی کردن پسورد آن را در دیتابیس ذخیره کرد، اما به هر دلیل اگر فردی به اطلاعات دیتابیس دسترسی پیدا کند تمام موارد به راحتی قابل خواندن است، نکته دیگر اینکه تابع md5 یک عبارت رمزی بدون بازگشت تولید می کند، یعنی فقط خود کاربر میداند که رمزش چیست و قابل بازیابی نیست (همان پسورد قابل بازگشت نیست و در صورت لزوم باید با رمز دیگری جایگزین شود)، تابع mysql_real_escape_string نقشی در رمزی کردن ندارد و صرفا جهت جلوگیری از نفوذ به دیتابیس استفاده می شود، در واقع از آنجایی که نام کاربری معمولا اهمیت کمتری دارد و حتی در سیستم ممکن است در جاهای مختلف نمایش داده شود، نیازی به رمزی کردن نیست، اما اگر لازم باشد محدودیتی برای این کار وجود ندارد.
نویسنده: سجاد
زمان: ۲۳:۳۱:۴۰ - تاریخ: ۱۳۹۱/۱۱/۲۸
سلام خسته نباشید
می خواستم بدونم که چطور میشه اگه اطلاعات کاربری اشتباه وارد شده باشه و پیغام خطا داده شده هست. مقادیر داخل تکست باکس خالی نمی شن!
پاسخ: 
سلام
هرچند سوال شما چند وجهی است و منظورتان دقیقا مشخص نیست، اما اگر منظور خالی نشدن عبارات وارد شده کاربر در صورت صحیح نبودن یا پر نشدن تمام فیلدها است، کافی است برای پارامتر value فیلدها، با php، مقادیر ارسال شده کاربر را به همراه فرم چاپ کنید، به فرض:
<input name="username" id="user" type="text" maxlength="255" value="<?php echo $username; ?>" />
که البته برنامه شما باید طوری کدنویسی شده باشد که در صورت اشتباه، فرم html را خروجی دهد.
نویسنده: سعید
زمان: ۰۸:۵۷:۱۲ - تاریخ: ۱۳۹۱/۱۲/۰۶
سلام عالی و خوب ممنون دم شما گرم
نویسنده: حمید
زمان: ۱۱:۱۸:۱۹ - تاریخ: ۱۳۹۱/۱۲/۲۱
سلام من یه سیستم نوبت دهی آنلاین طراحی کردم میخوام نوبت دهی رو از ساعت 10 شب شروع کنه و 6 صبح تمام بشه
لطفا اگه میشه کد php رو بذارید
ممنون
پاسخ: 
سلام
انجام این گونه موارد تنها در قالب سفارش های برنامه نویسی امکان پذیر است، لطفا طرح خود را با یک برنامه نویس وب در میان بگذارید.
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ خاصی داده نخواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لذا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.




7 × 9
 refresh
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشد که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
آخرین دیدگاه ها
form adel
در:
سلام با تشکر از سایت خوب شما. یه سوال داشتم چگونه تمام این کدها را در جاوا اسکریپت همزمان قرار دهیم. من مثلا دستور این...
۲۱:۲۵:۴۰ ۱۳۹۸/۰۸/۲۴

form یه سوال کننده
در:
سلام. ببخشید چطور میشه ایمیل هایی رو میفرستن که ریپلای زدن رو ایمیلی که از طرف ما نبوده بیشتر تو تبلیغات دیدم امیدوارم منظورم و...
۰۳:۲۳:۰۸ ۱۳۹۸/۰۸/۲۴

form پرتو
در:
با عرض سلام و خسته نباشید امیدوارم حالتون خوب باشه من دو سه سال پیش وبلاگم رو حذف کردم ایا امکانش هست برگرده؟ ادرس...
۱۴:۵۵:۵۲ ۱۳۹۸/۰۸/۲۰

form علی
در:
سلام من نمی تونم html tag رو چطور در وبلاگم قرار بدم وبلاگم اینه
tagtak.blog.ir
۱۰:۲۳:۳۴ ۱۳۹۸/۰۸/۲۰

form حمید
در:
سلام. خسته نباشید. من میخاستم استایل فیلدهای فرمم رو تغییر بدم منتهی نمیدونم از چه کدهایی باید استفاده کنم. برای اینکه فرمی به شکل...
۱۰:۳۶:۱۹ ۱۳۹۸/۰۸/۱۹

form سمیه
در:
سلام ممنون بابت آموزش مفیدتون توی تگ ها هرچیزی که در تگ head قرار بگیره نمایش داده نمیشه، اما ممنون میشم...
۲۰:۴۹:۲۳ ۱۳۹۸/۰۸/۱۷

form استادمجازی
در:
سلام. از ادمین عزیز و همگی دعوت می کنم آموزش های خوبتون را بصورت آموزش ویدیویی یا صوتی و... در سایت ostadmajazi.com استادمجازی ...
۲۲:۱۲:۲۳ ۱۳۹۸/۰۸/۱۳

form mohamad
در:
سلام و خسته نباشید ، توی فرمی که ساختم چند تا drop down دارم که میخوام با php براشون شرط بذارم به طوری...
۱۳:۵۱:۳۴ ۱۳۹۸/۰۸/۱۰

form رضا
در:
خسته نباشید این جلسه آخر html بود؟؟؟؟
۰۱:۱۵:۰۷ ۱۳۹۸/۰۸/۱۰

form امیرمحمد
در:
سلام و خسته نباشید استاد بنده میخوام بین دو کد زیر که مشخص کردم رو به دست بیارم
// ---------------------set سلام...
۱۹:۳۰:۵۳ ۱۳۹۸/۰۸/۰۸

form حجت
در:
خیلی ممنونم از لطف شما. اوکی شد.
۱۰:۲۸:۳۵ ۱۳۹۸/۰۸/۰۶

form میلاد
در:
آشنایی نسبی با css, php و ajax دارم و نمیخام از library های موجود در نت استفاده کنم. خواستم با همین متد که انصافا روان...
۲۳:۲۲:۵۵ ۱۳۹۸/۰۸/۰۵

form عرفان
در:
با سلام. مدتی بود که بدلایل مشکلات زیاد نتونستم به وبلاگم رسیدگی کنم ولی وقتی برگشتم میبینم که هزاران بازدید داشتم و همشونم به زبان...
۲۲:۴۹:۴۴ ۱۳۹۸/۰۸/۰۵

form raha
در:
سلام وقتتون بخیر ببخشید علامت @ در کل به چه معناست ممنون میشم پاسخ دهید
۲۰:۱۲:۵۹ ۱۳۹۸/۰۸/۰۵

form میلاد
در:
باسلام تشکر از مطالب روان و پرکاربردتان. در خصوص آموزش مذکور، نحوه و ترفند نمایش محور عمودی در سمت چپ نمودار (مشابه...
۰۲:۳۸:۴۰ ۱۳۹۸/۰۸/۰۵