البرمجة

تحسين أمان وأداء الشيفرة البرمجية في PHP باستخدام MySQLi

عنوان: حل مشكلة خطأ الصيغة في PHP وتصحيح الشيفرة البرمجية

المقال:

تواجه الكثير من المطورين في لغة PHP مشاكل تتعلق بأخطاء الصيغة، وفي هذا السياق، نجد الرسالة التالية: “Parse error: syntax error, unexpected ‘$user’ (T_VARIABLE) in C:\xampp\htdocs\home\login.php on line 4”. يعني هذا الخطأ أن هناك مشكلة في الصياغة بالسطر رقم 4 في ملف login.php.

لحل هذه المشكلة، يجب متابعة الشيفرة البرمجية المقدمة. في البداية، يظهر أن هناك نقص في الشيفرة، حيث نجد أن هناك فاصلة منقوطة ناقصة في نهاية السطر رقم 3 بين قيمة “localhost” وتعريف المتغير “$user”. يجب إضافة فاصلة منقوطة بين القيمتين كما يلي:

php
$host = "localhost";

ثم يجب التحقق من السطر الرابع، الذي يحمل الخطأ. يتضح أن هناك نفس المشكلة، حيث يفتقر السطر إلى فاصلة منقوطة. يجب إصلاحه كما في المثال التالي:

php
$user = "root";

بعد إصلاح هذين السطرين، يمكن استكمال متابعة الشيفرة البرمجية. إلا أنه يجب التنبيه إلى أن استخدام دوال MySQL التي تظهر في الشيفرة مثل “mysql_connect” و “mysql_select_db” أصبح قديمًا، ويُفضل استخدام دوال MySQLi أو PDO في الوقت الحالي لأسباب أمانية وأداء أفضل.

بمجرد إجراء هذه التعديلات، يمكن للمطور تشغيل الشيفرة بدون مشاكل خطأ الصيغة. وبهذا، يكون قد تم حل المشكلة بنجاح، ويمكن للمطور متابعة عمله في تطوير التطبيق بدون عوائق.

المزيد من المعلومات

بالطبع، دعونا نقوم بتوسيع المعلومات حول الكود البرمجي وتقديم نصائح إضافية لتحسين الأداء والأمان.

أولًا وقبل كل شيء، يجب أن نشير إلى أن دوال MySQL التي تظهر في الشيفرة مثل “mysql_connect” و “mysql_select_db” قديمة وقد تم إهمالها في إصدارات PHP الحديثة. يُفضل استخدام دوال MySQLi أو PDO لتحسين أمان الاتصال بقاعدة البيانات وتفادي مشاكل الأمان والأداء.

لنقم بتعديل الشيفرة باستخدام MySQLi، يمكن تحويل الجزء الخاص بالاتصال بقاعدة البيانات إلى الشكل التالي:

php
$host = "localhost"; $user = "root"; $pass = ""; $db = "table"; // اتصال باستخدام MySQLi $mysqli = new mysqli($host, $user, $pass, $db); // التحقق من الاتصال if ($mysqli->connect_error) { die("فشل الاتصال: " . $mysqli->connect_error); } // استخدام دوال MySQLi لتنفيذ الاستعلام if (isset($_POST['username'])) { $username = $mysqli->real_escape_string($_POST['username']); $password = $mysqli->real_escape_string($_POST['password']); $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = $mysqli->query($sql); if ($result->num_rows == 1) { echo "Super"; exit(); } else { echo "Siper"; exit(); } } // إغلاق الاتصال بقاعدة البيانات $mysqli->close();

هذا التعديل يساعد على تعزيز أمان التفاعل مع قاعدة البيانات ويتيح استخدام دوال MySQLi الحديثة.

علاوة على ذلك، يُفضل استخدام استعلامات مُعدة مُسبقًا (Prepared Statements) للوقاية من هجمات حقن SQL. يمكن تحسين جزء تنفيذ الاستعلام كالتالي:

php
// استخدام استعلام معد مُسبقًا $sql = "SELECT * FROM users WHERE username=? AND password=?"; $stmt = $mysqli->prepare($sql); $stmt->bind_param("ss", $username, $password); $stmt->execute(); $result = $stmt->get_result(); // استخدام نتيجة الاستعلام if ($result->num_rows == 1) { echo "Super"; exit(); } else { echo "Siper"; exit(); } // إغلاق الاستعلام والاتصال بقاعدة البيانات $stmt->close(); $mysqli->close();

تطبيق هذه التحسينات يسهم في جعل الشيفرة أكثر أمانًا وقوة، مع الحفاظ على أفضل أداء في التفاعل مع قاعدة البيانات.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر