لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 07/23/20 in أجوبة
-
فكرة توصيل تسريع بحيث ان يكون هناك مندوب في كل منطقة. عند طلب شراء منتج معين من العميل يتم ارسال رسالة لهذا المندوب بتوصيل المنتج للمنزل باقصي سرعة. هل هي فكرة جيدة ام انها مضيعة للوقت ولا يمكن ان تتحق وان كان يمكن تحقيقها فكيف يمكن ذلك؟!1 نقطة
-
1 نقطة
-
العفو لا شكرا على واجب، بالنسبة للخطأ كان هناك خطأ في الكتابة جرب مرة أخرى: $stmt = $mysqli->prepare("SELECT * FROM user WHERE phone=? AND password=?"); $stmt->bind_param("ss", $phone, $password); $response = $stmt->execute(); بالنسبة لتغير باقي الكود أم لا، أعتقد أنه لا يجب التغيير فيه، للتأكد من ذلك عليك مقارنة الreturn type للmysqli_query المستخدمة في الكود الأصلي، والmysqli_stmt::execute1 نقطة
-
تحياتي أستاذ مروان في الكود يوجد جملة SQL وحيدة وهي عرضة للSQL injection وهي: $sql = "SELECT * FROM user WHERE phone='$phone' AND password='$password' "; وهي عرضة للSQL injection بسبب المتغيرات $password و $phone. لذلك عليك تجهيز هذه الجملة أولا عن طريق الprepared statements. نقوم بتجهيز الجملة بوضع علامة إستفهام مكان المتغيرات كالآتي: $stmt = $mysqli->prepare("SELECT * FROM user WHERE phone=? AND password=?"); وبعد ذلك نقوم بربط علامات الإستفهام بالمتغيرات التي نريد تمريرها إلى الجملة كالآتي: $stmt->bind_param("ss", $phone, $password); إذا كان المتغير phone$ من النوع int يجب تغيير الparameter الأول إلى "is" وتصبح الجملة كالآتي: $stmt->bind_param("is", $phone, $password); بالتالي يكون الكود الكامل لتجهيز الجملة وتنفيذها هو: $stmt = $mysqli->prepare("SELECT * FROM user WHERE phone=? AND password=?"); $stmt->bind_param("ss", $phone, $password); $result $stmt->execute(); ويمكنك التعامل مع الresult المرجعة.1 نقطة
-
نعم فهمت قصدك أنت تتكلم عن الأولية التي يقوم على أساسها إعطاء الelement الخاصية المناسبة وهي تسمة ب CSS Precedence Rules أي قواعد الأولوية وهي ترتب كالتالي : إضافة important! بعد خاصية سي اس اس <style> div { font-family: Arial; font-size: 16px !important; } .specialText { font-size: 18px; } </style> <div class="specialText"> This is special text. </div> في هذا المثال الخاصية font-size للdiv قسمتها 16px إلا أن تعريفها في الكلاص ب 18px فالأولوية هنا للكلاص إلا أن إضافة important! يبقي الأولوية للعنصر المضاف إليه Specificity of CSS Rule Selectors وهذه تعني الإعتماد على نوع السيلكتور في تحديد الخاصية كما في المثال التالي: <body> <style> body { font-size: 10px; } div { font-size: 11px; } [myattr] { font-size: 12px; } .aText { font-size: 13px; } #myId { font-size: 14px; } </style> <div > Text 1 </div> <!-- div يأخذ خاصية السيلكتور --> <div myattr > Text 2 </div> <!-- myattr attribute يأخذ خاصية ال --> <div myattr class="aText" > Text 3 </div> <!-- aText Class يأخذ خاصية ال --> <div myattr class="aText" id="myId" > Text 4 </div> <!-- myId ID يأخذ خاصية ال --> </body> هذه بالنسبة لأنواع الأولويات أما بالنسبة لمصدر التعريفات فهي ثلاثة أنواع كالأتي : المصدر التي يحتوي على تعريفات ال CSS وهي حسب الأولوية التالية : inline css وهو الذي داخل السطر <!DOCTYPE html> <html> <body> <h1 style="color:blue;text-align:center;">This is a heading</h1> <p style="color:red;">This is a paragraph.</p> </body> </html> Internal CSS المصدر الداخلي <!DOCTYPE html> <html> <head> <style> body { background-color: linen; } h1 { color: maroon; margin-left: 40px; } </style> </head> <body> <h1>This is a heading</h1> <p>This is a paragraph.</p> </body> </html> External CSS المصدر الخارجي <!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="mystyle.css"> </head> <body> <h1>This is a heading</h1> <p>This is a paragraph.</p> </body> </html>1 نقطة
-
مرحباً مروان .. للحماية من ثغرة SQL injection يُنصح دائما بإستعمال prepared statment و parameterized queries فمثلا إن كنت تستخدم PDO تستعمل الشيفرة التالية: <?php $stmt = $pdo->prepare('SELECT * FROM table_name WHERE name = :name'); $stmt->execute([ 'name' => $name ]); و إن كنت تستخدم MySQLi تستعمل الشيفرة التالية: <?php $stmt = $dbConnection->prepare('SELECT * FROM table_name WHERE name = ?'); $stmt->bind_param('s', $name); // 's' من أجل تعيين نوع المتغير => string $stmt->execute(); و للحماية من xss أي Cross-Site Scripting يُنصح بإستعمال الفلترة و التعقيم للبيانات التي تأتي من المُستخدم قبل تخزينها في قاعدة البيانات هناك قاعدة تقول لا تثق ابدا ً بمدخلات المستخدم موضوع الحماية كبير جداً و إذا كنت تستخدم pure php بدون اي إطار عمل فسيتوجب عليك البحث عن الثغرات المشهورة و كيفية تجاوزها و تطبيق الحلول أما إن كنت تستخدم إطار عمل فستجد أنه قد تم توفير حلول لمُعظم الثغرات المشهورة من طرف مطورين الإطار بالتوفيق1 نقطة
-
السلام عليكم حيا الله الاخوة الكرام، لدي موقع مبني بسكريبت اوبن كارت، هذا الموقع بدا منذ سنة تقريبا، وصلت لمرحلة أني اريد تقريب المتجر إلى الزبناء من الدول المستهدفة في بلدهم فقت بشراء دومينات محلية لهذه الدول مثل الامرات، اسبانيا، المانيا، الخ... بدأت بالعمل مع مبرمج لإظهار الموقع بهذه الدومينات، يدخل العميل للموقع الرئيسي تظهر له نافذة ( اختر دولتك) يختار الدولة وينتقل الى الموقع بالنطاق المحلي لدولته، فيجد الموقع بلغته وعملته، وبتصاميم بانرات بلهجته او لغته. (نفس فكرة امازون،واباي) وفكرة النافذة (من موقع نمشي) بدات العمل على الفكرة لكن، احتاج لتجربة المحترفين في هذا الأمر خصوصا مع تعقيد نظام اوبن كارت في الملفات، ايضا اريد ان اعرف كيف سيتم تعريف غوغل بان لدينا عدة مواقع، وعندما يبحث العميل على اسم الموقع يظهر له الموقع بنطاق بلده؟ كيف استطيع التفوق على المنافسين بهذا الأمر؟ كيف اشتغل على هذا الامر بالشكل الصحيح؟1 نقطة
-
السلام عليكم @Iamdaouzakaria أتوقع اوبن كارت يوفر ألية لعمل ذلك بسهولة لكن لعمل مثل ما ذكرت أقصد جعل محرك البحث يعرف بأن لديكم عدة مواقع للغة المطلوبة يجب أن يتم العمل على بناء الروابط بحيث تكون قابلة للأرشفة في محرك البحث بشكل فريندلي ولا تؤثر على أداء الموقع من ناحية السرعة أي جعل تحميل الصفحات static ومثال لجعل روابط موقعك لكل لغة فريندلي http://shop.com/index.php?route=checkout/cart&lang=en عند التحويل إلى سيو فريندلي تصبح هكذا http://shop.com/cart/en هذا سيجعل محركات البحث تظهر صفحات موقعك لمستخدم ذو اللغة الفرنسية في محرك البحث الخاص بفرنسا وهكذا حيث المستخدم في فرنسا محرك البحث يكون خاص بفرنسا وسيظهر له اللغة المرتبطة ويوجد إضافة لذلك مجانية إطلع عليها من هنا ويوجد هنا أيضا مقالة تشرح كيف عمل عدة متاجر كل متجر يختص بشيء معين من خلال الsubdomain إطلع عليها من هنا بعد الذهاب إلى الصفحة إضغط على وللتفوق على المنافسين ستحتاج إلى البحث عن كلمات مفتاحية ذات منافسة قليلة خاصة بالدولة المحددة للمنتج المحدد1 نقطة
-
تحياتي أستاذ مروان في النموذج الأول، لنفرض أن المتغير $studentid قيمته تساوي الstring التالي: "1; DROP TABLE student;" وعند ترجمة الطلب الآتي: $CheckSQL = "SELECT * FROM student WHERE studentid='$studentid'"; يصبح: SELECT * FROM student WHERE studentid=1; DROP TABLE student; لذلك الكود به ثغرة sql injection. لتجنب ذلك لابد من إستخدام الprepared statements و parameterized queries. تنفيذ الprepared statement يكون على خطوتين، الأولى التجهيز prepare ثم التنفيذ execute.بما أنك تستخدم MySQLi يمكنك عمل ذلك عن طريق الآتي: $stmt = $mysqli->prepare("SELECT * FROM student WHERE studentid = ?") $stmt->bind_param('s', $studentid); $stmt->execute(); $result = $stmt->get_result(); في السطر الثاني ال's' تشير إلى أن نوع المتغير هو string، إذا كان studentid هو int عليك تغييره إلى 'i'. بهذه الطريقة تصبح العبارة آمنة، بسبب أن جزء الأمر مفصول عن جزء الداتا، والسبب في أي sql injection هو خلط البيانات بالأوامر، حيث يمكن تمرير أمر إلى الداتابيز في شكل داتا. أي أمر ترسله إلى الداتابيز سواء إضافة أو قراءة، ويكون في هذا الأمر parameter، يجب تجهيزه بهذه الطريقة. بالتوفيق1 نقطة
-
مرحباً خليل .. هناك العديد من الخيارات لبرمجة تطبيقات أندرويد أو تطبيقات موبايل بشكل عام: بناء تطبيقات أصيلة ( native ) بإستخدام اللغات الأصلية فمثلا للأندرويد جافا أو كوتلن و لل iOS سويفت أو أوبجكتيف سي بناء تطبيقات أصيلة بإستعمال أحد الأطر او ( frameworks ) مثل : React Native أو Flutter أو Xamarin بحيث ستقوم بكتابة الأكواد باللغة التي بُني عليها الإطار فمثلا React Native ستستخدم JavaScript و Futter لغة Dart و Xamarin لغة c# بحيث عند عملية البناء ستستخدم أدوات المنصة لتصدير التطبيق و سيتم تحويل الأكواد إلى أكواد أصيلة ( نتيف ) و لهذا يُسمى هذا النوع من التطبيقات ب ( compiled app ) و أهم ميزة لهذا النوع هو الحصول على تطبيقات بنفس أداء التطبيقات الأصيلة تقريباً و تكون متعددة المنصة أي للأندرويد و ال iOS أي cross platform إنطلاقا من كتابة كود واحد بناء تطبيقات هجينة بإستخدام منصة Cordova أو Ionic و هذه المنصات هي منصات cross platform أي ستقوم بكتابة كود واحد و هذا الكود يعمل على أنظمة متعددة سواء أندرويد أو iOS . لكن التطبيقات التي يتم بناؤها تكون عبارة عن تطبيق ويب أي أن التطبيق في الأخير سيعمل على الهاتف و كأنه تطبيق هاتف عادي لكن في الحقيقة هو عبارة عن صفحات ويب أو تطبيق ويب يعمل على المتصفح . و إن صح التعبير فمنصة cordova تقوم بتغليف تطبيق الويب بطبقة تُسمى (WebView) حتى يعمل على الهاتف و كأنه تطبيق عادي. العيب في هذه التطبيقات أنها أبطأ مقارنةً بالنوعين السابقين خصوصا في التطبيقات التي تحتاج إلى التعامل مع موارد و مُحسسات الهاتف لكن ما يٌميزها أنك لن تحتاج إلى تعلم لغات أخرى فقط html5 و CSS و جافاسكربت بالإضافة إلى كيفية التعامل مع منصة Cordova أنصحك بمشاهدة هذا المقطع لتعرف الفرق بين التطبيقات الأصيلة و التطبيقات الهجينة في حالتك يُمكنك الإتجاه صوب التطبيقات الهجينة لكن تحتاج تعلم منصة cordova و ستستخدم فقط اللغات التي بحوزتك html css javascript لبناء تطبيق موبايل و تحتاج إلى لغة بايثون لبناء Api أو web service الذي من خلاله تستطيع التواصل مع قاعدة البيانات أيضا يُمكنك التوجه نحو تعلم إطار react native فهو مبني بلغة جافاسكربت و عند بنائك لتطبيقات جوال بإستعمال هذا الإطار ستحتاج لغة جافاسكربت أيضا يوجد إطار native script فهو إطار مبني بلغة جافاسكربت يساعدك في بناء تطبيقات جوال. بالتوفيق1 نقطة
-
بالطبع لا. إستخدام java ليس إلزاميًا يوجد العديد من الوسائل التي تمكنك من ذلك مثل: Kotlin ++c #c python corona HTML, CSS, JavaScript و لكن إستخدامهم يتطلب مكاتب و إطارات حتي تصبح مناسبة لل android. فمثلًا: - إذا كنت تريد استخدام لغة python: يوجد العديد من المكتبات التي تقوم بتحويل تطبيقات البايثون إلى android packages التي تعمل على أجهزة ال android. أحد هذه المكتبات هو مكتبة Kivy. - إذا كنت تريد إستخدام HTML, CSS, JavaScript: يمكنك إستخدام frameworks مثل: Cordova / PhoneGap Ionic و غيرها.1 نقطة
-
1 نقطة
