الأخطاء المنطقية (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 ;