ti-enxame.com

Misturando PHP variáveis ​​e variáveis ​​JS na saída

Estou tentando desenvolver um módulo para usar a assinatura Toekn da URL do JWPlayer (os documentos podem ser encontrados aqui http://developer.jwplayer.com/jw-platform/reference/v1/content_signing.html ), mas eu Estou tendo um problema com a saída.

Estou usando os seguintes campos no XML do módulo:

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

Essas variáveis ​​são exibidas corretamente via PHP. No entanto, quando estou criando o URL usando Javascript, está falhando.

Eu escrevi o seguinte para os módulos 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>";
?>

Alguma idéia de onde estou errado?

2
RustyJoomla

Ok, acabei de perceber que o motivo pelo qual não está funcionando é porque você não está passando os valores dos parâmetros através da função.

Tente o seguinte:

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

Como você pode ver, substituí:

get_signed_player($key,'ALJ3XQCI')

com:

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

Para que tudo seja passado corretamente.

Não sei por que, mas também formatei o código, pois estou com um humor pedante hoje.

Assim como um FYI, sua função deve realmente entrar em um arquivo helper.php, em vez de estar no default.php. Este arquivo é para a visualização do módulo e, portanto, deve conter a marcação HTML. Qualquer processamento/execução de dados deve estar em um arquivo auxiliar separado.

Espero que isto ajude

1
Lodder