web-dev-qa-db-fra.com

Mélange PHP variables et variables JS en sortie)

J'essaie de développer un module pour utiliser l'URL Toekn Signing de JWPlayer (les documents peuvent être trouvés ici http://developer.jwplayer.com/jw-platform/reference/v1/content_signing.html ) mais je 'ai un problème avec la sortie.

J'utilise les champs suivants dans le XML du module:

<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" />

Ces variables sont correctement affichées via PHP. Cependant, lorsque je construis l'URL à l'aide de Javascript, cela échoue.

J'ai écrit ce qui suit pour les modules default.php

$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>";
?>

Des idées où je vais mal?

2
RustyJoomla

Ok, je viens de me rendre compte que cela ne fonctionne pas parce que vous ne transmettez pas les valeurs de paramètre à travers la fonction.

Essaye ça:

$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>';

Comme vous pouvez le constater, j'ai remplacé:

get_signed_player($key,'ALJ3XQCI')

avec:

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

Pour que tout soit passé correctement.

Je ne sais pas pourquoi, mais j'ai également formaté le code, car je suis dans une de ces humeurs pédantes aujourd'hui.

Tout comme un FYI, votre fonction devrait vraiment aller dans un fichier helper.php, plutôt que d'être dans le default.php. Ce fichier de pour la vue du module doit donc contenir le balisage HTML. Tout traitement/exécution de données doit être dans un fichier d'assistance séparé.

J'espère que cela t'aides

1
Lodder