PDA

View Full Version : سوال: نشان ندادن خطا خود PHP در هنگام متصل نبودن به دیتا بیس



moslem_f
چهارشنبه 02 مرداد 1392, 00:34 صبح
سلام عرض ادب و خسته نباشید نماز و روزه های تمام مدیران و دوستان گرامی قبول درگاه حق در مورد تاپیکی که ایجاد کردم عرض کنم خیلی سرچ کردم و حتی از یکی دو نفر از دوستان هم پرسیدم که از اعضای انجمن بودن ولی چیزی به نظرشون نرسید خلاصه خواستم مورد محاکمه قرار نگیرم :لبخند: برای همین زیاد سرچ کردم و سوال کردم که به سوالم نرسیدم و بیشتر به توضیح می پردازم؛

با کدی که در زیر قرار میدم به دیتا بیس مای اس کیو ال متصل میشم


mysql_connect("localhost","root","s") or die("DB Connection Error No!");
mysql_select_db("testdb");

همان طور که مشاهده می کنید در سطر اول با وجود این که از لوکال هاست و برنامه ومپ سرور استفاده می کنم برای تست و مشاهده متصل بودن به دیتا بیس و در صورت متصل نبودن خطایی نمایش داده میشود ، برای اتصال از پسورد استفاده کردم که می دانید در برنامه ومپ و لوکال هاست نیازی به قرار دادن پسورد نیست و در صورتی که از پسورد استفاده کنیم چون برنامه ومپ سرور و لوکال هاست ما ( مای اس کیو ال ) پسورد ندارد با خطا مواجه خواهیم شد حال سئوال من این است که با وجود نوشتن or & die و تنظیم کردن php.ini برای error_reporting به شکل زیر :


error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

در صورت متصل نبودن به دیتا بیس ( شکست در اتصال به دیتا بیس ) پیغامی که در die نوشته شده ( DB Connection Error No ) نمایش داده می شود و سپس از از ادامه برنامه جلوگیری خواهد شما (((((((((( اما خطای خود php نیز که در تصویر زیر مشاهده می کنید به نمایش در خواهد آمد که برای حل نمایش ندادن این خطا من فقط یک روش پیدا کردم آن هم این است که با گذاشتن @ در اول Mysql_Connect از نمایش خطای php جلوگیری کنم و فقط پیغام خودم را به نمایش در آورم که کدی که باعث میشود خطای خود پی اچ پی نمایش داده نشود به شکل زیر خواهد بود :


@mysql_connect("localhost","root","s") or die("DB Connection Error No!");
mysql_select_db("testdb");

حالا سوال این است که آیا هیچ راهی نیست غیر از گذاشتن علامت @ در اول Mysql_Connect پیغام خطا نمایش php نمایش داده نشده و بلکه فقط پیغام خطای خودمان نمایش داده شود با تشکر.
ارادتمند : مسلم فلاح نیت
107799

cybercoder
چهارشنبه 02 مرداد 1392, 01:02 صبح
http://barnamenevis.org/showthread.php?79716-%D8%A8%D8%AF%D8%B3%D8%AA-%DA%AF%DB%8C%D8%B1%DB%8C-%D8%AE%D8%B7%D8%A7%D9%87%D8%A7-%D8%AF%D8%B1-PHP

کامروا
چهارشنبه 02 مرداد 1392, 01:10 صبح
سلام دوست عزیز

این پیغامی که واسه شما چاپ شده یک Warning هست.
برای اینکه هیچ پیغامی به شما داده نشه میتونید بصورت دستی مقدار error_reporting رو در فایل php.ini برابر با 0 قرار بدید و یا دستور زیر رو درون PHP اجرا کنید :

error_reporting(0);


موفق باشید

moslem_f
چهارشنبه 02 مرداد 1392, 01:18 صبح
غیر از این روش روش دیگه ای وجود داره بعد آیا با غیر فعال کردن این خطاها از لحاظ امنیتی مشکلی ایجاد نمیشه ؟

کامروا
چهارشنبه 02 مرداد 1392, 17:19 عصر
غیر از این روش روش دیگه ای وجود داره
اگر فقط بخوایی خطاهای مربوط به یک بخش خاصی از کدت رو نشون نده میتونید از @ استفاده کنی.
مثلا :
همونطور که میدونید دستور زیر باید خطا بده، اما چون قبلش @ گذاشتیم، Error و Warning های مربوط به این خط رو نشون نمیده.

$db_handle = @mysqli_connect("");


آیا با غیر فعال کردن این خطاها از لحاظ امنیتی مشکلی ایجاد نمیشه ؟
فکر نمیکنم صرفاٌ غیرفعال کردن این بخش ربطی به امنیت داشته باشه.

موفق باشید.

kartuf
پنج شنبه 03 مرداد 1392, 05:06 صبح
نمایش خطا در صورتی که غیر فعال باشد مشکل امنیتی ایجاد نمیکند ولی نمایش خطا یک مشکل امنیتی محسوب میشود چون یک اطلاعات حداقلی به هکر میدهد که حکم سرنخ را برای وی خواهدداشت
راه حل عدم نمایش هم دوستان در بالا اشاره کردند

cybercoder
شنبه 05 مرداد 1392, 21:07 عصر
نمایش خطا در صورتی که غیر فعال باشد مشکل امنیتی ایجاد نمیکند ولی نمایش خطا یک مشکل امنیتی محسوب میشود چون یک اطلاعات حداقلی به هکر میدهد که حکم سرنخ را برای وی خواهدداشت
راه حل عدم نمایش هم دوستان در بالا اشاره کردند
خطا را باید مدیریت کرد نه پاک!