اذهب إلى المحتوى
  • 0

مشكلة ظهور بيانات ال form في الرابط

Omer Amad

السؤال

كيفكم يا أصدقاء.... فيه عندي فورم أنشأت لها هذا الكود حتى لما يتم ارسال المعلومات تظهر رساله تم الإرسال مع رقم ال id الموجود في database.... الموضوع شغال مفيش مشكله... لكن لما يتم ارسال المعلومات يظهر رقم ال id في رابط فرق كيف يتم معالجة المشكلة دي.... رقم ال id الظاهر في الصوره هو 259IMG_20240710_013722_636_edit_635984782973847.thumb.jpg.f69403f26c93124231d94addd7013330.jpgIMG_20240709_205948_274_edit_636154044226699.thumb.jpg.94053888ed33d2370ba6f83f71ce157b.jpgIMG_20240710_013651_106_edit_636092839228910.thumb.jpg.b6c38197c4d0ea4944f7cdc01127e5f8.jpg

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

ذلك نتيجة استخدام طريقة GET لإرسال البيانات أو عند استخدام إعادة التوجيه مع تضمين البيانات في الرابط. هذا هو السبب في ظهور الـ id في الرابط لحل هذه المشكله يمكنك استخدام طريقة أخرى لتوجيه المستخدم بعد إتمام عملية الإرسال. يمكن استخدام جلسات (Sessions) أو الحقول المخفية (Hidden Fields) بدلا من تمرير المعلومات عبر الرابط.

الخطوه الاولي يجب تفعيل الجلسات في أعلى ملف PHP:

<?php
session_start();
?>

ثم تحديث الكود لإرسال البيانات عبر الجلسة بدلاً من الرابط:

if (isset($_POST['submit'])) {
    // افترض أن هناك عملية لإدخال البيانات في قاعدة البيانات هنا
    $last_id = mysqli_insert_id($conn);
    $_SESSION['last_id'] = $last_id;
    header("Location: index.php");
    exit();
}

وبعد ذلك يجب عرض رسالة التأكيد في صفحة الاستقبال (index.php):

<?php
session_start();

if (isset($_SESSION['last_id'])) {
    echo "تم الإرسال رقم الكود المدخل هو " . $_SESSION['last_id'];
    unset($_SESSION['last_id']); // حذف قيمة الجلسة بعد العرض
}
?>

بهذه الطريقة، تم تخزين الـ id في الجلسة بدلا من تمريره عبر الرابط، وعرضه على الصفحة عند إعادة التوجيه. سيساعد ذلك في منع ظهور الـ id في شريط العنوان الخاص بالمتصفح.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 8 ساعة قال Khaled Osama3:

ذلك نتيجة استخدام طريقة GET لإرسال البيانات أو عند استخدام إعادة التوجيه مع تضمين البيانات في الرابط. هذا هو السبب في ظهور الـ id في الرابط لحل هذه المشكله يمكنك استخدام طريقة أخرى لتوجيه المستخدم بعد إتمام عملية الإرسال. يمكن استخدام جلسات (Sessions) أو الحقول المخفية (Hidden Fields) بدلا من تمرير المعلومات عبر الرابط.

الخطوه الاولي يجب تفعيل الجلسات في أعلى ملف PHP:

<?php
session_start();
?>

ثم تحديث الكود لإرسال البيانات عبر الجلسة بدلاً من الرابط:

if (isset($_POST['submit'])) {
    // افترض أن هناك عملية لإدخال البيانات في قاعدة البيانات هنا
    $last_id = mysqli_insert_id($conn);
    $_SESSION['last_id'] = $last_id;
    header("Location: index.php");
    exit();
}

وبعد ذلك يجب عرض رسالة التأكيد في صفحة الاستقبال (index.php):

<?php
session_start();

if (isset($_SESSION['last_id'])) {
    echo "تم الإرسال رقم الكود المدخل هو " . $_SESSION['last_id'];
    unset($_SESSION['last_id']); // حذف قيمة الجلسة بعد العرض
}
?>

بهذه الطريقة، تم تخزين الـ id في الجلسة بدلا من تمريره عبر الرابط، وعرضه على الصفحة عند إعادة التوجيه. سيساعد ذلك في منع ظهور الـ id في شريط العنوان الخاص بالمتصفح.

لم تضبط

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

المشكلة لديك أنك تقوم بإرسال ال form عن طريق method التي تسمى get و هذا لا يجب أن يتم حيث أن هذه الطريقة تفضل فقط في جلب البيانات حيث ستجد أن كل شئ تم إرساله في ال form تظهر في العنوان .

ولكن في حال إرسال بيانات لإضافتها فأفضل شئ في ال form هو جعلها ترسل الطلب عبر post وذلك للأمان حيث لا يتم إرسال البيانات في الرابط.

فتخيل لو هناك form لتسجيل مستخدم جديد وقام بكتابة كلمة مرور فستظهر في العنوان إن كانت من توع get ومن الممكن أن يرى أي شخص هذا الرمز بعدة طرق . أما في ال post فيتم إرسال البيانات في جسم الطلب ومن الصعب رؤيتها لذلك هي طريقة آمنه .

لهذا في الواجهة الأمامية عند كل form قم بإضافة التالي :

<form action="action.php" method="post">

لاحظ كيف أضفنا خاصية method="post" وهكذا سيتم إرسال الطلب عبر post وليس get حيث أن القيمة الإفتراضية هي get .

لذلك فقط قم بإضافة  method="post" في أى form لديك ترسل البيانات .

وفي الواجهة الخلفية قم بتغير أى $_GET إلى $_POST .

$_GET // قم بتغيرها إلى 
$_POST  
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 5 دقائق مضت قال Baker Mohammed:

لم تضبط

بتاريخ 5 دقائق مضت قال محمد عاطف17:

المشكلة لديك أنك تقوم بإرسال ال form عن طريق method التي تسمى get و هذا لا يجب أن يتم حيث أن هذه الطريقة تفضل فقط في جلب البيانات حيث ستجد أن كل شئ تم إرساله في ال form تظهر في العنوان .

ولكن في حال إرسال بيانات لإضافتها فأفضل شئ في ال form هو جعلها ترسل الطلب عبر post وذلك للأمان حيث لا يتم إرسال البيانات في الرابط.

فتخيل لو هناك form لتسجيل مستخدم جديد وقام بكتابة كلمة مرور فستظهر في العنوان إن كانت من توع get ومن الممكن أن يرى أي شخص هذا الرمز بعدة طرق . أما في ال post فيتم إرسال البيانات في جسم الطلب ومن الصعب رؤيتها لذلك هي طريقة آمنه .

لهذا في الواجهة الأمامية عند كل form قم بإضافة التالي :

<form action="action.php" method="post">

لاحظ كيف أضفنا خاصية method="post" وهكذا سيتم إرسال الطلب عبر post وليس get حيث أن القيمة الإفتراضية هي get .

لذلك فقط قم بإضافة  method="post" في أى form لديك ترسل البيانات .

وفي الواجهة الخلفية قم بتغير أى $_GET إلى $_POST .

$_GET // قم بتغيرها إلى 
$_POST  

 

انا بحاجة الى ظهور رقم ال id بعد ما المرسل يرسل معلوماته تظهر له رسالة تم الارسال بنجاح مع رقم id الموجود في الداتا بيز 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 دقيقة مضت قال Baker Mohammed:

انا بحاجة الى ظهور رقم ال id بعد ما المرسل يرسل معلوماته تظهر له رسالة تم الارسال بنجاح مع رقم id الموجود في الداتا بيز 

إذا المشكلة ليست هنا المشكلة أنك ترسله في الرابط هنا :

image.thumb.png.b6465ae96889b18abde8225a6b594583.png

وهكذا يظهر لديك في الرابط . لهذا لا تقوم بإرساله في الرابط فقط قم بطباعته بعد رجوعة من قاعدة البيانات مباشرة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 4 دقائق مضت قال محمد عاطف17:

إذا المشكلة ليست هنا المشكلة أنك ترسله في الرابط هنا :

image.thumb.png.b6465ae96889b18abde8225a6b594583.png

وهكذا يظهر لديك في الرابط . لهذا لا تقوم بإرساله في الرابط فقط قم بطباعته بعد رجوعة من قاعدة البيانات مباشرة

تقصد احذف هذه؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 14 دقائق مضت قال Baker Mohammed:

تقصد احذف هذه؟

نعم يجب حذفها ولكن هكذا لن تقوم بإعادة تحميل الصفحة لذلك هذا الكود لن يتم طباعته 

image.png.4f09d9927b1aadc9fec42e058cad8e2d.pngحيث أن هذا الكود يقرأ الرقم من الرابط وليس من قاعدة البيانات .

فإذا كان هذا الكود في نفس الملف الذي فيه الرابط الذى ستقوم بحذفه إذا قم بطباعة الجملة مكانه .

أما إذا كان في ملف أخر إذا يفضل وضعه في ال session هكذا :

session_start();
$_SESSION['saved_id'] = mysqli_insert_id($conn);
header("Location: index.php");

حيث هذا الكود يتم وضعه مكان الرابط ولاحظ أن أخر سطر يقوم بالتوجيه للملف index.php .

والآن في ملف index.php نكتب التالي :

session_start();

if (isset($_SESSION['saved_id'])) {
    echo "تم الإرسال رقم الكود المدخل هو " . $_SESSION['saved_id'];
    unset($_SESSION['saved_id']);
}

وهكذا يجب أن تحل المشكلة .

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...