Frage

Wie man am besten die HTML speichern für die Einbettung?

die einzigen Möglichkeiten, die ich denken kann, sind:

den Einbettungs html nehmen und <?php echo $var1; ?> hinzufügen, wo die ids gehen dann speichern Sie es in der Db und verwenden Eval es auszuführen.

oder

legen Sie eine seltsame Kombination von Zeichen als Marker wirken, indem sie die IDs in PHP ersetzt werden.

War es hilfreich?

Lösung

Option # 2 ist viel sicherer - nur für den Fall jemand einen SQL-Injection-Angriff gegen Ihre DB auszuführen verwaltet, können sie nicht dann Ihre Einbettung Betrieb ausschöpfen injizierten PHP auf der Server-Seite auszuführen. Das Beste, was sie sich wünschen kann ein Phishing oder XSS-Angriff wäre.

Eine weitere Alternative ist es, die entsprechenden Daten in XML und in der Datenbank gespeichert einen XSLT formatiert wird die Daten in den richtigen Code einbetten zu transformieren. Das ist wahrscheinlich übertrieben für Ihren Fall, aber besser skalierbar und weniger fehleranfällig als die beiden oben.

EDIT: Skeleton-Code für XML-Version

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'];
}

Das Schöne daran ist, dass Sie eine Klasse erstellen kann die Eingabe XML zu generieren, und es können alle Parameter enthalten, die Sie auf Ihre <embed>-Tag übergeben werden soll. Wenn Sie keine Verarbeitungsanweisungen zu Ihrem XSLT hinzufügen, um sie zu behandeln, werden sie stillschweigend ignoriert. Machen Sie eine Klasse die grundlegende XML zu erzeugen, und eine Unterklasse pro Medientyp angezeigt werden soll, und die Generierung von XML die Transformationen passieren sollte einfach sein.

Andere Tipps

Warum nicht einfach speichern die 11-Zeichen-Videocode und dann bauen die HTML, wo Sie das Video einbetten möchten?

Siehe dazu: Wie YouTube-Videos in PHP?

einzubetten
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top