PHP Streams函数

PHP stream_socket_enable_crypto() 函数启用或禁用流加密。建立加密设置后,可以通过在 enable 参数中传递 true 或 false 来动态打开和关闭加密。

语法

stream_socket_enable_crypto(stream, enable, crypto_type, session_stream) 

参数

stream必需。 指定流资源。
enable必需。 指定 true/false 以启用/禁用流上的加密。
crypto_type可选。 在流上设置加密。有效方法为
  • STREAM_CRYPTO_METHOD_SSLv2_CLIENT
  • STREAM_CRYPTO_METHOD_SSLv3_CLIENT
  • STREAM_CRYPTO_METHOD_SSLv23_CLIENT
  • STREAM_CRYPTO_METHOD_ANY_CLIENT
  • STREAM_CRYPTO_M ETHOD_TLS_CLIENT
  • STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT
  • STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT
  • STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
  • STREAM_CRYPTO_METHOD_SSLv2_SERVER
  • STREAM_CRYPTO_METHOD_SSLv3_SERVER
  • STREAM_CRYPTO_METH OD_SSLv23_SERVER
  • STREAM_CRYPTO_METHOD_ANY_SERVER
  • STREAM_CRYPTO_METHOD_ANY_SERVER
  • STREAM_CRYPTO_METHOD_TLS_SERVER
  • STREAM_CRYPTO_METHOD_TLSv1_0_SERVER
  • STREAM_CRYPTO_METHOD_TLSv1_1_SERVER
  • STREAM_CRYPTO_METHOD_TLSv1_2_SERVER
如果省略,crypto_method将使用流的 SSL 上下文中的 context 选项。
session_stream可选。 使用 session_stream 中的设置为流提供种子。

返回值

成功返回 true,如果协商失败则返回 false,如果没有足够的数据则返回 0,您应该重试(仅适用于非阻塞套接字)。

示例:stream_socket_enable_crypto() 示例

下面的示例显示了stream_socket_enable_crypto()函数的用法。

<?php
$fp = stream_socket_client("tcp://myproto.example.com:31337", $errno, $errstr, 30);
if (!$fp) {
  die("Unable to connect: $errstr ($errno)");
}

//开启登录阶段加密
stream_socket_enable_crypto($fp, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);
fwrite($fp, "USER god\r\n");
fwrite($fp, "PASS secret\r\n");

//关闭其余部分的加密
stream_socket_enable_crypto($fp, false);

while ($motd = fgets($fp)) {
  echo $motd;
}

fclose($fp);
?>