البرمجة

نقل بيانات مربع النص في PHP باستخدام جلسات وحفظها في قاعدة البيانات

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

demo1.php:
في هذا الملف، يجب عليك التأكد من تنظيم شيفرتك بشكل جيد واستخدام الاتصال بقاعدة البيانات بشكل صحيح.

  1. الاتصال بقاعدة البيانات:
    يُفضل استخدام اتصال PDO بدلاً من استخدام mysql_connect القديم. PDO يوفر توجيه محسّن لقواعد البيانات ويزيد من أمان التطبيق. الكود يمكن أن يكون كالتالي:

    php
    session_start(); if ($_SERVER['REQUEST_METHOD'] == 'POST') { if ($_POST['act'] == "add") { $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $nationality = $_POST['nationality']; try { $conn = new PDO("mysql:host=localhost;dbname=reg", "root", ""); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // استخدم استعلام التحضير لتجنب هجمات حقن SQL $stmt = $conn->prepare("INSERT INTO registration (firstname, lastname, nationality) VALUES (:firstname, :lastname, :nationality)"); $stmt->bindParam(':firstname', $firstname); $stmt->bindParam(':lastname', $lastname); $stmt->bindParam(':nationality', $nationality); $stmt->execute(); } catch (PDOException $e) { echo "Error: " . $e->getMessage(); } } } ?>

    تأكد من استخدام استعلامات تحضير لتجنب هجمات حقن SQL.

  2. الرابط إلى demo2.php:
    في النموذج، استخدم الزر الذي يقوم بتوجيه المستخدم إلى demo2.php بطريقة POST:

    html
    <form method="POST" action="demo2.php"> <button type="submit" id="next" name="next">التاليbutton> form>

    ملاحظة: لا تحتاج إلى تعيين القيم في $_SESSION مرتين، يكفي التعيين الأول.

demo2.php:
هناك تحسينات يمكن إجراؤها في هذا الملف أيضًا.

  1. الاتصال بقاعدة البيانات:
    استخدم PDO أيضًا هنا لضمان السلامة والأمان:

    php
    session_start(); if ($_SERVER['REQUEST_METHOD'] == 'POST') { if ($_POST['act'] == "add") { // ... الحصول على القيم من $_POST ... try { $conn = new PDO("mysql:host=localhost;dbname=reg", "root", ""); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare("INSERT INTO registration (firstname, lastname, nationality, mobileno, email, commaddr, city, pincode, state, permaddr) VALUES (:firstname, :lastname, :nationality, :mobileno, :email, :commaddr, :city, :pincode, :state, :permaddr)"); // ... ربط القيم ... $stmt->execute(); } catch (PDOException $e) { echo "Error: " . $e->getMessage(); } } } ?>
  2. النموذج:
    قم بتحسين نموذجك ليحتوي على أسلوب POST وزر إرسال:

    html
    <form method="POST"> <button type="submit" name="submit">إرسالbutton> form>

بتنظيم الشيفرة واستخدام استعلامات التحضير في قاعدة البيانات، يمكنك تحسين أمان التطبيق وضمان عملية التحويل السليمة للبيانات من صفحة demo1.php إلى demo2.php وحفظها في قاعدة البيانات.

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

بالطبع، دعونا نوسع قليلاً على الموضوع ونقدم مزيد من التفاصيل حول الكود الذي قدمته لنقل بيانات مربع النص إلى الصفحة التالية في PHP.

توثيق الكود:

  1. التعليقات:
    يفضل دائمًا إضافة تعليقات لشرح الشيفرة وجعلها أكثر فهمًا للقراء. قم بإضافة تعليقات لشرح أهم الخطوات والأقسام في الكود.

    php
    // تأكيد بداية الجلسة session_start(); // التحقق من طلب POST if ($_SERVER['REQUEST_METHOD'] == 'POST') { // التحقق من نوع العملية (إضافة) if ($_POST['act'] == "add") { // ... الحصول على قيم مربع النص ... try { // الاتصال بقاعدة البيانات باستخدام PDO $conn = new PDO("mysql:host=localhost;dbname=reg", "root", ""); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // إعداد استعلام التحضير لإدراج البيانات $stmt = $conn->prepare("INSERT INTO registration (firstname, lastname, nationality) VALUES (:firstname, :lastname, :nationality)"); // ربط القيم بمتغيرات $stmt->bindParam(':firstname', $firstname); $stmt->bindParam(':lastname', $lastname); $stmt->bindParam(':nationality', $nationality); // تنفيذ الاستعلام $stmt->execute(); } catch (PDOException $e) { // التعامل مع أي أخطاء في قاعدة البيانات echo "Error: " . $e->getMessage(); } } }
  2. الأمان:
    يُفضل دائمًا تحسين الأمان من خلال تنظيف وتحقق البيانات المدخلة. في هذا السياق، يمكنك استخدام دوال مثل htmlspecialchars لتجنب هجمات Cross-Site Scripting (XSS)، وكذلك استخدام استعلامات التحضير لتجنب هجمات حقن SQL.

تحسينات في demo2.php:

  1. التوثيق:
    قم بنفس العمل في demo2.php، أضف توثيقًا وتعليقات لتوضيح سير العمل والخطوات المهمة.

  2. الأمان:
    ضمن قاعدة البيانات، استخدم استعلامات التحضير أيضًا لتجنب حقن SQL في demo2.php.

    php
    // التحقق من طلب POST if ($_SERVER['REQUEST_METHOD'] == 'POST') { // التحقق من نوع العملية (إضافة) if ($_POST['act'] == "add") { // ... الحصول على قيم مربع النص ... try { // الاتصال بقاعدة البيانات باستخدام PDO $conn = new PDO("mysql:host=localhost;dbname=reg", "root", ""); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // إعداد استعلام التحضير لإدراج البيانات $stmt = $conn->prepare("INSERT INTO registration (firstname, lastname, nationality, mobileno, email, commaddr, city, pincode, state, permaddr) VALUES (:firstname, :lastname, :nationality, :mobileno, :email, :commaddr, :city, :pincode, :state, :permaddr)"); // ربط القيم بمتغيرات // ... ربط القيم ... // تنفيذ الاستعلام $stmt->execute(); } catch (PDOException $e) { // التعامل مع أي أخطاء في قاعدة البيانات echo "Error: " . $e->getMessage(); } } }
  3. النموذج:
    أضف توثيقًا وتعليقات في نموذج demo2.php واحرص على استخدام طريقة POST وزر إرسال.

    html
    <form method="POST"> <button type="submit" name="submit">إرسالbutton> form>

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

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

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

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

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