جود بدر نشر 31 يوليو 2023 أرسل تقرير نشر 31 يوليو 2023 (معدل) السلام عليكم ظاهر لي باعلى الصفحة هذا السطر وما قدرت اعرف وش المشكلة ؟ انا طبقت مع الكورس بالضبط لكن يظهر لي هذا السطر Deprecated: Constant FILTER_SANITIZE_STRING is deprecated in /Applications/XAMPP/xamppfiles/htdocs/php_flexcourses/contact.php on line 6 رجاءً الي يشرح لي الحل يشرحة بالتفصيل لان انا جديدة بـ php شكرا تم التعديل في 31 يوليو 2023 بواسطة Mustafa Suleiman تعديل عنوان السؤال 1 اقتباس
0 Mustafa Suleiman نشر 31 يوليو 2023 أرسل تقرير نشر 31 يوليو 2023 أرجو إن كان السؤال متعلق بدورة PHP في أكاديمية حسوب، التعليق أسفل الفيديو المتعلق بالسؤال، وطرح الأسئلة العامة هنا في قسم أسئلة البرمجة لمساعدتك بشكل أفضل. وبخصوص سؤالك، الرسالة التي تظهر لك هي تحذير من PHP يفيد بأن الثابت (constant) FILTER_SANITIZE_STRING قد تم إهماله (deprecated) وفي PHP، الثوابت هي متغيرات لا يمكن تغيير قيمتها بعد تعريفها، وتستخدم لتعيين قيم ثابتة. والمشكلة هي أنه بدءًا من إصدار PHP 8.1، تم وضع علامة deprecated على الدالة FILTER_SANITIZE_STRING وأصبحت قديمة وغير مستخدمة، ولكن لا مشكلة، فالدالة ما زالت تعمل في النسخ الحديثة من PHP، ولكن يُنصح باستخدام وسائل أخرى لتحقيق نفس الغرض. وعليك استبدال دالة FILTER_SANITIZE_STRING بدالة أخرى، وهناك العديد من الدالات التي يمكنك استخدامها، وإحدى الخيارات الشائعة هي دالة htmlspecialchars(). وإليك مثال لكيفية استخدام دالة htmlspecialchars(): $sanitized_string = htmlspecialchars($_POST['name']); وتستقبل الدالة htmlspecialchars() سلسلة كإدخال وتعيد سلسلة مع جميع الأحرف الخاصة المشفرة، مما يساعد على منع هجمات حقن النص التشعبي (XSS). وبذلك يتم حل المشكلة وتتجنبي ظهور التحذير، وإذا أردتي الشرح بشكل مفصل، فإليك التوضيح: والفلتر الذي تم إلغاء دعمه كان له غرض غير واضح، ولم يكن من السهل معرفة بالضبط ماذا كان من المفترض أن يحقق أو متى ينبغي استخدامه. وكان أيضًا يُشتبه بأنه نفس فلتر النص الافتراضي (FILTER_UNSAFE_RAW) بسبب اسمه، على الرغم من أن الفلتر الافتراضي للنص الآمن هو FILTER_UNSAFE_RAW، وقرر مجتمع PHP أنه لا يجب دعم استخدام هذا الفلتر بعد الآن. والفلتر كان يزيل كل محتوى بين علامات <>، كما كان يزيل جميع بايتات NUL. وأخيرًا، كان يقوم بترميز ' و " إلى كيانات HTML. ولاستبداله لديك خياران: استخدم فلتر النص الآمن الافتراضي FILTER_UNSAFE_RAW الذي لا يقوم بأي عملية تصفية، وينبغي استخدامه إذا كنتِ لا تعرفين بالضبط سلوك FILTER_SANITIZE_STRING وترغبين فقط في استخدام فلتر افتراضي يمنحك قيمة النص. وفي حال كنتِ تستخدمين ذلك الفلتر للحماية ضد ثغرات XSS (Cross-Site Scripting)، فاستبدليه باستخدام htmlspecialchars(). اقتباس
0 بلال زيادة نشر 1 أغسطس 2023 أرسل تقرير نشر 1 أغسطس 2023 تظهر رسالة الخطأ "Deprecated: Constant FILTER_SANITIZE_STRING is deprecated" بسبب استخدام ثابت (Constant) يُسمى FILTER_SANITIZE_STRING الذي أصبح قديمًا (مهجورًا) في PHP. هذا يعني أن الثابت الذي تم استخدامه قد لا يُدعم في إصدارات PHP الحديثة، وينبغي استخدام بديل له. لحل هذه المشكلة، سنقوم بتحديث الكود لاستخدام بديل للثابت FILTER_SANITIZE_STRING. لاحظ أن الثابت FILTER_SANITIZE_STRING كان يُستخدم لتطهير (sanitize) البيانات المدخلة من أجل تجنب هجمات الحقن والأخطاء البرمجية الأمنية. لذلك سنستخدم وظيفة مخصصة لتحقيق نفس الغرض. إليك الكود الجديد الذي يحل محل الكود القديم: <?php // محلّ هذا السطر القديم // deprecated: define("FILTER_SANITIZE_STRING", "some_value"); // الكود الجديد باستخدام وظيفة مخصصة للتطهير function custom_sanitize_string($string) { return filter_var($string, FILTER_SANITIZE_STRING); } // استخدام الوظيفة الجديدة لتطهير البيانات $cleaned_data = custom_sanitize_string($_POST['input_name']); ?> في هذا الكود، قمنا بإنشاء وظيفة مخصصة تسمى custom_sanitize_string وهي تستخدم دالة filter_var لتطهير البيانات من خلال الثابت FILTER_SANITIZE_STRING. بدلاً من تحديد الثابت مباشرةً، يتم استدعاء الوظيفة custom_sanitize_string لتنفيذ عملية التطهير. يرجى استبدال "input_name" بالاسم الفعلي للحقل الذي ترغب في تطهير بياناته في النموذج الخاص بك. وبهذا، يجب أن تتخلص من رسالة الخطأ المُهجور ويتم تطهير البيانات بشكل آمن. اقتباس
0 عبدالباسط ابراهيم نشر 15 أغسطس 2023 أرسل تقرير نشر 15 أغسطس 2023 بالإضافة للشرح السابق هناك بعض البدائل الأخرى إذا كنت ترغب في استبداله: استخدام الفلتر الافتراضي للسلسلة FILTER_UNSAFE_RAW الذي لا يقوم بأي تصفية. يجب استخدام هذا إذا كنت لا تعرف شيئًا عن سلوك FILTER_SANITIZE_STRING وترغب فقط في استخدام فلتر افتراضي يعيد لك القيمة النصية. إذا كنت تستخدم هذا الفلتر لحماية ضد ثغرات XSS، فاستبدل استخدامه بـ htmlspecialchars(). لا تستدعي هذه الدالة على بيانات الإدخال. لحماية ضد ثغرات XSS، تحتاج إلى ترميز الإخراج! إنشاء بوليفيل (polyfill)، فيمكنك فعل ذلك بسهولة باستخدام تعبيرات العبارات العادية (regex). function filter_string_polyfill(string $string): string { $str = preg_replace('/\x00|<[^>]*>?/', '', $string); return str_replace(["'", '"'], [''', '"'], $str); } هنا، تم استخدام `preg_replace()` لإزالة الشروط التي تطابق النصوص بين `<` و `>` واستخدام `str_replace()` لتحويل علامات الاقتباس إلى كيانات HTML." اقتباس
السؤال
جود بدر
السلام عليكم
ظاهر لي باعلى الصفحة هذا السطر وما قدرت اعرف وش المشكلة ؟ انا طبقت مع الكورس بالضبط لكن يظهر لي هذا السطر
Deprecated: Constant FILTER_SANITIZE_STRING is deprecated in /Applications/XAMPP/xamppfiles/htdocs/php_flexcourses/contact.php on line 6
رجاءً الي يشرح لي الحل يشرحة بالتفصيل لان انا جديدة بـ php
شكرا
تعديل عنوان السؤال
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.