我需要知道用户是否登录,以及当他们请求rtmp流时他们是谁。
rtmp服务器将在用户连接时连接到php回调页面,并且只会在2xx响应时授权流。
我想到了这个:
<param name="flashvars"
value="src=rtmp://serverip/stream?sid=<?php echo $session_id; ?>" />
我正在使用https,但是rtmp不是通过安全连接,所以看起来很危险。
也许有更好的方法?
发送session_id的加密。当回调发生时,在PHP端解密它。
为了使它更加安全,让你的加密密钥每次都不同。例如,让它存在一个静态部分和一个动态部分(如user_name)。并在flashvars中提供动态部分(例如user_id)的线索。
的例子:
发送参数
<?php
$static_key_part = "blahblah";
$encrypted = openssl_encrypt($session_id, "aes128", $static_key_part.$user_name);
?>
<param name="flashvars"
value="src=rtmp://serverip/stream?sid=<?php echo urlencode($encrypted); ?>&user_id=<?php echo $user_id; ?>" />
处理回调:
<?php
$static_key_part = "blahblah";
$encrypted = $_GET['encrypted'];
$user_id = $_GET['user_id'];
$user_name = get_it_from_database($user_id);
$session_id = openssl_decrypt($encrypted, "aes128", $static_key_part.$user_name);
session_id($session_id);
session_start();
// check session here
?>