ホームページ > バックエンド開発 > PHPの問題 > PHPでポート番号を解除する方法(ソリューション分析)

PHPでポート番号を解除する方法(ソリューション分析)

PHPz
リリース: 2023-04-06 12:24:02
オリジナル
778 人が閲覧しました

インターネット技術の継続的な発展に伴い、Web サイトのフロントエンドとバックエンドはますます複雑になってきています。その過程で様々な問題が発生することがありますが、例えばPHPでWebサイトにアクセスする際にポート番号を解除したいなど、面倒な問題が発生します。しかし、心配しないでください。この問題には解決策があります。

まず、ポート番号の役割を理解しましょう。ポート番号は、TCP/IP プロトコルの通信のペアによって形成されるエンドポイント識別子であり、プロセスまたはアプリケーション内の特定のサービスを識別するために使用されます。ポート番号は通常、0 ~ 65535 の範囲の 16 ビット整数です。

ブラウザに URL を入力すると、デフォルトでポート 80 が使用されます。たとえば、http://www.test.com と入力すると、ブラウザはデフォルトでポート 80 を使用し、http://www.test.com:80 に直接アクセスします。すべての Web サイトにはデフォルトのポート番号があります。通常、HTTP プロトコルはポート 80 を使用し、HTTPS プロトコルはポート 443 を使用します。

PHP プログラムで、cURL を使用して Web サイトにアクセスする必要があり、その Web サイトが非標準のポート番号を使用する場合 (たとえば、GitHub にアクセスする場合、非標準のポート番号は 443)、ポート番号は 443 に設定されていますので、変更する必要があります。それ以外の場合、アクセスはデフォルトのポートであるポート 80 にリダイレクトされます。

それでは、PHP でポート番号をキャンセルするにはどうすればよいでしょうか?考えられる解決策をいくつか紹介します。

オプション 1: gethostbyname 関数を使用する

cURL を使用して Web サイトにアクセスする場合、通常はコード内で URL を使用します。例:

$url = "https://github.com";
$ch = curl_init($url);
ログイン後にコピー

ポート番号をキャンセルするには、gethostbyname 関数を使用して URL を IP アドレスに変換します。

$url = "https://github.com";
$ip = gethostbyname(parse_url($url, PHP_URL_HOST));
$ch = curl_init("https://$ip");
ログイン後にコピー

gethostbyname 関数を使用して URL を IP アドレスに変換し、ポート番号をキャンセルします。ただし、IPv6アドレスを使用している場合など、環境によっては本機能が失敗する場合があります。

オプション 2: stream_context_create 関数を使用する

stream_context_create 関数を使用して、PHP プログラムにコンテキスト パラメーターを設定できます。コンテキストパラメータを変更することで、ポート番号をキャンセルできます。

以下はサンプル コードです:

$url = "https://github.com";
$options = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true,
        'peer_name' => parse_url($url, PHP_URL_HOST),
        'peer' => parse_url($url, PHP_URL_HOST) . ':443'
    )
);
$context = stream_context_create($options);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json'
));
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 2000);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 2000);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, fopen('php://output', 'w'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);
ログイン後にコピー

stream_context_create 関数を使用してコンテキスト パラメーターを作成し、peer パラメーターを Web サイトのホスト名とポート番号に設定し、ポート番号をキャンセルします。 。

概要

PHP でポート番号をキャンセルする方法はたくさんありますが、ここでは一般的な方法を 2 つだけ紹介します。実際の使用では、特定の状況に応じて適切なソリューションを選択できます。

cURL を使用して Web サイトにアクセスする場合は、セキュリティを確保するために verify_peer および verify_peer_name パラメーターを設定することをお勧めします。古いバージョンの PHP を使用している場合は、セキュリティと安定性を向上させるために、PHP バージョンのアップグレードを検討することをお勧めします。

以上がPHPでポート番号を解除する方法(ソリューション分析)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート