تحسين أداء وأمان PHP Code: إرشادات MySQLi وممارسات البرمجة السليمة
في البداية، يجدر بك التحقق من الشيفرة البرمجية للتأكد من عدم وجود أخطاء نحوية أو أخطاء في البنية. يظهر من الشيفرة أن هناك بعض الأخطاء التي يمكن تحسينها.
أولاً، يُلاحظ أنك لم تضيف علامة اقتباس حول مسار ملف التكوين (config.php
) في السطر الثاني. يجب عليك تعديل هذا الجزء ليكون كالتالي:
-
كيفية تجنب خطأ JSON.typeMismatch05/04/2024
-
تنفيذ تسجيل الدخول التلقائي بواسطة PHP19/03/2024
-
تحليل تعليمات callq اللامفهومة في شيفرة C++31/01/2024
phpinclude 'config.php';
ثانيًا، يتم استخدام دالة mysql_select_db
، ولكن يفترض أن يتم استخدام دالة mysqli_select_db
في حال كنت تستخدم اتصال MySQLi. لذا، يفضل تحديث هذا الجزء من الشيفرة ليصبح كالتالي:
phpmysqli_select_db($conn, $sql_db);
ثالثًا، هناك نقص في فاصلة منقوطة (;
) في نهاية تعريف الاستعلام SQL. يجب إضافة فاصلة منقوطة بعد تعريف الاستعلام كما يلي:
php$sql = ("INSERT INTO X (
NXTAddress,
NXTPubKey,
AltCoinAddr,
AltCoinKeys,
PoBTXID,
ContactDateCreated
)
VALUES (
'$nxtaddr',
'$nxtkey',
'$coinaddr',
'$coinkey',
'$burntxid',
NOW()
)");
رابعًا، في السطر الأخير، يجب أن تضيف فاصلة منقوطة بعد استدعاء دالة mysql_query
:
phpmysql_query($sql, $conn);
وأخيرًا، يجب تحديث استخدام الوظائف المتعلقة بقاعدة البيانات إلى MySQLi بدلاً من MySQL، حيث أن استخدام دوال MySQL تم تقديمه للمرة الأخيرة في PHP 5.5.0 وقد تمت إزالتها في PHP 7.0.0.
المزيد من المعلومات
بالطبع، يُفضل دائمًا اتباع ممارسات برمجية صحيحة للحصول على أفضل أداء وأمان. إليك بعض النصائح والمعلومات التي يمكن أن تساعدك في تحسين شيفرة البرنامج الخاصة بك:
-
استخدام MySQLi أو PDO:
يُفضل استخدام مكتبات MySQLi أو PDO بدلاً من تفضيل MySQL، حيث تقدم هذه المكتبات مزايا أمان إضافية وتدعم ميزات أكثر حديثة.على سبيل المثال، يمكن تحديث اتصال قاعدة البيانات إلى MySQLi كما يلي:
php$conn = mysqli_connect($db_host, $db_user, $db_password, $db_name);
-
استخدام استعلامات معلمات:
يُفضل استخدام استعلامات معلمات لتجنب هجمات حقن SQL. يمكنك استخدام استعلامات معلمات مع PDO أو MySQLi بسهولة.على سبيل المثال باستخدام MySQLi:
php$sql = "INSERT INTO X ( NXTAddress, NXTPubKey, AltCoinAddr, AltCoinKeys, PoBTXID, ContactDateCreated ) VALUES (?, ?, ?, ?, ?, NOW())"; $stmt = mysqli_prepare($conn, $sql); mysqli_stmt_bind_param($stmt, 'sssss', $nxtaddr, $nxtkey, $coinaddr, $coinkey, $burntxid); mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt);
-
التحقق من الاتصال بقاعدة البيانات:
قبل تنفيذ استعلامات SQL، يُفضل دائمًا التحقق من نجاح الاتصال بقاعدة البيانات لتجنب الأخطاء غير المتوقعة.phpif (!$conn) { die('Could not connect: ' . mysqli_connect_error()); }
-
التحقق من نجاح تنفيذ الاستعلام:
بعد تنفيذ الاستعلام، يُفضل التحقق من نجاح التنفيذ والتعامل مع أي أخطاء إذا كانت موجودة.phpif (mysqli_query($conn, $sql)) { echo "تم إضافة البيانات بنجاح."; } else { echo "خطأ في تنفيذ الاستعلام: " . mysqli_error($conn); }
-
تجنب استخدام دوال متوقفة:
يُفضل استخدام دوال PHP الحديثة والمستمرة الدعم بدلاً من الدوال التي قد تكون قديمة أو متوقفة الدعم.على سبيل المثال، استخدم
mysqli_real_escape_string
بدلاً منmysql_real_escape_string
لتجنب التحذيرات وضمان التوافق مع الإصدارات الحديثة من PHP:php$nxtaddr = mysqli_real_escape_string($conn, $_POST["txin_src"]);
باعتبارها مجرد نصائح عامة، يُفضل دائمًا فحص الشيفرة بعناية للتحقق من عدم وجود أخطاء أخرى وضمان أمان التطبيق الخاص بك.