PDA

View Full Version : سوال: روش درست کاربا php و برطرف کردن خطاهای پس از اماده شدن سایت



shahinshyd
یک شنبه 11 اردیبهشت 1390, 18:47 عصر
باسلام
من یک سایت طراحی کردم که پس از تکمیلش و اپلود روی اینترنت متوجه شدم که
سایت روی لوکال هاست خیلی خوب جواب داد وکار می کنه ولی روی هاست رایگانی که از اینترنت گرفتم به کلی به هم ریخته

69404





واسه همین با یکی از دوستان که صحبت میکردم گفت که لوکال از خیلی خطاها چشم پوشی میکنه درسته؟



و باید پس از پایان کد نویسی سایت عیب یابیش کنیم که این تیکه کد رو داد وگفت اول سایت php قرار میدیم وکل خطا هارو تو مرورگر نمایش میده:


error_reporting(E_ALL);

مثلا ایا باید واسه نام متغیر های این تیکه کد ها که تو بیشتر توابع تکرار میشه نام تکراری انتخاب نکنیم؟



$link = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$link);
$Sql=”select * from post where id=$i”
$ result =mysql_query($sql)
$row = mysql_fetch_array($result)
<marquee>’.$row[“post”].’</marquee>



حالا واسه این که این مشکلات در مراحل کد نویسی پیش نیاد و چه بهتر که در همان زمان کد نویسی درست کد بنویسیم تا در اخر وقت زیادی صرف برطرف کردن خطاها نکیم از اساتید میخوام که با تجربیات خودشون راهنمایی کنند که در زمان کد نویسی چه نکاتی بهتره حتما رعایت بشه و برای خطایابی چه نکاتی رو پیشنهاد میکنند؟





باتشکر

binyaft
یک شنبه 11 اردیبهشت 1390, 18:54 عصر
اون خاطا هایی که شما میگی مهم نیستن ، زیاد!
error_reporting رو 0 بزار !


پ.ن : بزرگ هم ننویسی ما میبینیم به خدا ! :لبخند:

shahinshyd
یک شنبه 11 اردیبهشت 1390, 19:18 عصر
اون خاطا هایی که شما میگی مهم نیستن ، زیاد!
error_reporting رو 0 بزار !

باتشکر
میشه بیشتر توضیح بدی؟
نظر دیگه ای واسه خطایابی نداری؟

binyaft
یک شنبه 11 اردیبهشت 1390, 19:25 عصر
آخه اون خطا هایی که شما میگی ، مهم نیستن مثلا کوئری استرینگ خالی باشه یه جا استفاده کنی!

مثلا اگر یه تابع رو تعریف نکرده استفاده کنی برنامه باید خطا بده و یا نام متغییر رو با اعداد شروع کنی و اون چیزی که گفتم اصلا مهم نیست و نگرانش نباش .

shahinshyd
یک شنبه 11 اردیبهشت 1390, 19:28 عصر
آخه اون خطا هایی که شما میگی ، مهم نیستن مثلا کوئری استرینگ خالی باشه یه جا استفاده کنی!

مثلا اگر یه تابع رو تعریف نکرده استفاده کنی برنامه باید خطا بده و یا نام متغییر رو با اعداد شروع کنی و اون چیزی که گفتم اصلا مهم نیست و نگرانش نباش .
به نظرشما دلیل عدم کارکردن سایت روی اینترنت چیه در صورتی که روی لوکال به درستی کار میکنه!

UnnamE
یک شنبه 11 اردیبهشت 1390, 20:04 عصر
دقيقا اين WarninG , Notice ها بهترين كاربرد رو دارن براي اينكه رفتار برنامه رو كاملا كنترل كرد
اينا دارن قوانين استاندارد نويسي رو گوشزد ميكنن كه فك كنم رعايت اش در php 6 الزامي هستش
صريح اعلام نكردن نوع يك متغير و تغيير داده اي اون در طول اجراي برنامه و دادن مقدار هاي مختلف باعث ميشه كدها از حالت استاندارد خارج بشه و در صورتي كه بخواي انعطاف بالا رو داشته باشه باس همه ي اون اخطارها رو بهشون عمل كني

اينكه error_report رو روي 0 قرار بدي مث كردن كله زير برف ميمونه!!!

shahinshyd
یک شنبه 11 اردیبهشت 1390, 20:27 عصر
ایا هاست مجانی واسه تست سایت با هاست پولی فرق داره ؟

shahinshyd
یک شنبه 11 اردیبهشت 1390, 20:31 عصر
مثلا تو یکی از خطاهایی که درخط 41 گرفته به این خط گیر میده

$a=get_jalali_date($row["pdate"]);
که یکی از اساتید گفت باید واسه گرفتن متغیر ها از روش زیر استفاده

$_POST['test']

binyaft
یک شنبه 11 اردیبهشت 1390, 20:37 عصر
فکر نکنم فرقی داشته باشه ، اما میشه سطح نمایش خطا رو با php.ini تنظیم کرد!

binyaft
یک شنبه 11 اردیبهشت 1390, 20:38 عصر
اينكه error_report رو روي 0 قرار بدي مث كردن كله زير برف ميمونه!!!

برنامه رو لوکال وقتی درست کار میکنه ، رو سرور وقتی کار نکنه ( به احتمال 99% ) اشکال از همون خطا های بی مورد هست ! اونجا اگه error_reporting رو 0 بزاریم بردن سر زیر برف نمیشه !

MMSHFE
دوشنبه 12 اردیبهشت 1390, 07:23 صبح
با سلام، اين كد رو توي سايتتون قرار بدين:


error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED);

دوست گرامي، اين پيغامهايي كه شما دريافت كردين، هشدار و يادآوري و... هستند نه خطا. مثلاً ميگه از انديسي استفاده كردين كه توي آرايه وجود نداره. خوب در اين صورت، يك مقدار خالي برگردونده ميشه و اگه اون انديس رو بخواين چاپ كنيد، هيچي چاپ نميشه كه خطا نيست ولي بهتره نكاتي كه گفته رو رعايت كنيد. البته با اين كار، كدتون يكم پيچيده و سخت ميشه و اگه نميخواين اين كار رو انجام بدين، با دستوري كه گفتم، سيستم گزارش خطاي PHP رو به نحوي تنظيم كنيد كه فقط خطاها رو نشون بده و از يادآوري ها و هشدارها و اعلام توابع منسوخ شده، چشم پوشي كنه.
موفق باشيد.