MySQL / PHP - bir veritabanı içinde mağaza html şablonları

3 Cevap php

Ben onları almak ve değişkenleri eklemek mümkün duyuyorum bir veritabanında html şablonları saklamak için en iyi yolu merak ediyorum.

Açıkçası ben php ve ardından 'EVAL' rekor olarak bunları saklamak olabilir .... ama ben kötü olduğunu duydum.

daha iyi bir yolu var mı? :)

edit:

Ben net değildi Üzgünüm ... Ben html şablonları söyleyerek bunu basitleştirmek için çalıştı ... ben gerçekten ne anlama geldiğini küçük embed-mümkün html elemanları (düşünmek youtube) ... yerine tüm bir site oldu.

3 Cevap

Ben de veritabanı içinde HTML depolamak karşı tavsiye ediyorum. Bu dosya sisteminde şablon olarak saklamak ve bunları içeren ya da gerektiğinde bunları ayrıştırmak için çok daha uygun. Ben de Smarty gibi bir şey kullanmanızı öneririz. Çok kullanışlı bir araç olmasıdır.

Yerine elle yapardı Ancak, burada ben ne yapacağını olduğunu.

İlk olarak, dosya sistemi üzerinde bir dosyada şablonu saklamak istiyorsunuz. Bunun yerine bir veritabanı kullanmak isterseniz, bu yapılabilir. Sadece bu gibi şeyler için kullanılan bir veritabanı, genellikle, daha fazla yük neden olacağını biliyoruz.

Örneğin, bir videonun YouTube durumunda:

<object width="{$width}" height="{$height}">
    <param name="movie" value="http://www.youtube.com/{$path}"></param>
    <param name="allowFullScreen" value="true"></param>
    <param name="allowscriptaccess" value="always"></param>
    <embed src="http://www.youtube.com/{$path}"
           type="application/x-shockwave-flash"
           allowscriptaccess="always"
           allowfullscreen="true"
           width="{$width}" height="{$width}">
    </embed>
</object>

Sonra I would çok PHP kendisi gibi orada sadece str_replace PHP değişkenleri, dizeleri ile yapar.

<?php
$template_path = 'templates/youtube_vid.tpl';
$template_data = file_get_contents($template_path);

$old = array('{$width}', '{$height}', '{$path}');
$new = array(425, 344, 'v/zuZB2O6orV0&hl=en_US&fs=1&');

echo str_replace($old, $new, $template_data);
?>

Ve bu olurdu.

Yapabildin ders kullanılmak <?php $width; ?> gibi tutucuları ve sadece include şablonu, ama bu enjeksiyon saldırıları için risk bırakıyor. Bu güvenli yoldur.

Tekerleği yeniden icat etmeye gerek yok, bir templating motoru kullanmak ve bir veritabanında şablonlan kendilerini saklayabilirsiniz. Şahsen ben onu korumak için much basit şeyler yapar çünkü dosya sisteminde şablonları saklamak ister ama onun proje :)

Mark, veritabanında şablonları saklamak gerekiyor? Eğer bunları önbelleğe sürece bu, bu şablonlar istenen her zaman DB sunucusu ağır bir yük ekleyecektir.

Yerleşik önbelleklerini dosya okur düzene dosya sistemi ile karşılaştırın.

Artı eval () kullanılarak gelebilecek potansiyel güvenlik yuvası olmayacaktır.