لقد تم اقتراحي ، منذ وقت ليس ببعيد ، تغيير الرمز الخاص بي لاستخدام PDO من أجل تحديد معلمات استعلاماتي وحفظ HTML بأمان في قاعدة البيانات.
حسنًا ، إليكم المشاكل الرئيسية:
نظرت إلى http://php.net/manual/ar/ref.pdo-mysql.php ، وأنا لا أحصل حقًا على المكان الذي يجب أن أضع فيه سلسلة $ ./configure --with-pdo-mysql
...
الموقع الذي أقوم بإنشائه يتطلب بالفعل PDO لصفحة واحدة فقط. على الرغم من أنني قد أفكر في إعادة كتابته ، إلا أن الأمر سيستغرق بعض الوقت وأحتاج إلى تشغيل الصفحات قريبًا ، لذلك لا يمكنني إيقاف تشغيل MySQL بالكامل. إذا قمت بتثبيت PDO ، هل سأظل قادرًا على استخدام معالجات mysql_*
؟
خادم السؤال قيد التشغيل PHP الإصدار 5.4.6-1ubuntu1 و Apache/2.2.22 (Ubuntu). أنا أيضا تشغيل قاعدة بيانات phpMyAdmin ، إذا كان ذلك يهم.
على Ubuntu ، يجب أن تكون قادرًا على تثبيت أجزاء PDO الضرورية من apt باستخدام Sudo apt-get install php5-mysql
لا يوجد أي قيود بين استخدام PDO و mysql_ في وقت واحد. ومع ذلك ، ستحتاج إلى إنشاء اتصالين إلى قاعدة بياناتك ، أحدهما باستخدام mysql_ والآخر باستخدام PDO.
هذا سؤال جيد ، لكنني أعتقد أنك تسيء فهم ما قرأته.
./config --with-pdo-mysql
هو شيء يجب أن تضعه فقط إذا قمت بترجمة الكود PHP الخاص بك. إذا قمت بتثبيته مع مديري الحزم ، فعليك فقط استخدام سطر الأوامر المقدم من Jany Hartikainen: Sudo apt-get install php5-mysql
وأيضًا Sudo apt-get install pdo-mysql
بصرف النظر عن حقيقة أن mysql_ محبط حقًا ، فهما مستقلان. إذا كنت تستخدم PDO mysql_ غير متورط ، وإذا كنت تستخدم mysql_ PDO فهو غير مطلوب.
إذا قمت بإيقاف تشغيل PDO دون تغيير أي سطر في التعليمات البرمجية الخاصة بك ، فلن تواجه مشكلة. ولكن منذ أن بدأت الاتصال واستعلامات الاستعلامات مع PDO ، يجب عليك الاحتفاظ به والتخلي عن mysql_.
منذ عدة سنوات ، نشر فريق MySQL برنامج نصي ل انتقل إلى MySQLi . لا أعرف ما إذا كان يمكن تخصيصها ، لكنها رسمية.
في الأساس الجواب من جاني هاركيكينين هو الصحيح! أنا أبطأ جوابه. ما كان مفقودًا على نظامي (استنادًا إلى Ubuntu 15.04) هو تمكين امتداد PDO في php.ini
extension=pdo.so
extension=pdo_mysql.so
أعد تشغيل خادم الويب (على سبيل المثال مع "Sudo service Apache2 restart") -> كل غرامة :-)
للعثور على موقع ملف php.ini النشط الحالي ، يمكنك استخدام phpinfo () أو بعض التلميحات الأخرى من هنا: https://www.ostraining.com/blog/coding/phpini-file/
الغرض من استخدام هذا هو تطبيق طبقة إضافية من الأمان بين واجهة المستخدم وقاعدة البيانات. باستخدام هذه الطبقة ، يمكن تطبيع البيانات قبل إدراجها في بنية البيانات الخاصة بك. (العواصم هي عواصم ، بدون مسافات بادئة أو زائدة ، جميع التواريخ يتم تشكيلها بشكل صحيح.)
ولكن هناك بعض الفروق الدقيقة في هذا الأمر والتي قد لا تكون على دراية بها.
بادئ ذي بدء ، حتى الآن ، ربما تكون قد كتبت جميع استفساراتك في شيء مشابه لعنوان URL ، وتمرير المعلمات باستخدام URL نفسه. باستخدام PDO ، كل هذا يتم تحت مستوى واجهة المستخدم. تقوم واجهة المستخدم بتسليم الكرة إلى شركة تنمية نفط عمان التي تنقلها إلى أسفل وتزرعها في قاعدة البيانات من أجل 7 نقاط TOUCHDOWN .. يحصل على سبع نقاط ، لأنه حصل عليها هناك وقام بأمان أكثر بكثير من تمرير المعلومات عبر عنوان URL .
يمكنك أيضًا تقوية موقعك بـ حقن SQL باستخدام طبقة بيانات. باستخدام هذه الطبقة الوسيطة التي تمثل "اللاعب" الوحيد الذي يتحدث إلى قاعدة البيانات نفسها ، أنا متأكد من أنك تستطيع أن ترى كيف يمكن أن يكون هذا أكثر أمانًا. واجهة datalayer لقاعدة البيانات ، datalayer لقاعدة البيانات إلى datalayer إلى واجهة.
و:
من خلال تطبيق أفضل الممارسات أثناء كتابة التعليمات البرمجية الخاصة بك ، سوف تكون أكثر سعادة مع النتيجة.
مصادر إضافية:
رد: وظائف الخلية في url php dot net/manual/en/ref dot pdo-mysql dot php
رد: بنية ثلاثية الطبقات - إضافة أمان إلى تطبيقاتك https://blog.42.nl/articles/introducing-a-security-layer-in-your-application-architecture/
Re: Object Oriented Design باستخدام UML إذا كنت تريد حقًا معرفة المزيد حول هذا ، فهذا هو أفضل كتاب في السوق ، وكان Grady Booch والد UML http://dl.acm.org/citation.cfm؟id = 291167 & CFID = 241218549 و CFTOKEN = 82813028
أو تحقق مع bitmonkey. هناك مجموعة هناك أنا متأكد من أنك يمكن أن تتعلم الكثير معها.
>
>
في البداية ، قم بتثبيت أجزاء PDO الضرورية عن طريق تشغيل الأمر Sudo apt-get install php*-mysql
حيث * هو اسم إصدار php مثل 5.6 ، 7.0 ، 7.1 ، 7.2 بعد التثبيت ، يجب أن تذكر (إلغاء التثبيت إذا كان هناك بالفعل) هاتان العبارتان
extension=pdo.so
extension=pdo_mysql.so
في ملف .ini الخاص بك وإعادة تشغيل الخادم الخاص بك عن طريق الأوامر
Sudo service Apache2 restart
إذا كنت بحاجة إلى حاوية Docker لـ CakePHP مع MySQL ، فقد أنشأت صورة Docker لهذا الغرض! لا داعي للقلق بشأن إعداده. إنه يعمل فقط!
إليك كيفية تثبيتها في صورة تستند إلى Ubuntu:
https://github.com/marcellodesales/php-Apache-mysql-4-cakephp-docker/blob/master/Dockerfile#L8
RUN docker-php-ext-install mysql mysqli pdo pdo_mysql
بناء التطبيق وتشغيله هو مجرد عملية من خطوتين (بالنظر إلى أنك في الدليل الحالي للتطبيق):
$ docker build -t myCakePhpApp .
$ docker run -ti myCakePhpApp