Dengan perkembangan teknologi Internet yang berterusan, bahagian hadapan dan bahagian belakang laman web kami menjadi semakin kompleks. Dalam proses ini, banyak masalah mungkin timbul Sebagai contoh, kami ingin membatalkan nombor port apabila menggunakan PHP untuk mengakses laman web, yang akan menjadi masalah yang menyusahkan. Tetapi jangan risau, kami ada penyelesaian untuk masalah ini.
Pertama, mari kita fahami peranan nombor port. Nombor port ialah pengecam titik akhir yang dibentuk oleh set komunikasi berpasangan dalam protokol TCP/IP dan digunakan untuk mengenal pasti perkhidmatan tertentu dalam proses atau aplikasi. Nombor port biasanya integer 16-bit, antara 0 hingga 65535.
Apabila kami memasukkan URL ke dalam penyemak imbas, port 80 digunakan secara lalai. Contohnya, jika anda memasukkan http://www.test.com, penyemak imbas anda akan lalai ke port 80 dan mengakses http://www.test.com:80 secara langsung. Setiap tapak web mempunyai nombor port lalai. Biasanya, protokol HTTP menggunakan port 80 dan protokol HTTPS menggunakan port 443.
Dalam program PHP, jika kita ingin menggunakan cURL untuk mengakses tapak web, dan tapak web menggunakan nombor port bukan standard, contohnya, apabila mengakses GitHub, nombor port bukan standardnya ialah 443, maka kita perlu menukar Nombor port ditetapkan kepada 443. Jika tidak, akses kami akan diubah hala ke port lalai port 80.
Jadi bagaimana untuk membatalkan nombor port dalam PHP? Berikut adalah beberapa penyelesaian yang mungkin.
Apabila menggunakan cURL untuk mengakses tapak web, kami biasanya menggunakan URL dalam kod, contohnya:
$url = "https://github.com"; $ch = curl_init($url);
Jika kami ingin membatalkan nombor Port, kita boleh menggunakan fungsi gethostbyname untuk menukar URL kepada alamat IP:
$url = "https://github.com"; $ip = gethostbyname(parse_url($url, PHP_URL_HOST)); $ch = curl_init("https://$ip");
Gunakan fungsi gethostbyname untuk menukar URL kepada alamat IP, sekali gus membatalkan nombor port. Walau bagaimanapun, fungsi ini mungkin gagal dalam sesetengah persekitaran, seperti apabila alamat IPv6 digunakan.
Kami boleh menetapkan parameter konteks dalam program PHP melalui fungsi stream_context_create. Kita boleh membatalkan nombor port dengan mengubah suai parameter konteks.
Berikut ialah contoh kod:
$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);
Gunakan fungsi stream_context_create untuk mencipta parameter konteks, tetapkan parameter peer kepada nama hos dan nombor port tapak web, dan kemudian batalkan nombor port.
Terdapat banyak cara untuk membatalkan nombor port dalam PHP Di sini hanya dua kaedah biasa. Dalam penggunaan sebenar, penyelesaian yang sesuai boleh dipilih mengikut situasi tertentu.
Adalah disyorkan untuk menetapkan parameter verify_peer dan verify_peer_name untuk memastikan keselamatan semasa menggunakan cURL untuk mengakses tapak web. Jika anda menggunakan versi PHP yang lebih lama, adalah disyorkan untuk mempertimbangkan untuk meningkatkan versi PHP anda untuk keselamatan dan kestabilan yang lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk membatalkan nombor port dalam PHP (analisis penyelesaian). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!