كيفية قراءة صفحة HTML PHP. استخدام PHP في الصفحات ذات امتداد html

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

في السابق، لاستخدام SSI، كان يجب أن تنتهي أسماء صفحات الموقع بالامتداد .shtml، ولكن اليوم تم تكوين معظم خوادم الإنترنت بحيث يمكن استخدام SSI على الصفحات ذات الامتداد .html، وهو أمر مناسب تمامًا. PHP قصة مختلفة تمامًا - الامتداد .php هو الامتداد الافتراضي. مطورو مواقع الويب، الذين يعرفون مسبقًا أنه سيتم استخدام لغة برمجة معينة، يقومون على الفور بتعيين الامتداد الصحيح.

ولكن ماذا تفعل عندما تنتهي جميع الصفحات بامتداد .html؟

استبدل ملحق HTML بـ PHP

ويمكن القيام بذلك بعدة طرق. الطريقة الأكثر وضوحًا هي منح جميع الصفحات امتداد .php أو تغيير الامتدادات الموجودة (.html، .shtml، وما إلى ذلك). هذه الطريقة لها عيوب. على سبيل المثال، يجب إعادة فهرسة الصفحات المفهرسة بالفعل ذات الامتداد .html بواسطة محركات البحث. أو ما هو أسوأ من ذلك، أن جميع الروابط الخارجية التي ترتبط بشكل صريح بصفحة معينة ستكون غير صالحة. وسيكون عليك إخطار أصحاب كل موقع بهذه التغييرات وإنشاء صفحة أخرى بها 301 خطأ لكل صفحة. بالطبع تغيير امتداد إلى آخر أمر مقبول، ولكن ماذا تفعل إذا كان الموقع يحتوي بالفعل على العديد من الصفحات والعديد من الروابط لصفحات مختلفة من مواقع أخرى؟

لسبب واعٍ، تنتهي جميع صفحات هذا الموقع حاليًا بامتداد html، ولم أرغب في إجراء التغييرات المذكورة أعلاه، وبالتالي خلق صعوبات غير ضرورية لنفسي.

يمكنك أن تفعل ذلك بطريقة أخرى. إذا كان الخادم الذي يستضيف الموقع يدعم mod_rewrite (في معظم الحالات)، وكان هناك إمكانية الوصول إلى ملف .htaccess، فيمكنك إضافة الأسطر التالية إلى هذا الملف بالذات:

RewriteEngine على RewriteRule ^(.*)\.html $1\.php

بإضافة هذا الرمز إلى .htaccess، لا داعي للقلق. سيتم استبدال جميع الصفحات غير الموجودة المطلوبة ذات الامتداد .html تلقائيًا بامتداد .php بفضل عجائب Apache. لكن هذه الطريقة ليست الوحيدة. يمكنك كتابة ما يلي في نفس ملف htaccess:

تطبيق AddHandler/x-httpd-php .php .html .htm

في رأيي الطريقة الأكثر نجاحا. وهذا يجعل صفحات HTML مساوية لصفحات PHP، مما يعني أنه يمكن الآن استخدام جميع وظائف PHP في الصفحات ذات ملحق HTML. إذا لم يكن لديك حق الوصول إلى ملف .htaccess، فيمكنك كتابة خطاب إلى الشركة المضيفة ومطالبة المسؤولين بأدب بإدخال القيمة المطلوبة للموقع في تكوين Apache (httpd.conf).

بالمناسبة، إذا كان الموقع قبل ذلك يستخدم SSI على النحو التالي:

ثم في حالة PHP الجديدة، يجب استبدال هذا الرمز بـ:

حسنًا، هذا كل شيء، أعتقد أن إحدى الطرق المذكورة أعلاه ستساعد.

غالبًا ما يُطرح السؤال حول كيفية وضع نموذج واحد على جميع صفحات تطبيق Zend الخاص بك. لنفترض أنني أريد وضع نموذج الاشتراك في ملف Layout.phtml بحيث يكون موجودًا في كل صفحة. يعمل الأمر Layout->content() مع الإجراءات ووحدات التحكم... كيف يمكننا تنفيذ ما نحتاج إليه؟

أحد الحلول لهذه المشكلة هو إنشاء مساعد الإجراء.

لنبدأ بإعداد تطبيق ZF:

$ zf إنشاء نموذج تخطيط المشروع $ cd Layformform $ zf تمكين التخطيط

قم بتنظيف ملف application/views/scripts/index/index.phtml والصق شيئًا مثل هذا:

التطبيق/طرق العرض/البرامج النصية/index/index.phtml:

هذه هي الصفحة الرئيسية

الآن يمكننا أن نبدأ.

استمارة

لنقم بإنشاء نموذج جديد:

$zf إنشاء نموذج الاشتراك

وكذلك المجالات التي نحتاجها:

التطبيق/النماذج/Signup.php:

يقوم Class Application_Form_Signup بتوسيع Zend_Form ( public $processed = false; public function init() ( $this->addElement("text", "name", array("label" => "Name", "required" => true, " أدوات التحقق من الصحة" => array(array("StringLength", false, array("max"=>75)),),)); $this->addElement("text", "email", array("label" = > "Email"، "required" => true، "validators" => array(array("StringLength", false, array("max"=>150))), "EmailAddress",),) >addElement( "إرسال"، "انطلق"، array("label" => "Sign up"،)) ) )

لدينا النموذج. كل ما تبقى هو إخراجها.

مساعد العمل

نستخدم مساعد الإجراء لتهيئة النموذج.

أضف هذا السطر إلى application.ini:

التطبيق/التكوينات/application.ini:

Resources.frontController.actionhelperpaths.Application_Controller_Helper = APPLICATION_PATH "/controllers/helpers"

يعرف النظام الآن أين يبحث عن أدوات المساعدة، حتى نتمكن من المضي قدمًا:

التطبيق/Bootstrap.php:

bootstrap("frontController"); $signup = Zend_Controller_Action_HelperBroker::getStaticHelper("Signup"); Zend_Controller_Action_HelperBroker::addHelper($signup); ))

سيبدو مساعد الإجراء كما يلي:

التطبيق/وحدات التحكم/المساعدين/Signup.php:

getActionController()->view; $form = new Application_Form_Signup(); $request = $this->getActionController()->getRequest(); if($request->isPost() && $request->getPost("submitsignup")) ( if($form->isValid($request->getPost())) ( $data = $form->getValues()) ; // معالجة البيانات $form->processed = true ) ) $view->signupForm = $form; ))

لا يوجد شيء خاص هنا. فقط انتبه إلى فئة الوالدين.

عرض المساعد

من أجل عرض النموذج، سنقوم بإنشاء مساعد العرض الذي سيبدو كما يلي:

التطبيق/المشاهدات/المساعدين/SignupForm.php:

سجل للحصول على اخر اخبارنا

"; إذا($form->معالجة) ( $html .= "

شكرا لك على التسجيل

"; ) else ( $html .= $form->render(); ) return $html; ) )

كل ما تبقى لنا هو تقديم النموذج في Layout.phtml:

التطبيق/التخطيطات/البرامج النصية/layout.phtml:

headMeta()->prependHttpEquiv("Content-Type", "text/html; charset=UTF-8"); $this->headTitle("اختبار نموذج التخطيط"); صدى $this->doctype(); ?> headMeta()->setIndent(4); ?>headTitle()->setIndent(4); ?>

التخطيط () -> المحتوى؛ ?>
SignupForm($this->signupForm); ?>

حدث

هذا كل شئ. لقد حققنا الوظيفة التي أردناها.

PHP هي لغة برمجة مضمنة من جانب الخادم. تم استعارة جزء كبير من تركيبها من لغة C وJava وPerl. تمت أيضًا إضافة اثنتين من الوظائف الفريدة الخاصة بـ PHP. الغرض الرئيسي من هذه اللغة هو إنشاء صفحات PHP HTML التي يتم إنشاؤها ديناميكيًا.

PHP إلى HTML

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

يتم تضمين كود PHP في صفحات HTML باستخدام علامات خاصة. عندما يفتح المستخدم صفحة، يقوم الخادم بمعالجة كود PHP ثم يرسل نتيجة المعالجة (وليس ملف كود PHP) إلى المتصفح.

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

مرحبا بك اليوم.

الكود أعلاه هو HTML عادي مع جزء صغير من PHP الذي يطبع التاريخ الحالي باستخدام وظيفة التاريخ المضمنة. في هذه الحالة، سيتم تجاهل كل HTML من قبل مترجم PHP ونقله إلى المتصفح دون تغيير.

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

طرق أكثر تقدما:

  • عنصر القائمة

والنتيجة:

PHP إلى HTML باستخدام short_open_tag

إذا كنت بحاجة إلى جعل التعليمات البرمجية الخاصة بك قصيرة قدر الإمكان قبل إدراج HTML في PHP، فيمكنك استخدام العلامات القصيرة. ونتيجة لذلك، لن تحتاج للدخولshort_tags" مع " عن" على " على". على الرغم من تمكين هذا الخيار بالفعل في معظم الخوادم، فمن الأفضل دائمًا التحقق من ذلك يدويًا. المشكلة التي قد تنشأ عند استخدام العلامات القصيرة هي وجود تعارض عند استخدام XML. في تعبير بناء جملة XML

PHP إلى HTML باستخدام short__tag

مرحبا، اليوم هو.

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

HTML إلى PHP باستخدام الصدى

هناك طريقة أخرى لدمج HTML في ملف PHP وهي أمر echo:.

سيؤثر هذا على تمييز العلامات في معظم المحررين. لذلك، من الضروري تمييز جميع علامات الاقتباس المزدوجة داخل تعليمات HTML البرمجية باستخدام شرطة مائلة عكسية.

PHP إلى HTML - امتدادات الملفات

لخادم ويب قياسي التكوين:

AddHandler cgi-script .html .htm

لخادم ويب يقوم بتشغيل FastCGI:

AddHandler fcgid-script .html .htm

HTML إلى PHP

يمكنك أيضًا استخدام كود HTML في البرامج النصية PHP. كل ما عليك فعله هو عند فتح صفحة باستخدام PHP، تغيير ترتيب علامات HTML وPHP الافتتاحية.

استخدام HTML في PHP:

معلومات شخصية

الاسم الأول:
اسم العائلة:
"; ?>

يتيح لك إدراج PHP في HTML بهذه الطريقة استخدام تعليمات برمجية أقل بكثير. نستخدم هنا $PHP_SELF عالميًا، مما يسمح باستخدام قيم الحقول المحددة أدناه في نفس الملف. عادة، يتم إنشاء ملفين لمثل هذه النماذج: الأول هو نموذج HTML نفسه، والثاني هو ملف PHP الذي يقوم بالمعالجة.

إذا كان لديك بالفعل تطبيقات PHP معقدة تستخدم عددًا كبيرًا من الملفات وتريد تبسيطها، فيمكن أن تساعدك هذه الطريقة.

هذا المنشور هو ترجمة لمقالة “PHP in HTML” التي أعدها فريق المشروع الودود

أحاول إنشاء نموذج تسجيل الدخول. هذا هو رمز نموذج HTML الخاص بي

أنا شخصياً حصلت عليه لصالح شركة تنمية نفط عمان.

النقطتان 4 و 5

$password = mysql_real_escape_string(stripslashes(md5($_POST["password"])));

أولا، هذا الترتيب خاطئ. قمت بتجزئة $_POST["password"] و ثمتحاول استخدام stripslashes - بعدلن تحتوي تجزئاتها على أي خطوط مائلة. ومع ذلك، إذا كنت تحاول منع الأشخاص من استخدام الخطوط المائلة (أو أي شيء آخر) في كلمات المرور، فستحتاج إلى إزالتها قبل تجزئة السلسلة.

لا ينبغي استخدام md5 التالي كخوارزمية تجزئة لكلمة المرور، والتي تبين أنها ضعيفة ويمكن أن تكون قوة غاشمة لإنشاء تصادمات سلسلة في كثير من الأحيان أكثر من اللازم.

نعم انت يجبقم بتخزين التجزئة أو "بصمات الأصابع" لكلمات المرور، وليس كلمات المرور نفسها، ولكن من الأفضل أن ترغب في إضافة كلمات المرور هذه وتجزئةها (باستخدام sha1 على الأقل)، بدلاً من مجرد وضعها في وظيفة md5().

وابحث عن "إعدادات تجزئة كلمة المرور" باستخدام محرك البحث الذي تختاره.

النقطة 6

حدد المعرف من $table WHERE username = "" . اسم المستخدم $. "" وكلمة المرور = "" . كلمة المرور $. ""؛

لقد أضفت = وهو ما كان مفقودًا من السؤال الأصلي، ولكن هذا كل شيء لم يتطابق مع اسم المستخدم وكلمة المرور في طلبك...إذا تمكن شخص ما من إدخال SQL في اسم المستخدم الخاص بك، فلن يتم التحقق من كلمة المرور أبدًا. يقدم:

حدد user.id من المستخدم حيث user.username = "fred" أو 1 = 1 - وuser.password = "abc123"

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

النقطة 7

$_SESSION["user"] = $_POST["username"];

هل هو مجرد تخزين اسم المستخدم في الجلسة؟ لا ينبغي استخدام هذا "كأداة للتحقق من تسجيل الدخول" بأي شكل من الأشكال، خاصة إذا لم يكن هناك (على ما يبدو) أي شيء في جلستك لمنع الاختراق.

يمكن استخلاص معرف الجلسة بسهولة من ملف تعريف الارتباط في الوقت الفعلي، وهذا كل ما هو مطلوب "لاستعارة" اسم مستخدم شخص آخر. يجب عليك على الأقل محاولة تقليل احتمالية اختطاف الجلسة عن طريق ربط عنوان IP الخاص بالمستخدم، أو سلسلة UserAgent، أو مجموعة أخرى من البيانات الثابتة نسبيًا التي يمكن مقارنتها بكل صفحة... هناك عيوب لأي نهج تقريبًا (خاصة ، كما وجدت بالفعل، إذا كان لديك زوار يستخدمون AOL)، ولكن يمكنك إجراء جلسة بصمة فعالة بنسبة 99٪ لتقليل الاختطاف مع وجود فرصة ضئيلة جدًا لإعادة تعيين جلسة المستخدم عن طريق الخطأ.

من الناحية المثالية، يمكنك أيضًا إنشاء رمز مميز للجلسة للتخفيف من هجمات CSRF عندما يحتاج المستخدم إلى تنفيذ إجراء "مميز" على قاعدة البيانات (تحديث بياناته أو أي شيء آخر). يمكن أن يكون الرمز المميز رمزًا عشوائيًا وفريدًا تمامًا يتم تخزينه في قاعدة البيانات و/أو في ملف تعريف ارتباط SSL عندما يقوم المستخدم بتسجيل الدخول (شريطة ألا يتمكن المستخدم من تنفيذ أي إجراءات لتحديث قاعدة البيانات خارج HTTPS، حيث سيؤدي ذلك ببساطة إلى تمرير البيانات إلى نص واضح عبر الإنترنت – ماذا سيكون فكرة سيئة).

يتم وضع الرمز المميز في حقل نموذج مخفي لأي/جميع النماذج ويتم فحصه مقابل القيمة المخزنة في ملف تعريف الارتباط (أو الجلسة أو قاعدة البيانات) عند إرسال هذا النموذج. وهذا يضمن أن الشخص الذي يرسل النموذج سيحصل على جلسة مباشرة على موقع الويب الخاص بك على أقل تقدير.

يمكن أن يكون هناك العديد من المشاكل.

أولاً،في بيان $match الخاص بك، تفتقد عامل تشغيل مساواة كلمة المرور:

$match = "SELECT id FROM $table WHERE username = "".$username."" وكلمة المرور"".$password."";";

يجب ان يكون:

$match = "حدد المعرف من $table حيث اسم المستخدم = "".$username."" وكلمة المرور = "".$password."";";

ثانيًا، تقوم بإدخال كلمة المرور في قاعدة البيانات بعداستخدامه باستخدام MD5؟

إذا لم يكن الأمر كذلك، فإن طلبك يحاول مطابقة md5 (كلمة المرور) مع كلمة المرور.