PDA

View Full Version : راه حل مشکل Notice: Undefined index



vestaa
شنبه 18 خرداد 1392, 17:42 عصر
سلام

سایتی دارم که قبلن با php ورژن کمتر از 5.3 نوشته شده که وقتی روی سرور جدید آپلود شد که ورژن php ست شده روی سرور 5.3 بود؛ ارورهای زیادی نشون داد...

یکیش مثلن ارور تابع ereg_replace بود که من به preg_replace تغییر دادم و درست شد و دیگری هم تابع mktime بود که وقتی is_dst = 1 تعیین شده بود ارور میداد و اون رو هم به is_dst = -1 تغییر دادم و مشکل حل شد..

حالا در حال حاضر در صفحات مختلف یک سری Notice میده؛ مثل Notice: Undefined index
که همونطوری که می دونید ارور نیستند ولی به هر حال نباید باشند...

من اومدم در صفحاتی که این Notice هارو نشون میداد از

error_reporting(E_ALL ^ E_NOTICE);
استفاده کردم و ظاهر قضیه حل شد ولی در اصل همچنان Notice ها وجود دارند فقط نشون داده نمی شوند... کسی راه حلی داره و می دونه که چیکار باید بکنم تا بدون کد بالا هیچ Notice ی وجود نداشته باشه؟

از قبل ممنون

فرزند کوروش
شنبه 18 خرداد 1392, 17:47 عصر
این ارور مشکل خاصی نیست . ارور ریپورتینگ و ببند حل میشه

vestaa
شنبه 18 خرداد 1392, 17:59 عصر
بله فکر کنم الانم همین کارو انجام دادم ولی راه حل اصولیش چی هست؟

بر طبق جستجوهام فکر کنم باید از isset استفاده کنم؛ درسته؟

Tarragon
شنبه 18 خرداد 1392, 18:13 عصر
سلام
بله بعنوان مثال نوشتید اگر متغیر XXX برابر true بود دستور ...
اما وقتی برنامه نتونه به متغیر XXX دسترسی پیدا کنه برای شما ارور می ده.
رفعش هم اینه که تو دستور اول با issset چک کنید که متغیر هست یا نه؟

vestaa
شنبه 18 خرداد 1392, 19:21 عصر
یه راه حل دیگه هم پیدا کردم و اونم اینکه جایی که Notice رو نشون میده، قبل از متغیر از @ استفاده کنیم..

فقط سوالم اینه که آیا این راه حل ها درست هستند و باید یکی از این کارهارو انجام داد یا راه بهتر و اصولی تری وجود داره؟

vestaa
شنبه 18 خرداد 1392, 19:26 عصر
تو اینترنت همه چی هستا :)

راه حل چهارم:
استفاده از کدهای زیر در صفحه موردنظر:

<?php ini_set( 'error_reporting', E_ALL ^ E_NOTICE );?>
<?php ini_set( 'display_errors', '0' );?>

بازم سوالم اینه که بهترین روش و راه حل کدوم هست؟

Tarragon
شنبه 18 خرداد 1392, 20:37 عصر
سلام
در همه ی موارد ارور تولید می شه اما در 2 راه حل آخر ارور چاپ نمی شه.
در ضمن @ سرعت فانکشن رو کار می کنه و
<?php ini_set( 'display_errors', '0' );?> دیگه هیچ اروری رو نبینید.