سؤال

لدي متغيرات PHP لوضعها ضمن ملف HTML المضمّن. ما هي أفضل طريقة لتنفيذ هذا؟

//contents of file1.php
$variable1 = "text 1";
$variable2 = "text 2"
$newContent = include('file2.php');
echo $newContent;

//contents of file2.php
<p>standard HTML with PHP... <strong><?=$variable1?></strong></p>
<p><?=$variable2?></p>

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

هل يجب أن أستخدم شيئًا مثل HTML>>>

هل كانت مفيدة؟

المحلول

ما تفعله على ما يرام ، وستجد أن معظم الناس يستخدمون نفس الطريقة الدقيقة. أنا شخصياً لن أستخدم علامات PHP القصيرة (بعض المضيفين لا يمكّنها) ، لكن هذه مسألة تفضيل.

يحرر: وفقًا لتعديلك ، يبدو أنه ليس لديك علامات قصيرة ممكّنة. تحقق من INI (http://php.net/manual/en/ini.core.php). لكنك حقًا لا ينبغي أن تستخدم علامات قصيرة ، لأنه كما يذكر Clownbaby ، فإن PHP 6 سوف ينهضها. حتى لو كنت لا تهتم بتدقيق الكود في المستقبل ، فإنها لا تزال مزعجة (وهذا واضح لأن الكود الخاص بك لا يعمل). التبديل إلى <?php echo $variable1; ?> وستكون بخير.

نصائح أخرى

أعتقد أن الكود الخاص بك على ما يرام ، حتى معظم الأطر تستخدمه ...

فيما يتعلق باستخدام العلامات القصيرة ، لا تسمح بعض الخوادم بذلك ، لذا فإليك حل بديل أستخدمه:

if ((bool) @ini_get('short_open_tag') === FALSE){
   echo eval('?>'.preg_replace("/;*\s*\?>/", "; ?>", str_replace('<?=', '<?php echo ', file_get_contents("path/to/file2.php"))));
}else{
   $newContent = include("path/to/file2.php");
   echo $newContent;
}
$newContent = include('file2.php');
echo $newContent;

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

كما قال Ekhaled ، قد تحتاج إلى تمكين العلامات القصيرة أو استبدالها بدعم دائمًا <?php ... ?> بناء الجملة على غرار المعالجة.

ومع ذلك ، من المهم htmlspecialchars كل سلسلة نصية عند تضمينها في HTML ، أو لديك ثقب أمان XSS محتمل.

<?php
    function h($text) {
        echo(htmlspecialchars($text, ENT_QUOTES));
    }
?>
...

<p>standard HTML with PHP... <strong><?php h($variable1) ?></strong></p>
<p><?php h($variable2) ?></p>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top