it-swarm.com.de

Mischen von PHP Variablen und JS Variablen in der Ausgabe

Ich versuche, ein Modul für die Verwendung der URL-Toekn-Signatur von JWPlayer zu entwickeln (Dokumente finden Sie hier http://developer.jwplayer.com/jw-platform/reference/v1/content_signing.html ), aber ich habe ein Problem mit der Ausgabe.

Ich verwende die folgenden Felder in der XML des Moduls:

<field name="key" type="text" label="API Key" default="key" description="API Key" />
<field name="secret" type="text" label="API Secret" default="secret" description="API Secret" />
<field name="expires" type="text" label="Expires" default="Expires" description="Expires" />
<field name="mediaid" type="text" label="Media ID" default="Media ID" description="Media ID" />
<field name="domain" type="text" label="DNS Masking" default="Domain" description="Domain" />

Diese Variablen werden korrekt über PHP ausgegeben. Wenn ich die URL jedoch mit Javascript erstelle, schlägt sie fehl.

Ich habe folgendes für die Module default.php geschrieben

$key = $params->get('key');
$secret = $params->get('secret');
$domain = $params->get('domain');
$mediaid = $params->get('mediaid');
$expires = $params->get('expires');

function get_signed_player($key,$mediaid,$domain,$secret,$expires) {
  $path = "players/".$key."-".$mediaid.".js";
  $signature = md5($path.':'.$expires.':'.$secret);
  $url = 'http://'.$domain.'/'.$path.'?exp='.$expires.'&sig='.$signature;
  return $url;
};

echo "<p>Watch this cool video:</p>"
echo "<script type='text/javascript' src='".get_signed_player($key,'ALJ3XQCI')."'></script>";
?>

Irgendwelche Ideen, wo ich falsch liege?

2
RustyJoomla

Ok, habe gerade festgestellt, dass der Grund dafür, dass es nicht funktioniert, darin besteht, dass Sie die Parameterwerte nicht über die Funktion übergeben.

Versuche dies:

$key     = $params->get('key');
$secret  = $params->get('secret');
$domain  = $params->get('domain');
$mediaid = $params->get('mediaid');
$expires = $params->get('expires');

function get_signed_player($key, $mediaid, $domain, $secret, $expires)
{
    $path      = 'players/' . $key . '-' . $mediaid . '.js';
    $signature = md5($path . ':' . $expires . ':' . $secret);
    $url       = 'http://' . $domain . '/' . $path . '?exp=' . $expires . '&sig=' . $signature;

    return $url;
}

echo '<p>Watch this cool video:</p>';
echo '<script src="' . get_signed_player($key, $mediaid, $domain, $secret, $expires) . '"></script>';

Wie Sie sehen, habe ich ersetzt:

get_signed_player($key,'ALJ3XQCI')

mit:

get_signed_player($key, $mediaid, $domain, $secret, $expires)

Damit alles richtig durchlaufen wird.

Ich weiß nicht warum, aber ich habe den Code auch formatiert, da ich heute in einer dieser pedantischen Stimmungen bin.

Genau wie ein FYI sollte Ihre Funktion wirklich in eine helper.php Datei gehen, anstatt in der default.php zu sein. Diese Datei für die Ansicht des Moduls sollte daher das HTML-Markup enthalten. Jede Verarbeitung/Ausführung von Daten sollte in einer separaten Hilfedatei erfolgen.

Hoffe das hilft

1
Lodder