مقدمة: لماذا يتخلى البعض عن PHP بينما يحقق الآخرون أرباحًا منه؟
\n\nقررت تعلم PHP. اختيار ممتاز! هذه اللغة تشغل 78% من جميع المواقع على الإنترنت - من المدونات البسيطة إلى عمالقة مثل Facebook (تقريبًا). لكن هناك مشكلة واحدة: العديد من المبتدئين يقعون في نفس الأخطاء التي تحول التعلم إلى جحيم.
\n\nلماذا يحدث هذا؟ PHP لغة ماكرة. إنها تتسامح مع الأخطاء الغبية، لكنها لا تغفر الجهل بالمبادئ الأساسية. تكتب كودًا، يعمل، الموقع يتحمل - وتعتقد أن كل شيء رائع. لكن بعد شهر، لا تستطيع فهم الكود الخاص بك المكون من 500 سطر، ويتم اختراق موقعك في 5 دقائق.
\n\nفي هذه المقالة، سأشرح أكثر 5 أخطاء شيوعًا في تعلم PHP التي يرتكبها المبتدئون. سأعرض أمثلة حقيقية للكود، وأشرح لماذا هذه الممارسات سيئة، وأقدم حلولًا محددة. إذا وجدت نفسك في أي نقطة - لا تقلق، هذا طبيعي. فقط قم بالتصحيح.
\n\nالخطأ رقم 1: خلط PHP و HTML في ملف واحد بدون هيكل
\n\nهذا كلاسيكي. يكتب المبتدئ شيئًا مثل:
\n\n<?php\n$username = "أحمد";\necho "<html><body><h1>مرحبًا، " . $username . "!</h1>";\n?>\n<p>هذا نص بعد PHP</p>\n<?php\necho "</body></html>";\n?>\n\nيبدو أنه يعمل. لكن حاول إضافة حلقة، شرط، عشر صفحات - وستغرق في فوضى من الوسوم و echo. هذا الكود مستحيل القراءة والصيانة والتصحيح.
\n\nلماذا هذا سيء؟
\n- \n
- انتهاك مبدأ فصل المسؤوليات (MVC). \n
- عند أدنى تغيير في التصميم، تعيد كتابة نصف المنطق. \n
- محررات الكود تصاب بالارتباك من الوسوم المختلطة. \n
ما الحل الصحيح؟
\nاستخدم القوالب (Templating). حتى بدون أطر العمل، يمكنك فصل المنطق عن العرض:
\n\n<?php\n// logic.php\n$data = ['name' => 'أحمد', 'age' => 25];\ninclude 'template.php';\n?>\n\n<!-- template.php -->\n<!DOCTYPE html>\n<html>\n<body>\n <h1><?= htmlspecialchars($data['name']) ?></h1>\n <p>العمر: <?= $data['age'] ?> سنة</p>\n</body>\n</html>\n\nلاحظ: استخدمت الوسم القصير <?= والدالة htmlspecialchars() - هذه حماية من هجمات XSS. غالبًا ما ترتبط أخطاء تعلم PHP بتجاهل الأمان.
الخطأ رقم 2: تجاهل حقن SQL (الأكثر خطورة)
\n\nفي عام 2025، كتابة هذا الكود جريمة:
\n\n$id = $_GET['id'];\n$query = "SELECT * FROM users WHERE id = $id";\n$result = mysqli_query($conn, $query);\n\nإذا قمت بتمرير ?id=1 OR 1=1 في الرابط، ستحصل على جميع المستخدمين. إذا قمت بتمرير ?id=1; DROP TABLE users - وداعًا لقاعدة البيانات. هذا هو حقن SQL، وهو أول ما يفحصه المخترقون.
كيف تصلحه؟
\nاستخدم الاستعلامات المحضرة (prepared statements). هكذا يتم ذلك في PHP الحديثة مع PDO:
\n\n$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');\n$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');\n$stmt->execute(['id' => $_GET['id']]);\n$user = $stmt->fetch();\n\nقاعدة البيانات تقوم بتأمين القيمة بنفسها. يصبح الحقن مستحيلًا. تذكر: لا تقم أبدًا بإدخال بيانات المستخدم مباشرة في استعلام SQL. هذا أحد أهم أخطاء تعلم PHP التي قد تكلفك موقعك.
\n\nالخطأ رقم 3: استخدام الدوال والأساليب القديمة
\n\nالإنترنت مليء بدروس من عام 2010 تعلمك:
\n- \n
mysql_connect()- تمت إزالته في PHP 7.0. \nereg()بدلاً منpreg_match(). \nsplit()بدلاً منexplode(). \n- إغلاق الوسم
?>في نهاية ملف PHP النقي. \n
لماذا هذا سيء؟ لأن