تتبع وتصيد ومنع الاخطاء
(avoiding and handling errors)
إن مصطلح الـdebbug هو من المصطلحات الشائعة والشيقة في عالم البرمجة ، هذا المصطلح يشير إلى كيفية إصلاح أخطاء البرنامج وتوقعها قبل حدوثها ، هناك أنواع من الأخطاء تحدث بسبب المبرمج وهناك أنواع من الأخطاء تحصل بسبب المستخدم ، في العادة يجب أن يكون المبرمج متآلفاً مع مصطلح تتبع الأخطاء وإصلاحها .
قد يكون من أهداف تتبع الأخطاء الحماية بقدر أهميه البرنامج الجاري العمل عليه أو الموقع فكلما كان الموقع مهماً كان وجوب حمايته أكبر .
قد يكون من الأسباب التي تسبب تدميراً للمواقع هو أن صاحب الموقع يغطي كل صغيرة وكبيرة عن برنامجه الذي يركبه في موقعه وقد يكون برنامجه هذا غير محمي بسبب كاف أو يكون مسير بعدة ملفات فيقوم شخص بحذف ملف من الملفات الأساسية بسبب عدم دقة في التراخيص المعطاة مما يؤدي إلى دمار الموقع نهائياً .
وقد يكون صاحب الموقع مهملاً في الحد ذاته فلا يحتفظ بالمعلومات السرية لموقعه مما يسبب مشاكل أكبر من التدمير مثل احتلال الموقع بشكل كامل .
رسائل الخطا في الـPHP لها طريقتها وتقنيتها الخاصة التي تسير عليها فهي ليست مثل الجافا وليست مثل cgi
فالـ PHP لا تقوم بإرسال الخطأ إلى السيرفر بل تقوم بكتابة رسالة خطأ في مكان الخطأ .
قد يكون هناك أخطاء يصعب تتبعها أو معرفة مكانها في الأصل ، وقد يكون هذا بسبب أنك تستخدم الـPHP في صناعة موقع ديناميكي وتشرك معها الجافا سكربت وتضع علامات التعليق الخاصة التي تقوم بإخفاء الأخطاء في الجافا مما قد يجعلك تشعر بالحيره وتجن أين مكان الخطأ
<!- -
رساله الخطا
- - >
أنواع الأخطاء
هناك أنواع من الأخطاء منها الإملائية (Syntax Error) ومنها المنطقية ومنها أخطاء تحدث في وقت التنفيذ
ومثال الأخطاء الإملائية :
<?
Eco “1”;
// من المفترض أن تكت التالي :
Echo “1”;
?>
هذا سيعطيك رسالة خطأ Parse error
ومن الأخطاء الإملائية نسيان الفاصلة المنقوطة (semi-colon) في نهاية الدالة :
<?
Echo “hello”
// من المفترض أن تكت التالي :
Echo “hello”;
?>
هنا سوف يعطيك الـPHP رسالة خطأ لكن العجيب أنه لن يعطيك إياها بشكل صحيح فرسالة الخطأ تشير إلى أن السطر الرابع يحتوي على الخطأ بينما الخطأ هو في السطر الثاني .
وهناك خطأ آخر يحصل بسبب نسيان الـbrace ( وهي الاقواس ) :
<? Php
for ($loop = 0 ; $loop < 5 ; $loop ++ )
{
Echo “”;
?>
اذا كنت قد نسيت إغلاق القوس فهذا من الأخطاء الشائعة ، والأخطاء الإملائية لايمكن حصرها ، إنها أشبه بقواعد اللغة ، لكن أكثر الأخطاء الإملائية الشائعة في برامج الـPHP
1 – نسيان الأقواس . مثال :
<?
for ($loop = 0 ; $loop < 5 ; $loop ++ )
{
for ($loop1 = 0 ; $loop1 < 10 ; $loop1 ++ )
{
for ($loop = 0 ; $loop < 5 ; $loop ++ )
{
code ….
}
}
في المثال السابق ينقصنا قوس إغلاق التكرار الأخير ( } )
2 - نسيان الفاصلة المنقوطة . مثال :
<?
Echo 10
<?
3 - خطأ إملائي في اسم function . مثال :
<?
Htmlspecialchar($I);
?>
سيعطيك رسالة خطأ :
Fatal error : call to Undefined function : htmlspecialchar().
وتصحيحها أن تكون :
<?
Htmlspecialchars($I);
?>
4 - نسيان إغلاق النص . مثال :
<?
Echo “arabbuilder;
?>
نسي الـ(")في نهاية الكلمة . وسيعطيك Parse error
الأخطاء المنطقية (Logical Errors)
إن الأخطاء المنطقية هي الأكثر صعوبة في التتتبع فقد تجد برنامجك يعمل بشكل صحيح وبكل سلامة ولكنه عند نقطة ما لايتم تنفيذها كما تريد أنت ، لنضرب مثلاً على خطأ منطقي بسيط جداً ، لنفرض أنك قمت بعمل نموذج مكون من مربع نص وزر ، عند ضغطك لهذا الزر فأنت تريد أن يتم كتابة كلمة كبير إذا كان الرقم أكبر من 30 وكلمة صغير إذا كان الرقم أصغر من 30 لنقم بكتابة الكود للمثال الأول :
<?
echo "ادخل عمرك :" ;
echo '<br>
<form method = "post" action = "age.php">
<input type= "text" name = "age">
<br>
<input type= submit value = "هل أنا كبير أم صغير ؟" >
</form>' ;
?>
في ملف age.php اكتب الكود التالي :
<?
If ($age<30) echo “انت صغير”;
If ($age>30) echo “انت كبير”;
?>
سيعمل السيكريبت بشكل صحيح .. ولكن ربما تخطأ أنت في كتابة العلامات المنطقية ( التي باللون الأحمر ) فتأتي النتائج بشكا خاطئ .
ومن الأخطاء المطنقية الأخطاء التي تقع في وقت التشغيل (Run times error) والتي تكون قد تقوم بإيقاف برنامجك بشكل كامل
مثال :
<?
$t=0;
$r=1;
$f=$r/$t;
?>
وعندها سينتج لك الرسالة التالية
Warning : Division by zero in (path) on line (line number )
هناك نوع آخر من الأخطاء المنطقية (unexpected) وهو لا يقوم بإيقاف البرنامج نهائياً بل يقوم بإخراج رسالة الخطأ في مكان الخطأ أو قد يقوم بتنفيذ البرنامج وإخراج البيانات بشكل غير صحيح أو قد لا يقوم بإخراج بيانات
وهو المثال الاول الذي ذكرناه سابقا (تقييم العمر) .
اخطاء التكرارات
قد يكون لديك أيضا تكرار فيه خطأ ولا يقوم بالتوقف نهائياً مثل هذا التكرار :
$c=1;
$t=true;
while ($t=true)
{
$c++;
}
لم نقم بعمل شي يوقف التكرار مثل أن تضع شرط يختبر قيمة المتغير (c$) ثم يقوم بإيقافه عند تعديه رقم معين وعلى ذلك فإن التكرار سيستمر بشكل غير متوقف ولن يعمل البرنامج .
عدم ارجاع قيمه من function
مثال :
<?
Function ($d)
{
$d =$d+$d;
}
الخطا هنا اننا لم نستخدم الـreturn لكي ننهي الدالة أو قد تكون الدالة تحتوي على أكثر من قيمة وننسي أن نقوم بتحديد القيمة النهائية للدالة
الخلط في المعاملات الحسابية والمنطقية
مثال :
If ($y=10) echo 12 ;
والمفترض أن تكون :
If ($y= =10) echo 12 ;
أفكار جيدة لتفادي الأخطاء
التعليقات
إن من الأفكار الجيدة للتقليل من الأماكن التي تبحث فيها عن الخطأ هو وضع تعليقات لوصف وظيفة دالة معينة . مثال :
<?
//هذه الكود يقوم بطباعة كلمة أحمد
Echo “أحمد” ;
?>
الدوال
وأيضا من الأفكار الجيدة أن تقوم بتقسيم وظائف البرنامج على دوال بحيث أن لكل دالة وظيفتها المعينة :
<?
/*
+- --------------------------------------------------------------+
| هذه الداله تقوم بقسمه العدد علي 2 |
+- --------------------------------------------------------------+
* /
function ($U)
{
$U=$U/2;
return $U ;
}
?>
Regular Expressions
هذه التقنية تساعدك على تفادي الأخطاء في صفحتك عند حدوثه مثل أن يقوم مستخدم ما بكتابة بريد الكتروني غير صحيح (مثال : a@y@.k.d) هذا البريد غير صحيح ولأجل أن تقوم بمنع حصول أي خطأ مثل ذلك وتقييد العبارات التي يدخلها المستخدم فإنك تقوم بإستخدام ال/RE (Regular Expressions) إنك بالأصح تجعل قواعد للكلمات التي يدخلها المستخدم فمثلاً تجعل المستخدم لايدخل سوي أرقام أو حروف فقط أو شكل معين من الكلمات ، تقوم أولاً بإنشاء نمط للكلمه التي تريد المستخدم أن يقوم بادخالها .
النمط (pattren)
ماهو النمط ؟ مارأيك إذا كتب المستخدم جملة في مربع نص تحتوي على عدة كلمات وتريد أن تتأكد من وجود كلمة معينة وسط هذه الجملة ، على حسب ما اخذناه من معلومات على المصفوفات سابقاً نستطيع فعل ذلك كالتالى :
<?
$words=”one, two, three, four, five,”;
$ty =explode (“”,$ty);
foreach ($ty as $w) {
if ($w = = “six”) echo “found string ‘two’”;
}
?>
لقد كان المتغير $words يحتوي على جملة تتكون من عده كلمات وعندما أردنا فحصه قمنا باستخلاصه في مصفوفة ثم بعد ذلك قمنا بفحص المصفوفة باستخدام التكرار foreach ، ومع ذلك الذي فعلناه فإن هذا الاستخدام غير عملي بتاتاً وهنا تبرز قوه Regular Expressions لاحظ الآن كيف نستخرجه بواسطة الـ Regular Expressions :
<?
$words=”one, two, three, four, five,”;
if (ereg(“one”,$words)) echo “لقد وجدت العدد ‘ one’ “ ;
?>
في هذا المثال قمنا باستخدام الدالة (ereg) ووضعنا في خانتها الأولى النمط (pattern) الذي نريد أن نتأكد من وجوده (أوالكلمة المراد البحث عنها) ووضعنا في الخانة الثانية المتغير الذي سيتم البحث فيه عن الكلمة أو النمط .
تقوم الدالة ereg بإعطاء القيمة true إذا تم العثور على الكلمة .
في الواقع هناك استخدامات أكثر فعالية للأنماط .
يمكننا مثلاً تخزين الكلمة إذا تم وجودها في مصفوفة خاصة كالتالى :
<?
$words=”one, two, one, four, five,”;
if (ereg(“one”,$words,$rok)) ;
echo $rok[0];
echo $rok[1];
?>
نقوم بوضع اسم المصفوفة التي نريد تخزين البيانات في الخانة الثالثة .. لاحظ مع أنه يوجد كلمتين في الجملة توافق النمط إلا انه أعطانا كلمة واحدة فقط إذ أن وظيفته أن يتأكد من وجود النمط في الجملة فقط فإذا تأكد من وجودها مرة واحدة استكفى واعتبر الموضوع قد انتهي .
ماذا لو أردنا من التأكد من عدة كلمات ، عند ذلك فإننا نفعل التالى :
<?
$words=”one, two, one, four, five,”;
if (ereg(“one”,$words,$rok)) echo $rok[0];
if (ereg(“two”,$words,$rok)) echo $rok[0];
?>
واريد أن أنبهك أن الـereg يقوم بإنشاء المصفوفة من جديد عند كل استعمال له فخذ حذرك من هذه النقط
أيضا فإن الـereg حساس لحالة الأحرف لاحظ هذا المثال :
<?
$words="one, two, vcx, four, five,";
if (ereg("One",$words,$rok)) echo $rok[0];
?>
لن يقوم بإخراج أي شي فقط لأن حرف الـO مختلف .
أيضا يمكنك البحث عن كلمة يسبقها فراغ مثلاً كالتالى :
<?
$words="one, two, vcxone, four, five,";
if (ereg("one",$words,$rok)) echo $rok[0];
?>
مثال آخر :
<?
$words="oned, two, vcxone, four, five,";
if (ereg("one",$words,$rok)) echo $rok[0];
?>
لاحظ في هذين المثالين أنه مع أن كلمة one غير موجودة بمفردها إنما موجودة كجزء من vcxone و oned ورغم ذلك فإن الدالة لم تأخذ اعتبارا لذلك بينما لو كتبنا كالتالى :
<?
$words="oned, two, vcxone, four, five,";
if (ereg(" one",$words,$rok)) echo $rok[0];
?>
فإنه سيبحث عن الكلمة مفصولة عن أي حرف ولن يجد كلمة كذلك فلن يقوم بكتابة أي شي .
يمكننا أن نفحص قيمة موجودة في متغير كالتالى :
<?
$reu = "one";
$words="one, two, vcxone, four, five,";
if (ereg($reu,$words,$rok)) echo $rok[0];
?>
هل لاحظت أننا فحصنا قيمة المتغير $rue بواسطة ereg مع $word ولم يتطلب منا ذلك أي شي إضافي غير اسم المتغير المراد البحث عن قيمته في الجمله .
يمكننا بالـ Regular Expression استعمال بعض الأحرف بشكل خاص التي لها استعمالها الخاص بواسطة الـ Regular Expressions
الأحرف الخاصة في الـ Regular Expression هي كالتالى :
. * ? + [ ] ( ) { } ^ $ | \
هذه الأحرف لها معناها الخاص في الـ Regular Expression
فقديماً مثلاً كنا نقول أنه لا يمكننا أن نستخدم علامتي تنصيص متداخلة من نفس النوع كالتالى :
<?
$r=”u\””;
?>
ولكي يتجاهل الـPHP هذا المعني فإننا نقوم بوضع (\) قبل علامة التنصيص .
ايضا مع الـ ereg فإن للـ(.) قداستها ولكي يتم تجاهلها فإننا نستخدم الـ(\)
تقوم الـ(.) بأخذ مكان حرف أو فراغ فمثلاً لاحظ المثال التالى :
<?
$P="I love yamen";
if (ereg ("love....",$P,$R)) echo $R[0];
?>
هل لاحظت الناتج ؟؟
ولكي يتم تجاهل قداسة الـ(.) في الـ Regular Expressions نقوم بوضع (\) قبلها . مثال :
<?
$P="I love yamen";
if (ereg ("love\.\.\.\.",$P,$R)) echo $R[0];
?>
في هذا المثال لن يتم طباعة أي شي لأنه لايوجد أي كلمة تطابق (love....) لأن الـ(.) فقدت قداستها وبدأ التدقيق في الكلمة حرفاً حرفاً .
صناعة فئة حروف [xyz]
أقصد بذلك أنني احدد نطاق معين من الكلمة من الممكن أن يكون في هذا النطاق أي حروف من الفئة التي أقوم بتحديدها أو الحروف التي أقوم بتحديدها .
مثال :
<?
$y=”how are you ? “ ;
if (ereg(“h[oe]” , $y)) echo “true”;
?>
هنا قام الـregular expression بالبحث عن أي كلمة تبدأ بالحرف h ومن ثم يتبعها أحد الحرفين o أو e مثال هذه الكلمات :
Hey – He – Hew - Homer
ولكنها لاتطابق :
Hty – Hnt - Hlay
أتمني أن تكون فهمت ما أرمي إليه
يمكننا أيضا أن نقوم بإخبار الـregular expression بأن لا يقوم باختيار كلمات تحتوي على حروف معينة وذلك فقط بإضافة ^
<?
$y=”how are you ? “ ;
if (ereg(“h[^oe]” , $y)) echo “true”;
?>
نقوم هنا بإخبار الـre بأن يقوم بفحص الجملة فإذا وجد أي كلمة تبدأ بـh ولاتحتوي على o أو e فإنه يقوم بإعطاء true وإذا لم يجد يقوم باعطاء false
وهذا الكلام يطابق الكلمات التالية :
Hay - Hana - Hkg
ولايوافق هذه الكلمات :
Home – Hore - Here
يمكننا استعمال اختصارات لبعض الأمور فمثلاً إذا كنا نريد كلمة لاتحتوي على أي رقم كنا سنكتب كالتالى
[^123456789]
يمكننا أن نستعمل اختصار لهذا الموضوع كالتالى :
[^0-9]
وحتي إذا أردنا أن يتأكد من وجود رقم من واحد الى تسعه فقط علينا مسح الـ^
[0-9]
وأيضا الحروف الصغيرة من a الى z
[a-z]
وإذا نريد التأكد من عدم وجودها
[^a-z]
نفس القصة مع الحروف الكبيرة .
هناك اختصارات اخري لهذا الموضوع كالتالى :
الاختصار | المطابق له | معناه ووظيفته |
\d | [0-9] | أي رقم من 0 الى 9 |
\D | [^0-9] | ممنوع الأرقام من 0 الى 9 |
\w | [0-9A-Za-z_] | أي رقم من 1-9 أو حروف A-Z او احرف صغيره او_ |
\W | [^0-9A-Za-z_] | عكس السابق |
\s | [\t\n\r] | يقبل مسافة أو سطر جديد أو علامة جدولة (tab) |
\S | [^\t\n\r] | عكس السابق |
تحديد مكان الكلمة
يمكننا أن نقوم بتحديد مكان الكلمة ، اقصد بذلك أنه يمكنك تحديد مكان الكلمة إذا كانت في بداية أو نهاية النص ونستخد لهذا الأمر العلامتين (^)لتحديد المكان لبداية الجملة و ($) لنهاية الجمل .
مثال :
<?
$y="how are you ? " ;
if (ereg("^h",$y)) echo "true";
?>
هنا سيقوم الـphp بالبحث عن في الحملة فإذا وجد الجملة تبدا بحرف h كانت قيمة الـereg تساوي true وإذا لم يجد كانت قيمة الـereg تساوي false
<?
$y="how gone?" ;
if (ereg("^g",$y)) echo "true";
?>
في هذا المثال ستكون قيمة الـereg خطأ لأن العبارة لاتبدأ بحرفg
يمكننا فعل العكس بواسطة العلامه ($) التي عملها عكس (^) فهي تفحص إذا كان الحرف المراد فحصه موجود في نهاية الجملة
مثال :
<?
$y="how g" ;
if (ereg("g$",$y)) echo "true";
?>
يمكننا أيضا اختيار إذا ما كان واحد من نمطين صحيحاً بواسط العلامة ( | )
<?
$y="how g" ;
if (ereg("^y | g$",$y)) echo "true";
?>
في هذا المثال سيقوم الـPHP بفحص الجملة فإذا وافقت أحد النمطين كانت قيمة الـereg عند ذلك true .
يمكننا أيضا تحديد إذا ما كان حرف أو جملة متكررة بعدد من المرات أو مره واحدة باستخدام أحد هذه الثلاث رموز ( * ، + ، ? )
تقوم علامه الضرب بالتحقق من أن الحرف الذي يسبقها مكرر مرة أو أكثر أو غير موجود بتاتاً
مثال :
Bea*t
وتوافق :
Bet
Beat
Beaat
تقوم علامة الجمع (+) بالتأكد من وجود عنصر مرة أو أكثر :
Bea+t
وتوافق :
Beat
Beaat
Beaaaaat
أما علامة الاستفهام فتقوم بالتأكد من وجود عنصر مرة واحده أو عدم وجوده بتاتاً :
Bea?t
وتوافق :
Bet
Beat
وتأكد دائماً أن هذه الثلاث علامات مسبوقه بحرف .
وعند إرادتك مثلاً التأكد من سبق حرفين أو ثلاث بشكل تحديدي يمكنك استخدام القوسين
مثال :
(wo)?man
ويوافق :
man
woman
يمكننا التأكد من تكرر حرف بشكل معين من المرات أو أكبر من عدد معين من المرات أو أصغر من عدد معين من المرات باستخدام القوسين {x,y}
فمثلاً لو أردنا أن نتأكد من أن حرف (d) مكرر مرتين إلى أربع مرات :
d{2,4}
أما إذا أردنا أن نتأكد من أنه مكرر أكثر من مرتين إلى عدد غير محدود من المرات :
d{2,}
أما إذا أردناه أن يتكرر 4 مرات على الأكثر :
d{,4}
أو إذا اردناه أن يتكرر بعدد محدود من المرات :
d{8}
أخيراً نريد أن نلفت النظر إلى الاختصار (\b) الذي معناه أي شي ولكن ليس حرفاً (الحروف التي بين \w وبين \W تقريباً )
ملخص ما أخذناه من القواعد تجدونه في الجدول التالى :
القاعده | المعني |
[abc] | أي حرف كان a او b او c |
[^abc] | أي حرف غير a و b و c |
[a-z] | كل الحروف من a الى z |
\d\D | \d للارقام و \D لغير الارقام |
\w\W | \w للحروف جميعها و\W لغير الحروف |
\s\S | \s للفراغ (space) و\S لغير الفراغ (no space) |
\b | الحروف التي بين \w و\W |
. | أي حرف |
(abc) | تقوم باعتبار abc كمجموعه .. |
؟ | حرف او مجموعة حروف مكرره مره اوغير مكرره نهائيا |
+ | حرف او مجموعة حروف تتكرر مره او اكثر |
* | حرف او مجموعة حروف تتكرر مره او اكثر او قد لاتتكرر نهائيا |
{x,y} | تكرير بعدد معين من المرات .. |
{,y} | تكرير بحد اقصي من المرات .. |
{x,} | تكرير بحد ادني من المرات ... |
{x} | تكرير بعدد معين من المرات |
^ | في بدايه النص |
$ | في نهايه النص |
تعبير للتاكد من ايميل
^[_a-zA-Z0-9-]+(\.[_A-Za-z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$
شرح التعبير
الرمز | الشرح |
^ | يجب ان يبدا النص |
[_A-Za-z0-9-] | أي حرف من a-z كبيرا كان او صغيرا او _او ارقام |
+ | وقد يكون هذا الحرف متكررا اكثر من مره |
(\.[_A-Za-z0-9-]+) | بالاضافه الى انه قد يتبع النقطه وحروف وارقام |
* | وقد لايتبعه اوقد يتبعه ويتكرر اكثر من مره |
@ | وبعد ذلك يكون لديه حرف ال@ |
[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$ | وايضا نفس القواعد في النهايه |
مثال :
<?
Function mailcheck($mail,$t)
{
$T="^[_a-zA-Z0-9-]+(\.[_A-Za-z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$";
If (EREG($T,$mail))
{
$r="the mail is true";
echo $r;
}
else
{
$r="the mail is not true";
echo $r;
}
return ;
}
mailcheck("alfareees@hotmail.com",$t);
?>
eregi()
الفرق بين هذه الدالة والدالة ereg أنه غير حساسة لحالة الأحرف كبيرة أو صغيرة أي أنه يمكننا كتابة المثال السابق كالتالى :
<?
Function mailcheck($mail,$t)
{
$T="^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$";
If (EREG($T,$mail))
{
$r="the mail is true";
echo $r;
}
else
{
$r="the mail is not true";
echo $r;
}
return ;
}
mailcheck("alfareees@hotmail.com",$t);
?>
ereg_replace()
ماذا لو أردت تحرير عبارة ما من أحرف معينة وقد تكون متكررة في جملة أوغير ذلك
لنفرض أن لدينا العبارة التالية :
Mohmed love his game …….
ونريد أن نتخلص من النقاط التي في نهاية العبارة
أو لدينا مثلاً هذا المسار :
C:\windows\desktop
ونريد أن نستبدل العلامة (\) بـ (/)
كل ذلك ممكن بواسطة الدالة ereg_replace وقواعد الـrgular expression التي أخذناها سابقاً
البنية التي نستخدمها للدالة كالتالى :
Ereg_replace(reg,string,var);
نضع في مكان reg القاعدة للـ regular expression ونضع مكان الـstring الحرف الجديد ونضع بدلاً من الـvar المتغير الذي نريد استخلاص الحروف منه .
مثال :
<?
$path =" C:\windows\desktop";
$tell= "Mohmed love his game .....";
$newpath= Ereg_replace("[\.]","/",$path);
$newtell= Ereg_replace("\.","",$tell);
echo $newpath;
echo "<br><br>";
echo $newtell;
?>
أساليب أخري لتتبع الأخطاء
استخدام عباره echo
هو من أقدم الاساليب وكان يستخدم مثلاً في فحص بعض متغيرات نموذج فمثلاً أنت لديك نموذج يقوم بإرسال معلومات إلى النموذج وقد تستخدم في اختبار الأخطاء المنطقية التي يستصعب متابعتها في الكود
مثال :
<?
Echo “this is : $name”;
Echo “<br>”;
Echo “this is : $Email”;
//كود يقوم بمعالجة معلومات المتغيرين
//طباعة المتغيرين بعد اداء عملية المعالجة ورؤية النتائج
Echo “this is after : $name”;
Echo “<br>”;
Echo “this is after: $Email”;
?>
فحص كود الـhtml
قد تستخدم كود جافا سكربت ويتم إخفاء الأخطاء وسط علامات التعليقات فعليك حينئذ فحص كود الـhtml لرؤية إن كان هناك بعض الأخطاء المخفية أم لا .
تجاهل الأخطاء
لنفترض أنك تعلم أن الدالة التي صنعتها بها أخطاء ولكنك تريد تجاهل هذه الأخطاء فكل ماعليك أن تقوم بوضع @ أمام الدالة لكي يتم تجاهل الخطأ عند حدوثه .
مثلاً نحن نعلم أن القسمة على الصفر من الأشياء الغير مقبولة في الـPHP وأنت صنعت دالة تقوم بالقسمة على صفر ولن يتم تنفيذها لأنها بالأصل خطأ ولكنك تريد أن يقوم PHP بتجاهلها فكل ما عليك أن تفعله هو وضع @ أمام الدالة .
مثال :
<?
function amail ($y)
{
$y=$y/0;
return $y;
}
$s= @amail(44);
echo $s;
?>