Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggantikan alamat pautan dalam php

Bagaimana untuk menggantikan alamat pautan dalam php

藏色散人
藏色散人asal
2021-09-22 09:29:033522semak imbas

Cara menggantikan alamat pautan dalam PHP: 1. Dapatkan URL skrip semasa melalui kaedah "function GetCurUrl(){...}" 2. Melalui "function url_set_value($url,$key ,$value)" {...}" kaedah boleh digunakan untuk melaksanakan penggantian pautan.

Bagaimana untuk menggantikan alamat pautan dalam php

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer Dell G3.

Bagaimana untuk menggantikan alamat pautan dalam php?

Cara untuk mendapatkan URL semasa dalam PHP dan menggantikan parameter atau URL

Pertama, PHP mendapat URL halaman semasa:

Kod adalah seperti berikut:

//获得当前的脚本网址 
function GetCurUrl() 
{ 
if(!empty($_SERVER["REQUEST_URI"])) 
{ 
$scriptName = $_SERVER["REQUEST_URI"]; 
$nowurl = $scriptName; 
} 
else 
{ 
$scriptName = $_SERVER["PHP_SELF"]; 
if(empty($_SERVER["QUERY_STRING"])) 
{ 
$nowurl = $scriptName; 
} 
else 
{ 
$nowurl = $scriptName."?".$_SERVER["QUERY_STRING"]; 
} 
} 
return $nowurl; 
}

Yang lain ialah menggantikan nilai pembolehubah dalam bahagian pertanyaan URL dengan PHP Sebagai contoh, kami ingin menetapkan kunci=321 dalam $url; >Sebenarnya terdapat beberapa situasi:
$url=' www.sina.com/a.php?key=330′
atau $url='www.sina.com/a.php; atau $url='www.sina.com/a.php ?cat=2′;
dsb. Walaupun terdapat banyak situasi, ia sangat mudah untuk dikendalikan dengan PHP, seperti berikut:


Kodnya adalah seperti berikut:

Tetapi pengganti saya ditulis seperti ini. . Sudah tentu ia menyebalkan. .
/* 将URL中的某参数设为某值*/ //【这一段就挺好啊】 
function url_set_value($url,$key,$value) 
{ 
$a=explode('?',$url); 
$url_f=$a[0]; 
$query=$a[1]; 
parse_str($query,$arr); 
$arr[$key]=$value; 
return $url_f.'?'.http_build_query($arr); 
}


Kodnya adalah seperti berikut:

Walaupun beberapa perkara telah dipertimbangkan, ia hanyalah penyelesaian yang sangat umum
<?php 
/** 
*使用例程:可用于分页类或页面中的替换等 
$url = "add_jd.php?pid=4&tb=gm_jd&page=1"; 
echo( "原始的URL:" . $url ); 
echo( &#39;<br/>&#39; ); 
echo( "字符串参数:" . url::replace( $url , "pid=10,page=2") ); 
echo( &#39;<br/>&#39; ); 
echo( "数组型参数:" . url::replace( $url , array(&#39;pid&#39;=>10,&#39;page&#39;=>5)) ); 
//echo( urlReplace( $url , array(&#39;pid&#39;=>10,&#39;page&#39;=>5)) ); 
*/ 
/** 
* url replace 
* @param string $url 需要替换的URL字符串,一般为aaa.php?abc=def,也可以带上路径,象http://xxx.com/abc/def.php?aa=bb 
* @param mixed $options 需要替换的变量,可以是字符串或数组,如果是字符串,格式为"aa=bb,cc=dd",有多个,用","隔开 
* @return string $url 替换后的URL 
*/ 
class url 
{ 
static function replace ( $url , $options) 
{ 
$options = self::optInit( $options ); 
$Query = parse_url( $url , PHP_URL_QUERY ); 
if($Query){ 
parse_str( $Query , $GET ); 
if ( $GET ){ 
//foreach ( $GET as $_k => $_v ){ 
// //if( array_key_exists( $_k , $options)){ 
// $GET[$_k] = $options[$_k]; 
// //} 
//} 
$GET = array_merge($GET,$options); 
} 
return str_replace( $Query , http_build_query( $GET ), $url ); 
} 
if( !$Query && $options ){ 
return $url . "?" . http_build_query($options); 
} 
return $url; 
} 
static private function optInit ( $options ) 
{ 
if( is_string( $options )){ 
$optlists = Power::Normalize( $options ); 
foreach( $optlists as $val){ 
list($tmpKey,$tmpVal) = Power::Normalize( $val , "="); 
$opts[$tmpKey] = $tmpVal; 
} 
}else{ 
$opts = $options; 
} 
//unset( $options ); 
return $opts; 
} 
}

Berikut ialah beberapa maklumat tambahan :
Contoh: Saya perlu mendapatkan alamat URL semasa


kemudian ia memaparkan: http://localhost/lu.php
$url_this = "http://".$_SERVER [&#39;HTTP_HOST&#39;].$_SERVER[&#39;PHP_SELF&#39;]; 
echo $url_this;

Pembolehubah pelayan: $_SERVER
Nota: Digunakan dalam PHP 4.1.0 dan versi yang lebih baru. Versi sebelumnya, menggunakan $HTTP_SERVER_VARS.

$_SERVER ialah tatasusunan yang mengandungi perkara seperti pengepala, laluan dan lokasi skrip. Entiti tatasusunan dicipta oleh pelayan web. Tiada jaminan bahawa semua pelayan akan menghasilkan semua mesej mungkin mengabaikan beberapa mesej atau menjana mesej baharu yang tidak disenaraikan di bawah. Ini bermakna bahawa sejumlah besar pembolehubah ini dinyatakan dalam spesifikasi CGI 1.1, jadi anda harus mengkajinya dengan teliti.

Ini ialah "superglobal", atau boleh digambarkan sebagai pembolehubah global automatik. Ini bermakna ia berfungsi dalam semua skrip. Anda tidak perlu menggunakan $_SERVER global untuk mengaksesnya dalam fungsi atau kaedah, seperti yang anda lakukan dengan $HTTP_SERVER_VARS.

$HTTP_SERVER_VARS mengandungi maklumat yang sama, tetapi bukan pembolehubah global automatik. (Nota: $HTTP_SERVER_VARS dan $_SERVER adalah pembolehubah berbeza, dan PHP mengendalikannya secara berbeza.)

Pembolehubah ini juga tersedia dalam semua skrip jika arahan register_globals ditetapkan, iaitu $_SERVER dan $_SERVER dipisahkan Tatasusunan $HTTP_SERVER_VARS. Untuk maklumat berkaitan, lihat bahagian Keselamatan Menggunakan Daftar Globals. Pembolehubah global individu ini bukan pembolehubah global automatik.

Anda mungkin mendapati bahawa beberapa elemen $_SERVER yang disenaraikan di bawah tidak tersedia. Ambil perhatian bahawa beberapa elemen yang disenaraikan di bawah adalah sah (atau tidak mempunyai makna sebenar) jika anda menjalankan PHP dari baris arahan.


"PHP_SELF"
Nama fail skrip yang sedang dilaksanakan, berkaitan dengan akar dokumen. Contohnya, menggunakan $_SERVER['PHP_SELF'] dalam skrip dengan alamat URL http://example.com/test.php/foo.bar akan menghasilkan /test.php/foo.bar.

Pembolehubah ini tidak mempunyai kesan jika PHP dijalankan daripada baris arahan.

"argv"
Hujah diserahkan kepada skrip ini. Apabila skrip dijalankan dalam mod baris arahan, pembolehubah argv dihantar ke program sebagai hujah baris arahan gaya C. Apabila kaedah GET dipanggil, pembolehubah ini mengandungi data yang diminta.

"argc"
Mengandungi bilangan argumen baris arahan yang dihantar kepada program (jika berjalan dalam mod baris arahan).

"GATEWAY_INTERFACE"
Versi spesifikasi CGI yang digunakan oleh pelayan. Contohnya, "CGI/1.1".

'SERVER_NAME'
Nama hos pelayan tempat skrip sedang dijalankan. Jika skrip berjalan pada hos maya, nama ditentukan oleh nilai yang ditetapkan untuk hos maya tersebut.

'SERVER_SOFTWARE'
Rentetan yang mengenal pasti pelayan, diberikan dalam pengepala apabila membalas permintaan.

"SERVER_PROTOCOL"
Nama dan versi protokol komunikasi apabila meminta halaman. Contohnya, "HTTP/1.0".

"REQUEST_METHOD"
Kaedah permintaan semasa mengakses halaman. Contohnya: "GET", "HEAD", "POST", "PUT".

“QUERY_STRING”
Rentetan pertanyaan.

“DOCUMENT_ROOT”
Direktori akar dokumen tempat skrip yang sedang dijalankan berada. Ditakrifkan dalam fail konfigurasi pelayan.

"HTTP_ACCEPT"
Kandungan Accept: pengepala permintaan semasa.

"HTTP_ACCEPT_CHARSET"
Kandungan Accept-Charset: pengepala permintaan semasa. Contohnya: "iso-8859-1,*,utf-8".

"HTTP_ACCEPT_ENCODING"
Kandungan Accept-Encoding: pengepala permintaan semasa. Contohnya: "gzip".

"HTTP_ACCEPT_LANGUAGE"
Kandungan Accept-Language: pengepala permintaan semasa. Contohnya: "en".

"HTTP_CONNECTION"
Kandungan Sambungan: pengepala permintaan semasa. Contohnya: "Keep-Alive".

"HTTP_HOST"
Kandungan Hos: pengepala permintaan semasa.

"HTTP_REFERER"
Alamat URL halaman sebelumnya yang memaut ke halaman semasa. Tidak semua ejen pengguna (pelayar) akan menetapkan pembolehubah ini, dan sesetengah juga boleh mengubah suai HTTP_REFERER secara manual. Oleh itu, pembolehubah ini tidak selalu benar.

"HTTP_USER_AGENT"
Kandungan User_Agent: pengepala permintaan semasa. Rentetan ini menunjukkan maklumat tentang ejen pengguna yang mengakses halaman ini. Contoh biasa ialah: Mozilla/4.5 [ms] (X11; U; Linux 2.2.9 i586). Anda juga boleh menggunakan get_browser() untuk mendapatkan maklumat ini.

“REMOTE_ADDR”
Alamat IP pengguna yang menyemak imbas halaman semasa.

'REMOTE_HOST'
Nama hos pengguna yang sedang menyemak imbas halaman semasa. Peleraian nama domain terbalik adalah berdasarkan REMOTE_ADDR pengguna.

Nota: Pelayan web mesti dikonfigurasikan untuk mencipta pembolehubah ini. Contohnya Apache memerlukan HostnameLookups On dalam httpd.conf. Lihat gethostbyaddr().

"REMOTE_PORT"
Port yang digunakan oleh pengguna untuk menyambung ke pelayan.

"SCRIPT_FILENAME"
Nama laluan mutlak skrip yang sedang dilaksanakan.

"SERVER_ADMIN"
Nilai ini menentukan parameter SERVER_ADMIN dalam fail konfigurasi pelayan Apache. Jika skrip berjalan pada hos maya, nilai ini adalah nilai hos maya itu.

"SERVER_PORT"
Port yang digunakan oleh pelayan. Lalai ialah "80". Jika anda menggunakan sambungan selamat SSL, nilai ini ialah port HTTP yang anda tetapkan.

"SERVER_SIGNATURE"
Rentetan yang mengandungi versi pelayan dan nama hos maya.

"PATH_TRANSLATED"
Laluan asas sistem fail (bukan akar dokumen) di mana skrip semasa berada. Ini adalah hasil selepas pelayan telah diimejkan daripada laluan maya kepada sebenar.

"SCRIPT_NAME"
Mengandungi laluan ke skrip semasa. Ini berguna apabila halaman perlu menghala ke dirinya sendiri.

"REQUEST_URI"
URI diperlukan untuk mengakses halaman ini. Contohnya, "/index.html".

"PHP_AUTH_USER"
Apabila PHP berjalan dalam mod modul Apache dan fungsi pengesahan HTTP sedang digunakan, pembolehubah ini ialah nama pengguna yang dimasukkan oleh pengguna.

“PHP_AUTH_PW”
Apabila PHP berjalan dalam mod modul Apache dan fungsi pengesahan HTTP sedang digunakan, pembolehubah ini ialah kata laluan yang dimasukkan oleh pengguna.

"AUTH_TYPE"
Apabila PHP berjalan dalam mod modul Apache dan pengesahan HTTP sedang digunakan, pembolehubah ini ialah jenis pengesahan.

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk menggantikan alamat pautan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn