PHP Notice और Warning: undefined त्रुटियों को कैसे समझें और ठीक करें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: PHP आप पर "Undefined" क्यों चिल्लाता है?

\n

यदि आपने कभी PHP में कोड लिखा है (और यदि आप यह लेख पढ़ रहे हैं तो आप लिखते हैं), तो आपने निश्चित रूप से Notice: Undefined variable या Warning: Undefined array key जैसे डरावने संदेश देखे होंगे। शुरुआती अक्सर डर जाते हैं, अनुभवी कंधे उचकाते हैं, लेकिन हम सब एक ही चाहते हैं: कोड त्रुटियों के बिना काम करे।

\n

आज हम PHP के चार सबसे लोकप्रिय "चिल्लाहट" को समझेंगे: Undefined variable, Undefined index, Undefined array key और Undefined offset। आप जानेंगे कि वे कैसे अलग हैं, क्यों होते हैं और उन्हें सही तरीके से कैसे ठीक करें। और सबसे महत्वपूर्ण बात, मैं आपको सर्वोत्तम अभ्यास दिखाऊंगा ताकि आपका कोड साफ और सुरक्षित रहे।

\n

यह सामग्री Stack Overflow के एक वास्तविक प्रश्न पर आधारित है, जिसे हजारों बार देखा गया है। हम इसे शैक्षिक उद्देश्यों के लिए अनुकूलित करेंगे और इसे विस्तार से समझाएंगे।

\n\n

PHP में Notice और Warning क्या हैं?

\n

विवरण में जाने से पहले, आइए PHP में त्रुटि स्तरों को समझें। Notice एक गंभीर त्रुटि नहीं है। PHP कहता है: "अरे, मैंने कुछ अजीब देखा, लेकिन काम करता रहता हूं।" Warning अधिक गंभीर है: "मैं कोड निष्पादित कर सकता हूं, लेकिन कुछ गलत हो गया।"

\n

हम जिन चार संदेशों पर विचार कर रहे हैं, वे सभी अस्तित्वहीन डेटा तक पहुंचने की त्रुटियों की श्रेणी में आते हैं। वे साइट को पूरी तरह से नहीं तोड़ते, लेकिन अप्रत्याशित व्यवहार या कमजोरियां पैदा कर सकते हैं।

\n\n

1. Notice: Undefined variable

\n

यह शायद सबसे आम त्रुटि है जिसका सामना शुरुआती PHP डेवलपर्स करते हैं। यह तब होता है जब आप एक ऐसे वेरिएबल का उपयोग करने का प्रयास करते हैं जिसे घोषित नहीं किया गया है।

\n\n

सामान्य उदाहरण

\n
<?php\necho $name; // वेरिएबल $name परिभाषित नहीं है\n?>
\n

आउटपुट: Notice: Undefined variable: name

\n\n

ऐसा क्यों होता है?

\n
    \n
  • आप वेरिएबल को मान निर्दिष्ट करना भूल गए
  • \n
  • वेरिएबल किसी अन्य दायरे में घोषित किया गया था (उदाहरण के लिए, फ़ंक्शन के अंदर)
  • \n
  • जांच के लिए isset() ऑपरेटर का उपयोग नहीं किया गया
  • \n
\n\n

कैसे ठीक करें?

\n

तरीका 1: isset() के माध्यम से जांच

\n
<?php\nif (isset($name)) {\n    echo $name;\n} else {\n    echo 'वेरिएबल परिभाषित नहीं है';\n}\n?>
\n\n

तरीका 2: null coalescing ऑपरेटर का उपयोग (PHP 7+)

\n
<?php\necho $name ?? 'डिफ़ॉल्ट मान';\n?>
\n\n

तरीका 3: वेरिएबल को आरंभ करना

\n
<?php\n$name = 'इवान';\necho $name; // अब सब ठीक है\n?>
\n\n

2. Notice: Undefined index

\n

यह त्रुटि किसी ऐरे के अस्तित्वहीन कुंजी तक पहुंचने का प्रयास करने पर होती है। क्लासिक मामला सुपरग्लोबल ऐरे $_POST, $_GET या $_SESSION के साथ काम करना है।

\n\n

जीवन का उदाहरण

\n
<?php\n// मान लीजिए फॉर्म "email" फ़ील्ड के बिना सबमिट किया गया\necho $_POST['email']; // Notice: Undefined index: email\n?>
\n\n

यह खतरनाक क्यों है?

\n
    \n
  • तर्क में अप्रत्याशित त्रुटियां पैदा कर सकता है
  • \n
  • कमजोरियां पैदा करता है: यदि आप कुंजी की उपस्थिति की जांच नहीं करते, तो हमलावर अप्रत्याशित डेटा भेज सकता है
  • \n
\n\n

सर्वोत्तम अभ्यास

\n

तरीका 1: isset()

\n
<?php\nif (isset($_POST['email'])) {\n    $email = $_POST['email'];\n} else {\n    $email = null;\n}\n?>
\n\n

तरीका 2: null coalescing (PHP 7+)

\n
<?php\n$email = $_POST['email'] ?? null;\n?>
\n\n

तरीका 3: filter_input() — पेशेवर दृष्टिकोण

\n
<?php\n$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);\nif ($email === false) {\n    // मान्यता त्रुटि की प्रक्रिया\n}\n?>
\n\n

3. Warning: Undefined array key (PHP 8.0+)

\n

शुरू से

ब्लॉग

पुस्तक अनुशंसाएँ