Maison > Article > développement back-end > Comment remplacer l'adresse du lien en php
Comment remplacer l'adresse du lien en PHP : 1. Obtenez l'URL du script actuel via la méthode "function GetCurUrl(){...}" ; 2. Utilisez la "function url_set_value($url,$key,$value) {... }" peut être utilisée pour implémenter le remplacement de lien.
L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur Dell G3.
Comment remplacer l'adresse du lien en php ?
Comment utiliser PHP pour obtenir l'URL actuelle et remplacer des paramètres ou des URL
Tout d'abord, PHP récupère l'URL de la page actuelle :
Le code est le suivant :
//获得当前的脚本网址 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; }
L'autre est PHP pour remplacer la valeur d'une variable dans la partie requête de l'URL, telle que , nous devons définir key=321 dans $url
Il existe en fait plusieurs situations :
$url='www.sina.com/a.php?key=330 ; ′;
ou $url='www.sina.com /a.php
ou $url='www.sina.com/a.php?cat=2′; Bien qu'il existe de nombreuses situations, c'est très simple à gérer avec PHP, comme suit :
/* 将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); }Mais mon remplacement est écrit comme ceci. . Bien sûr, ça craint. .
<?php /** *使用例程:可用于分页类或页面中的替换等 $url = "add_jd.php?pid=4&tb=gm_jd&page=1"; echo( "原始的URL:" . $url ); echo( '<br/>' ); echo( "字符串参数:" . url::replace( $url , "pid=10,page=2") ); echo( '<br/>' ); echo( "数组型参数:" . url::replace( $url , array('pid'=>10,'page'=>5)) ); //echo( urlReplace( $url , array('pid'=>10,'page'=>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; } }Bien que certaines choses aient été prises en compte, il ne s'agit que d'une solution très générale
Voici quelques informations supplémentaires :
Exemple : j'ai besoin d'obtenir l'adresse URL actuelle
$url_this = "http://".$_SERVER ['HTTP_HOST'].$_SERVER['PHP_SELF']; echo $url_this;Puis il affiche : http://localhost/lu.php
Variable serveur : $_SERVER
Remarque : utilisée dans PHP 4.1.0 et versions ultérieures. Les versions précédentes utilisaient $HTTP_SERVER_VARS.
$_SERVER est un tableau contenant des éléments tels que des en-têtes, des chemins et des emplacements de script. Les entités du tableau sont créées par le serveur web. Il n'y a aucune garantie que tous les serveurs produiront tous les messages ; les serveurs peuvent ignorer certains messages ou générer de nouveaux messages non répertoriés ci-dessous. Cela signifie qu'un grand nombre de ces variables sont spécifiées dans la spécification CGI 1.1, vous devez donc l'étudier attentivement.
Il s'agit d'une "superglobale", ou peut être décrite comme une variable globale automatique. Cela signifie simplement que cela fonctionne dans tous les scripts. Vous n'avez pas besoin d'utiliser global $_SERVER pour y accéder dans une fonction ou une méthode, comme vous le feriez avec $HTTP_SERVER_VARS.
$HTTP_SERVER_VARS contient les mêmes informations, mais n'est pas une variable globale automatique. (Remarque : $HTTP_SERVER_VARS et $_SERVER sont des variables différentes et PHP les gère différemment.)
Ces variables sont également disponibles dans tous les scripts si la directive register_globals est définie ; c'est-à-dire que les tableaux $_SERVER et $HTTP_SERVER_VARS sont séparés. Pour obtenir des informations connexes, consultez la section Sécurité Utilisation de Register Globals. Ces variables globales individuelles ne sont pas des variables globales automatiques.
Vous constaterez peut-être que certains des éléments $_SERVER répertoriés ci-dessous ne sont pas disponibles. Notez que peu des éléments répertoriés ci-dessous sont valides (ou n'ont aucune signification réelle) si vous exécutez PHP à partir de la ligne de commande.
"PHP_SELF"
Le nom de fichier du script en cours d'exécution, lié à la racine du document. Par exemple, utiliser $_SERVER['PHP_SELF'] dans un script avec l'adresse URL http://example.com/test.php/foo.bar entraînera /test.php/foo.bar.
Si PHP est exécuté en mode ligne de commande, cette variable n'a aucun effet.
"argv"
L'argument passé à ce script. Lorsque le script est exécuté en mode ligne de commande, la variable argv est transmise au programme sous forme d'arguments de ligne de commande de style C. Lorsque la méthode GET est appelée, cette variable contient les données demandées.
"argc"
Contient le nombre d'arguments de ligne de commande transmis au programme (s'il est exécuté en mode ligne de commande).
"GATEWAY_INTERFACE"
La version de la spécification CGI utilisée par le serveur. Par exemple, "CGI/1.1".
'SERVER_NAME'
Le nom de l'hôte du serveur sur lequel le script est actuellement en cours d'exécution. Si le script s'exécute sur un hôte virtuel, le nom est déterminé par la valeur définie pour cet hôte virtuel.
'SERVER_SOFTWARE'
La chaîne identifiant le serveur, donnée dans l'en-tête lors de la réponse à la requête.
"SERVER_PROTOCOL"
Le nom et la version du protocole de communication lors de la demande de la page. Par exemple, « HTTP/1.0 ».
"REQUEST_METHOD"
La méthode de requête lors de l'accès à la page. Par exemple : "GET", "HEAD", "POST", "PUT".
"QUERY_STRING"
La chaîne de requête.
"DOCUMENT_ROOT"
Le répertoire racine du document où se trouve le script en cours d'exécution. Défini dans le fichier de configuration du serveur.
"HTTP_ACCEPT"
Contenu de l'Accept : en-tête de la requête en cours.
"HTTP_ACCEPT_CHARSET"
Contenu du Accept-Charset : en-tête de la requête en cours. Par exemple : "iso-8859-1,*,utf-8".
"HTTP_ACCEPT_ENCODING"
Contenu de l'Accept-Encoding : en-tête de la requête en cours. Par exemple : "gzip".
"HTTP_ACCEPT_LANGUAGE"
Contenu de l'Accept-Language : en-tête de la requête en cours. Par exemple : "fr".
"HTTP_CONNECTION"
Contenu de la Connexion : entête de la requête en cours. Par exemple : « Keep-Alive ».
"HTTP_HOST"
Contenu de l'Hôte : entête de la requête en cours.
"HTTP_REFERER"
L'adresse URL de la page précédente liée à la page actuelle. Tous les agents utilisateurs (navigateurs) ne définiront pas cette variable, et certains peuvent également modifier HTTP_REFERER manuellement. Cette variable n’est donc pas toujours vraie.
"HTTP_USER_AGENT"
Contenu du User_Agent : entête de la requête en cours. Cette chaîne indique des informations sur l'agent utilisateur accédant à cette page. Un exemple typique est : Mozilla/4.5 [en] (X11 ; U ; Linux 2.2.9 i586). Vous pouvez également utiliser get_browser() pour obtenir ces informations.
«REMOTE_ADDR»
L'adresse IP de l'utilisateur qui parcourt la page actuelle.
'REMOTE_HOST'
Le nom d'hôte de l'utilisateur qui parcourt la page actuelle. La résolution inversée du nom de domaine est basée sur le REMOTE_ADDR de l'utilisateur.
Remarque : Le serveur Web doit être configuré pour créer cette variable. Par exemple, Apache nécessite HostnameLookups On dans httpd.conf. Voir gethostbyaddr().
"REMOTE_PORT"
Le port utilisé par les utilisateurs pour se connecter au serveur.
"SCRIPT_FILENAME"
Le chemin d'accès absolu du script en cours d'exécution.
"SERVER_ADMIN"
Cette valeur spécifie le paramètre SERVER_ADMIN dans le fichier de configuration du serveur Apache. Si le script s'exécute sur un hôte virtuel, cette valeur est celle de cet hôte virtuel.
"SERVER_PORT"
Le port utilisé par le serveur. La valeur par défaut est "80". Si vous utilisez une connexion sécurisée SSL, cette valeur correspond au port HTTP que vous définissez.
"SERVER_SIGNATURE"
Une chaîne contenant la version du serveur et le nom d'hôte virtuel.
"PATH_TRANSLATED"
Le chemin de base du système de fichiers (pas la racine du document) où se trouve le script actuel. C'est le résultat une fois que le serveur a été imagé d'un chemin virtuel vers un chemin réel.
"SCRIPT_NAME"
Contient le chemin d'accès au script actuel. Ceci est utile lorsque la page doit pointer vers elle-même.
"REQUEST_URI"
L'URI requis pour accéder à cette page. Par exemple, "/index.html".
"PHP_AUTH_USER"
Lorsque PHP s'exécute en mode module Apache et utilise la fonction d'authentification HTTP, cette variable est le nom d'utilisateur saisi par l'utilisateur.
"PHP_AUTH_PW"
Lorsque PHP s'exécute en mode module Apache et utilise la fonction d'authentification HTTP, cette variable est le mot de passe saisi par l'utilisateur.
"AUTH_TYPE"
Lorsque PHP s'exécute en mode module Apache et utilise la fonction d'authentification HTTP, cette variable est le type d'authentification.
Apprentissage recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!