Смешивание переменных PHP и переменных JS на выходе

Я пытаюсь разработать модуль для использования JWPlayer URL Toekn Signing (документы можно найти здесь http://developer.jwplayer.com/jw-platform/reference/v1/content_signing.html ), но у меня возникла проблема с выходом.

Я использую следующие поля в XML-модуле:

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

Эти переменные корректно выводятся через PHP. Однако, когда я создаю URL-адрес с помощью Javascript, он не работает.

Я написал для модулей 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>";
?>

Любые идеи, в которых я ошибаюсь?

2 голоса | спросил RustyJoomla 21 MarpmMon, 21 Mar 2016 19:03:37 +03002016-03-21T19:03:37+03:0007 2016, 19:03:37

1 ответ


1

Ok просто понял, что причина, по которой он не работает, заключается в том, что вы не передаете значения параметров через функцию.

Попробуйте следующее:

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

Как вы можете видеть, я заменил:

get_signed_player($key,'ALJ3XQCI')

с:

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

Итак, все прошло правильно.

Не знаю, почему, но я также отформатировал код, так как сегодня я в одном из этих педантичных настроений.

Как и FYI, ваша функция должна действительно перейти в файл helper.php , а не находиться в default.php . Этот файл для представления модуля и, следовательно, должен содержать разметку HTML. Любая обработка /исключение данных должна быть в отдельном вспомогательном файле.

Надеюсь, что это поможет

ответил Lodder 21 MarpmMon, 21 Mar 2016 19:25:54 +03002016-03-21T19:25:54+03:0007 2016, 19:25:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132