mysql - mağaza embed kodları (youtube, vimeo vb)

2 Cevap php

Nasıl iyi gömmek için html saklamak için?

Aklıma tek yolu vardır:

embed html almak ve eklemek <?php echo $var1; ?> id sonra gidip o db depolamak ve çalıştırmak için Eval kullanımı nerede.

veya

id yıllardan tarafından php değiştirilmesi için bir işaretleyici olarak hareket etmek karakterlerin garip bir arada yerleştirin.

2 Cevap

Seçenek # 2 çok daha güvenli - sadece durumda birisi DB karşı bir SQL Injection saldırıyı gerçekleştirmek için yönetir, onlar daha sonra sunucu tarafında enjekte PHP yürütmek için gömme işlemi istismar edemez. Onlar için umut olabilir iyi bir phishing veya XSS saldırısı olacaktır.

Başka bir alternatif XML uygun verileri biçimlendirmek ve veritabanında doğru embed kod içine verileri dönüştürmek için bir XSLT saklamaktır. Bu sizin durum için muhtemelen overkill, ama daha ölçeklenebilir ve daha az hata eğilimli yukarıdaki birini daha.

XML versiyonu için EDIT: Skeleton kodu

XML

<video>
  <url>http://example.com/video.flv</url>
</video>

XSLT

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" />
  <xsl:template match="video">
    <xsl:element name="embed">
      <xsl:attribute name="src"><xsl:value-of select="url/text()" /></xsl:attribute>
      <xsl:attribute name="width">500</xsl:attribute>
    </xsl:element>
  </xsl:template>
</xsl:transform>

PHP

// assuming the XSLT above is stored in SomeTable.transform, and the above XML has been stored in $xml_text
$xml_doc = new DOMDocument();
$xml_doc->loadXML($xml_text);

$xsl_doc = new DOMDocument();
$xsl_doc->loadXML(GetXSLT("flv"));

$processor = new XSLTProcessor();
$processor->importStyleSheet($xsl_doc);
echo $processor->transformToXML($xml_doc);

function GetXSLT($type)
{
    $db = mysql_connect("user", "password", "host"); // not sure if I got the order right here, but whatever
    $res = mysql_query("SELECT transform FROM SomeTable WHERE type = '$type'"); // should use parameters instead of directly embedding the type here to avoid bugs and exploits, but whatever
    $array = mysql_fetch_assoc($res);
    return $array['transform'];
}

Bu konuda güzel bir parçası giriş XML oluşturmak için bir sınıf oluşturabilir ve sizin <embed> etiketi geçmek istediğiniz tüm parametreleri içerebilir olmasıdır. Eğer bunları işlemek için XSLT işleme talimatı eklemek istemiyorsanız, onlar sessizce göz ardı olacak. Görüntülemek istediğiniz temel XML, ve ortam türü başına bir alt sınıfı oluşturmak için bir sınıf yapmak, ve dönüşümleri geçmek için XML oluşturma kolay olmalıdır.

Neden sadece 11 karakterlik bir video kodunu depolamak ve daha sonra bu videoyu gömmek istediğiniz yere HTML oluşturmak değil mi?

See this: How to embed YouTube videos in PHP ?