PDA

View Full Version : سوال: امنيت سايت



ravand
شنبه 09 اردیبهشت 1391, 19:42 عصر
سلام
از دوستان ميخوام دو تا كتاب خوب براي افزايش امنيت سايت بهم معرفي كنند.
يه كتاب كه براي امنيت در php باشه. سختم توضح نده . يه چيزي كه ادم حاليش بشه. :لبخند:
متشكرم.

djsaeedkhan
شنبه 09 اردیبهشت 1391, 20:01 عصر
سلام
هر چه بیشتر به سایت های خارجی رجوع کنی بهترس
یه تشکر کن از عدد 666 بیای بیرون

MMSHFE
یک شنبه 10 اردیبهشت 1391, 00:32 صبح
اگه حوصله خوندن e-Bookهاي لاتين رو دارين، از سايت flazx.com اينها رو دانلود كنيد:
Pro PHP Security
Securing PHP Web Applications
Wiley Secure PHP Development
Essential PHP Security
اگر هم كتاب فارسي ميخواين، كتاب امنيت در PHP نوشته آقاي اميرحسين استخريان منبع خيلي خوبي هست.
موفق باشيد.

Abalfazl
یک شنبه 10 اردیبهشت 1391, 06:28 صبح
مقالات امنیت PHP

estakhrian.blogfa.com

Hamid.RDN
یک شنبه 10 اردیبهشت 1391, 17:39 عصر
این سایتو حتما ببین

http://phpsec.org

ravand
دوشنبه 11 اردیبهشت 1391, 10:10 صبح
من ميخواستم يه نكته اي رو عرض كنم.
جديدا سايت من هك شده . با اينكه من رمزم رو با md5 رمزگذاري كردم با اين حال طرف تونسته سايت منو هك كنه. درسته كه نتونسته به كنترل پنلش وارد بشه ولي يه صفحه داخل كنترل پنلم ايجاد كرده . با يه پيام.
خب وقتي هكر به اين راحتي تونسته اين كار رو بكنه ديگه نيازي به رمز هم نداره. بايد اينطور مواقع چيكار كرد؟:لبخند:

رضا قربانی
دوشنبه 11 اردیبهشت 1391, 11:20 صبح
دنبال کتاب آقای امیرحسین استخریان بگرد.

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

djsaeedkhan
دوشنبه 11 اردیبهشت 1391, 11:44 صبح
من ميخواستم يه نكته اي رو عرض كنم.
جديدا سايت من هك شده . با اينكه من رمزم رو با md5 رمزگذاري كردم با اين حال طرف تونسته سايت منو هك كنه. درسته كه نتونسته به كنترل پنلش وارد بشه ولي يه صفحه داخل كنترل پنلم ايجاد كرده . با يه پيام.
خب وقتي هكر به اين راحتي تونسته اين كار رو بكنه ديگه نيازي به رمز هم نداره. بايد اينطور مواقع چيكار كرد؟:لبخند:

کتاب ها به کنار
ببین کجا ها بدون دسترسی بودن
ببین جایی فرم آپلود داشتی و قرار بوده فقط برای خودت باشه
ببین ورودی و خروجی های سایت رو چک کردی
همچنین ببیین بر اساس حملات مختلف فایل هات مقاوم هستن یا نه
اینم لینکش http://barnamenevis.org/showthread.php?281805-%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D8%AD%D9%85%D9%84%D9%87-%D9%87%D8%A7%DB%8C-%D9%86%D9%81%D9%88%D8%B0-%D9%88-%D8%B3%D9%88%D8%A1%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D 8%AF%D9%87-%D8%A7%D8%B2-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D9%88%D8%A8
حالا بگو چه پیغامی گذاشته؟؟

djsaeedkhan
دوشنبه 11 اردیبهشت 1391, 11:46 صبح
من ميخواستم يه نكته اي رو عرض كنم.
جديدا سايت من هك شده . با اينكه من رمزم رو با md5 رمزگذاري كردم با اين حال طرف تونسته سايت منو هك كنه. درسته كه نتونسته به كنترل پنلش وارد بشه ولي يه صفحه داخل كنترل پنلم ايجاد كرده . با يه پيام.
خب وقتي هكر به اين راحتي تونسته اين كار رو بكنه ديگه نيازي به رمز هم نداره. بايد اينطور مواقع چيكار كرد؟:لبخند:

راستی یه سری هم به سایت آشیانه بزن ببین اونجام می تونی چیزی گیر بیاری یا نه

MMSHFE
دوشنبه 11 اردیبهشت 1391, 13:57 عصر
دوست عزیز اینطور که من فهمیدم شما بخاطر مشکلات جدی در طراحی هک شدین. مثلاً Escapeنکردن اطلاعاتی که قراره روی دیتابیس اعمال بشن. قرارندادن مقادیر داخل کوئریها داخل کوتیشن و شرط WHERE داخل پرانتز، دریافت مقادیر ازطریق آرایه GET و... سایت شما رو به میزان بسیار زیادی نفوذپذیر کرده. بنابراین، نمیشه گفت هک شدین. بهتره بگیم خودتون هکر رو به داخل سایتتون راه دادین. برای رفع این مشکلات هم باید به مباحثی مثل Escapeکردن، تعیین اعتبار ورودیهای کاربر، عدم اعتماد به اطلاعات واردشده بخصوص از روش GET و... بیشتر بپردازین. بعلاوه اینهمه داریم میگیم استفاده تنها از MD5 کافی نیست و باید از روشهای امن تر مثل salt و pepper و توابعی مثل sha و هش کردن چندباره و... استفاده بشه.
موفق باشید.

MostafaEs3
دوشنبه 11 اردیبهشت 1391, 14:10 عصر
هی من به این محمدرضا میگم هی قبول نمیکنه ! هکر با استفاده از Sql injction یوزر پسورد رو از توی دیتابیس کشید بیرون .. خب برای جلوگیری باید کاری کنیم که اگه توی id چیزی بجز عدد وارد شده بود طرف رو بندازه بیرون

ravand
سه شنبه 12 اردیبهشت 1391, 15:22 عصر
دوست عزیز اینطور که من فهمیدم شما بخاطر مشکلات جدی در طراحی هک شدین. مثلاً Escapeنکردن اطلاعاتی که قراره روی دیتابیس اعمال بشن. قرارندادن مقادیر داخل کوئریها داخل کوتیشن و شرط WHERE داخل پرانتز، دریافت مقادیر ازطریق آرایه GET و... سایت شما رو به میزان بسیار زیادی نفوذپذیر کرده. بنابراین، نمیشه گفت هک شدین. بهتره بگیم خودتون هکر رو به داخل سایتتون راه دادین. برای رفع این مشکلات هم باید به مباحثی مثل Escapeکردن، تعیین اعتبار ورودیهای کاربر، عدم اعتماد به اطلاعات واردشده بخصوص از روش GET و... بیشتر بپردازین. بعلاوه اینهمه داریم میگیم استفاده تنها از MD5 کافی نیست و باید از روشهای امن تر مثل salt و pepper و توابعی مثل sha و هش کردن چندباره و... استفاده بشه.
موفق باشید.
هيچ كدوم از اين مطالبي كه شما فرمودين براي من آشنا نيست.
اگه يه مثال يه نفر پيدا بشه براي هر كدوم از اينا بزنه خوبه.
فقط اين روش get رو ميدونم. كه من براي گت توي جستجوي سايتم استفاده كردم.

ravand
چهارشنبه 13 اردیبهشت 1391, 20:37 عصر
من فهميدم دليل هك شدن سايتم چي بوده.
اين كدها رو نگاه كنيد:

<?php
$con=mysql_connect('localhost','root','')or die(mysql_error());
$db=mysql_select_db('database')or die(mysql_error());
mysql_query("SET CHARACTER SET utf8",$con);
$url=$_SERVER['REQUEST_URI'];
$last=$_SERVER['HTTP_REFERER'];
$ip=$_SERVER['REMOTE_ADDR'];
date_default_timezone_set('Asia/Tehran');
$date=date('Y-m-d h:i:s');
$vared="INSERT INTO jadval (`url`,`last`,`ip`,`date`) VALUES ('$url','$last','$ip','$date')";
$tab=mysql_query($vared,$con) or die(mysql_error());
if($tab==false){
die("error with query\r\n");
}
$num=mysql_affected_rows($con);
mysql_close($con);
?>
اين كدهاي آمارگير سايت من هست. كه به همين صورت و بدون هيچ امنيتي روي سايت من قرار گرفته بود. كه هر بار صفحه ي سايتم رفرش ميشد اين كد يه آمار مي انداخت.
وقتي من وارد قسمت آمارگير سايتم شدم كه آمار رو ببينم وقتي صفحه كاملا لود ميشد و تمام امار رو نشون ميداد يه دفعه اون صفحه ي سياه كه هكر ايجاد كرده بود ظاهر مي شد. وقتي من امدم محتوي جدول آمارگيرم رو پاك كردم ديگه اون صفحه هم ظاهر نشد.
منم فهميدم هكر از نا امن بودن اين كدها سو استفاده كرده و اون صفحه رو به فيلدي در جدول از ديتابيسم وارد كرده.
راستي چون من پسوردم رو با md5 ايجاد كردم هكر نتونسته به كنترل پنل من نفوذ كنه . براي همينه كه امارگير رو هدف قرار داده.
حالا من ميخوام يه كاري كنم اين اين كدهاي آمارگيرم كه گذاشتم امن بشه. بايد چيكار كنم؟
ممنون ميشم راهنماييم كنيد.
متشكرم.

djsaeedkhan
چهارشنبه 13 اردیبهشت 1391, 20:55 عصر
سلام
قبلا در مورد ولیدیشن ورودی صحبت شده
فقط خواستم بگم اگر دیدی هکر نفوذ کرده بلافاصله کد هاشو پاک نکن. مثلا اگر کدی تزریق کرده کد رو نگه دار و شاید زمانی به دردت خورد.
من یه سی ام اس داشتم که الکی یه بیکار خارجی اومد هک کرد.اون فقط یه page آپلود کرده بود. که باهاش همه کاری انجام میداد.. حالا فکرشو بکن تو یه سایت بتونی اینو آپلود کنی...

ravand
چهارشنبه 13 اردیبهشت 1391, 21:00 عصر
من فكر ميكنم طرف يه ادرسي چيزي وارد جدول من كرده . چون من هاستم رو بررسي كردم ديدم چيزي توش نيست.

قبلا در مورد ولیدیشن ورودی صحبت شده
متاسفانه سايت برنامه نويس رو نميشه درست و حسابي توش جستجو كرد.
حالا منظورتون اعتبارسنجي هست؟ من بايد چه نوع اعتبارسنجي بكار ببرم؟

ravand
چهارشنبه 13 اردیبهشت 1391, 22:06 عصر
مشكل من اينه كه نميدونم هكر چه چيزي رو به جدول من ارسال ميكنه كه بخوام براش مثلا يه اعتبارسنجي بذارم.
راههايي كه براي بررسي مقادير به كار ميره:

mysql_real_escape_string
htmlentities
empty
isset
واقعا بايد چيكار كرد؟

djsaeedkhan
پنج شنبه 14 اردیبهشت 1391, 00:10 صبح
سلام
من از این کد استفاده می کنم
برای ورودی ها و خروجی ها اول مقدار رو به این تابع میدم و در خودش ذخیره می کنم

public function escape($sql) {
$sql = trim($sql);
$sql = strip_tags($sql);
if(!get_magic_quotes_gpc() )
{
$sql = addslashes($sql);
}
$sql = addslashes($sql);
$sql = mysql_real_escape_string($sql);
return $sql;
}

ravand
پنج شنبه 14 اردیبهشت 1391, 09:42 صبح
يعني من بيام اين متغييرها رو توي كدهام به جاي متغيير $sql در كد شما قرار بدم؟

$url
$last
$ip
$date

MMSHFE
پنج شنبه 14 اردیبهشت 1391, 09:48 صبح
بله. باید یکی یکی براش بفرستین. مثال:


$url = escape($url);
$last = escape($last);
$ip = escape($ip);
$date = escape($date);

موفق باشید.

djsaeedkhan
پنج شنبه 14 اردیبهشت 1391, 09:50 صبح
سلام
ببین
کاربر میاد نام کاربری وارد می کنه
شما همه مواردش رو چک می کنی. مثلا باید چند کارککتر باشه، حروف باشه،عدد باشه و ....
هنگامی که می خوای بفرستی واسه Insert میای و می نویسی

$username=escape($username)
اینجوری میاد یه بررسیش می کنه و بعد ذخیره می کنه. حالا شما نباید اطلاعاتی که درست هستن و ممکنه شبیه به اطلاعات کلک باشن رو هم بفرستی به این تابع
به عنوان مثال میگی کاربر می تونه <a> استفاده کنه. حالا کاربر استفاده کرد وقتی در دیتابیس درج شد میبینی اصلا چیز دیگه ای شده چون از تابع escape استفاده کردی
منظورم رو متوجه شدید؟

ravand
پنج شنبه 14 اردیبهشت 1391, 09:54 صبح
نه متوجه نشدم :لبخند:
راستش نميدونم اين تابع escape اصلا چيكار ميكنه؟
حالا به نظر شما فقط اين تابع رو استفاده كنم ؟ escape
و اگه اون توابع رو هم به اضافه ي اين بايد استفاده كنم طريقه ي استفاده اش رو توي كدهاي من نشون بديد.
متشكرم.

djsaeedkhan
پنج شنبه 14 اردیبهشت 1391, 09:59 صبح
نه متوجه نشدم :لبخند:
راستش نميدونم اين تابع escape اصلا چيكار ميكنه؟
حالا به نظر شما فقط اين تابع رو استفاده كنم ؟ escape
و اگه اون توابع رو هم به اضافه ي اين بايد استفاده كنم طريقه ي استفاده اش رو توي كدهاي من نشون بديد.
متشكرم.

سلام
به تنهایی نه
شما این تابع رو بزار و یکسری مقادیر مثل این هکر بهش ارسال کن ببین چی میشه. مثلا یه جاوا اسکریپت بهش ارسال کن ، تگ و ... ببین چه می کنه
ولی اگر چیز بهتری هم پیدا کردی حتما واسه بقیه هم بزار

ravand
پنج شنبه 14 اردیبهشت 1391, 10:29 صبح
من يه نكته اي كه در مورد رمزگذاري در مورد md5 بهش رسيدم اينه كه ما نبايد از كلمات آشنا استفاده كنيم . مثلا . derakht-sadegh . و خوبه از اين كلماتي كه اصلا در فرهنگ لغت نيستن استفاده كنيم . مثلا: gordfervnd. الان شما اين كلاماتي كه من نوشتم توي اين سايت جستجو كنيد منظور منو مي فهميد:
http://md5.rednoize.com/
از اين بانك اطلاعاتي ها توي اينرنت زيادن.
من اين مطالب رو بارها شنيده بودم ولي در عمل بهش نرسيده بودم.
الان شما در مورد اين دستور زير يه نكته اي رو گفتيد :

or die(mysql_error());
من اين دستور رو مثلا براي اين استفاده ميكنيم كه اگه نام ديتابيس درست نباشه يا اصلا وجود نداشته باشه بهمون پيغام بده. من موندم هكر از اين خطا چي مي فهمه كه ازش به عنوان يه حفره عليه ما استفاده ميكنه؟
متشكرم.

MMSHFE
پنج شنبه 14 اردیبهشت 1391, 10:59 صبح
حداقلش اینه که نام کاربر دیتابیس لو میره. یا اگه از همین دستور برای mysql_select_db استفاده کنید، نام دیتابیس رو لو میده! به همین شکل درمورد Queryها و... بخشی از کوئری که خطا داشته رو نشون میده و درنتیجه، قسمتی از ساختار جدولهای شما هم کشف خواهد شد.

ravand
پنج شنبه 14 اردیبهشت 1391, 12:11 عصر
متشكرم.
حالا فهميدم دليل اينكه به اين راحتي جداول سايتم لو رفت چي بود. آيا راههاي ديگه اي هم براي لو رفتن جدول وجود داره؟
اگه ميشه چند نكته ي ديگه هم در مورد امنيت بگيد. آخه من توي اين مدت هيچ وقت سعي نكردم در مورد امنيت بدونم. راستش وقتي كتاب هاي آموزش php رو هم مي خوندم چيزي در اين مورد توش ننوشته بود.
متشكرم.

ravand
پنج شنبه 14 اردیبهشت 1391, 12:52 عصر
من كدم رو به اين صورت درآوردم كار بيهوده اي كه نكردم؟

<?php
$con=mysql_connect('localhost','root','');
$db=mysql_select_db('search');
mysql_query("SET CHARACTER SET utf8",$con);
$url=$_SERVER['REQUEST_URI'];
$last=$_SERVER['HTTP_REFERER'];
$ip=$_SERVER['REMOTE_ADDR'];
date_default_timezone_set('Asia/Tehran');
$date=date('Y-m-d h:i:s');
$url=addslashes($url);
$last = addslashes($last);
$ip = addslashes($ip);
$date = addslashes($date);

$url=mysql_real_escape_string($url);
$last = mysql_real_escape_string($last);
$ip =mysql_real_escape_string($ip);
$date = mysql_real_escape_string($date);

$urli = trim($url);
$lasti = trim($last);
$ipi = trim($ip);
$datei = trim($date);

$vared="INSERT INTO amari (`url`,`last`,`ip`,`date`) VALUES ('$urli','$lasti','$ipi','$datei')";
$tab=mysql_query($vared,$con);
$num=mysql_affected_rows($con);
mysql_close($con);
?>

از تابع escape استفاده نكردم مشكلي كه نداره؟
فكر ميكنم تابع strip_tags منو از حمله ي اون هكر نجات ميده چون باعث ميشه ديگه كسي كد به جاي متن براي جدولم ارسال نكنه.

Hamid.RDN
پنج شنبه 14 اردیبهشت 1391, 13:36 عصر
تابع mysql_real_escape_string نیاز به ارسال con$ به عنوان پارامتر دوم داره.

MMSHFE
پنج شنبه 14 اردیبهشت 1391, 14:13 عصر
دوست عزیز strip_tags به تنهایی کافی نیست و روی حملات SQL Injection هیچ تأثیری نداره. اینگونه حملات رو mysql_real_escape_string که به کار بردین، خنثی میکنه. فقط باید قبل از استفاده از این تابع، یک اتصال به دیتابیس داشته باشین. بعلاوه بعد از اتصال به MySQL و انتخاب دیتابیس و اجرای کوئری 'SET NAMES 'utf8 روی دیتابیس (برای اطلاعات فارسی)، دستور زیر رو هم اجرا کنید:

mysql_set_charset('utf8');
تا عبارتهای فارسی بعنوان کد مخرب شاخته نشده و درنتیجه Escape نشن. وجود این دستور برای عبارات فارسی لازمه وگرنه این اطلاعات توسط mysql_real_escape_string حذف خواهند شد. باید دقت کنید که 'SET NAMES 'utf8 نوع Collation مورد استفاده در تابع مذکور رو تغییر نمیده و فقط نوع کدگذاری اطلاعات مبادله شده با دیتابیس رو تعیین میکنه. موفق باشید.

ravand
پنج شنبه 14 اردیبهشت 1391, 15:07 عصر
تابع mysql_real_escape_string نیاز به ارسال con$ به عنوان پارامتر دوم داره.


من متوجه منظور شما نشدم مي تونيد اين كد رو اونطوري كه ميگيد درش بياريد؟



. اینگونه حملات رو mysql_real_escape_string که به کار بردین، خنثی میکنه. فقط باید قبل از استفاده از این تابع، یک اتصال به دیتابیس داشته باشین
اينم متوجه نشدم . خب من به ديتابيسم اتصال دارم وگرنه كدم كار نميكنه.

من طريقه ي عملكرد اين دو تابع رو تست زدم .

<?php
$url='<b>ali</b>';
echo mysql_real_escape_string($url);
?>

<?php
$url='<b>ali</b>';
echo strip_tags($url);
?>
تابع mysql_real_escape_string كدها رو حذف نميكنه. ولي تابع strip_tags اين كار رو ميكنه.
حالا منظور شما چي بود؟
متشكرم.

MMSHFE
پنج شنبه 14 اردیبهشت 1391, 15:19 عصر
منظورم اینه که این کدها برای MySQL خطرناک نیست. فقط وقتی توی صفحه echo بشه مشکل ساز میشه. مثلاً اگه توشون یک اسکریپت باشه، اجرا میشه. اما اون چیزی که باعث شده سایت شما هک بشه این مورد نبوده. اجرای Queryهای SQL ازطریق آدرس بوده که بهش میگن SQL Injection و جلوگیری از این حملات توسط mysql_real_escape_string انجام میشه. موفق باشید.

ravand
پنج شنبه 14 اردیبهشت 1391, 15:26 عصر
اتفاقا كدهاي كه به جدول من ارسال شد در قسمت چاپ آمار چاپ شده . و با دستور echo همه ي مطالب از جدول بيرون كشيده شده و چاپ شده. حتما اون كدها هم چاپ شده كه اين اتفاق افتاده. ضمنا اون فيلمي رو هم كه نشونتون دادم براي چيز ديگه بود . هكر يوذر و پسورد منو بدست آورد ولي نتونست ازش استفاده كنه و در واقع از كدهاي آمارگيرم كه الان اينجا گذاشتم تونست سو استفاده كنه.
آخرش نفهميدم اين كدهاي آمارگير رو چجوري بنويسم كه امن باشه :لبخند:

ravand
پنج شنبه 14 اردیبهشت 1391, 18:52 عصر
من كدهام رو به اين صورت نوشتم:

<?php
$con=mysql_connect('localhost','root','');
$db=mysql_select_db('database');
mysql_query("SET CHARACTER SET utf8",$con);
$url=$_SERVER['REQUEST_URI'];
$last=$_SERVER['HTTP_REFERER'];
$ip=$_SERVER['REMOTE_ADDR'];
date_default_timezone_set('Asia/Tehran');
$date=date('Y-m-d h:i:s');

$url=addslashes($url);
$last = addslashes($last);
$ip = addslashes($ip);
$date = addslashes($date);

$url=mysql_real_escape_string($url);
$last = mysql_real_escape_string($last);
$ip =mysql_real_escape_string($ip);
$date = mysql_real_escape_string($date);



$urli = strip_tags($url);
$lasti =strip_tags($last);
$ipi = strip_tags($ip);
$datei =strip_tags($date);


$urli = trim($url);
$lasti = trim($last);
$ipi = trim($ip);
$datei = trim($date);




$vared="INSERT INTO jadval (`url`,`last`,`ip`,`date`) VALUES ('$urli','$lasti','$ipi','$datei')";
$tab=mysql_query($vared,$con);
$num=mysql_affected_rows($con);
mysql_close($con);
?>
براي همين ديدم كه تاريخ اينطوري ثبت شد.

-۶۲۲/۰۹/۰۹ ۱۲:۰۰:۰۰
به جاي اينكه اينطوري ثبت بشه:

۱۳۹۱/۰۲/۱۴ ۰۶:۵۵:1۰
راه حل چيه؟

Hamid.RDN
پنج شنبه 14 اردیبهشت 1391, 20:02 عصر
این کد فقط یک اعلان برای توابع تاریخ و زمان هست که احتلاف زمانی با مرجع UTC رو مشخص میکنه و باعث شمسی شدن تاریخ نمیشه.
شما باید از تبدیلگر تاریخ میلادی به شمسی استفاده کنید.
جستجو کنید به راحتی پیدا می کنید.

ravand
پنج شنبه 14 اردیبهشت 1391, 21:00 عصر
دوست عزیز strip_tags به تنهایی کافی نیست و روی حملات SQL Injection هیچ تأثیری نداره. اینگونه حملات رو mysql_real_escape_string که به کار بردین، خنثی میکنه. فقط باید قبل از استفاده از این تابع، یک اتصال به دیتابیس داشته باشین. بعلاوه بعد از اتصال به MySQL و انتخاب دیتابیس و اجرای کوئری 'SET NAMES 'utf8 روی دیتابیس (برای اطلاعات فارسی)، دستور زیر رو هم اجرا کنید:

mysql_set_charset('utf8');
تا عبارتهای فارسی بعنوان کد مخرب شاخته نشده و درنتیجه Escape نشن. وجود این دستور برای عبارات فارسی لازمه وگرنه این اطلاعات توسط mysql_real_escape_string حذف خواهند شد. باید دقت کنید که 'SET NAMES 'utf8 نوع Collation مورد استفاده در تابع مذکور رو تغییر نمیده و فقط نوع کدگذاری اطلاعات مبادله شده با دیتابیس رو تعیین میکنه. موفق باشید.

اين كدي كه شما نوشتيد با اين كد چه فرقي دارن؟

mysql_query("SET CHARACTER SET utf8",$con);

ravand
پنج شنبه 14 اردیبهشت 1391, 21:13 عصر
این کد فقط یک اعلان برای توابع تاریخ و زمان هست که احتلاف زمانی با مرجع UTC رو مشخص میکنه و باعث شمسی شدن تاریخ نمیشه.
شما باید از تبدیلگر تاریخ میلادی به شمسی استفاده کنید.
جستجو کنید به راحتی پیدا می کنید.

ببخشيد من متوجه منظور شما نميشم. براي تبديل تاريخ ميلادي به شمسي معمولا اول تاريخ رو به صورت ميلادي ثبت ميكنن و بعد به شمسي تبديلش ميكنن
به اين صورت:

echo jdate("h:i:s Y/m/d",strtotime($record["date"]));
اين قسمت بابد در قسمت چاپ تاريخ از ديتابيس باشه .

MMSHFE
جمعه 15 اردیبهشت 1391, 09:07 صبح
دوست عزیز، فیلد تاریخ و سایر فیلدهایی که خودتون تولید میکنید و از کاربر نمیگیرین رو نیازی نیست و نباید Escape کنید.