php 현재 사이트 URL을 가져오고 매개 변수나 사이트를 바꾸는 방법

6592 단어 사이트 주소url
첫째, PHP가 현재 페이지를 가져오는 웹 주소:
 
//
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;
}
다른 하나는 PHP가 사이트 주소의query 부분을 바꾸는 변수의 값입니다. 예를 들어 $url의 키=321을 설정해야 합니다.사실은 몇 가지 상황이 있다. $url='www.sina.com/a.php?key=330′; 또는 $url='www.sina.com/a.php; 또는 $url='www.sina.com/a.php?cat=2′; 잠깐만.비록 상황은 많지만 PHP는 다음과 같이 처리하기 매우 간단하다
 
/* 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);
}
그런데 제 교체는 이렇게 썼어요...물론 썩었지만.
 
<?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;
}
}
몇 가지 고려를 했지만 일반적인 해결 방법일 뿐입니다. 다음은 보충 자료입니다. 예: 현재 URL 주소를 가져와야 합니다. $url_this = "http://".$_SERVER ['HTTP_HOST'].$_SERVER['PHP_SELF']; echo $url_this; 다음과 같이 표시됩니다.http://localhost/lu.php서버 변수: $_SERVER 참고: PHP 4.1.0 및 이후 버전에서 사용됩니다.이전 버전, $HTTP_ 사용SERVER_VARS. $_SERVER는 헤더, 경로 (paths), 스크립트 위치 (scriptlocations) 와 같은 그룹을 포함합니다.그룹의 실체는 웹 서버에서 만듭니다.모든 서버에서 모든 정보를 생성할 수 없음;서버에서 일부 정보를 무시했거나, 아래에 열거되지 않은 새로운 정보가 생겼을 수도 있습니다.이것은 대량의 이 변수들이 CGI 1.1specification에 설명되어 있기 때문에 자세히 연구해야 한다는 것을 의미한다.이것은 "super 글로벌"이거나 자동 전역 변수로 설명할 수 있습니다.이것은 단지 이것이 모든 스크립트에서 유효하다는 것을 의미할 뿐이다.함수나 방법에서 글로벌을 사용할 필요가 없습니다 $_SERVER; $HTTP_를 사용하는 것처럼 액세스합니다.SERVER_VARS와 같습니다. $HTTP_SERVER_VARS는 동일한 정보를 포함하지만 자동 전역 변수가 아닙니다.(참고: $HTTP_SERVER_VARS 및 $_SERVER는 서로 다른 변수이며 PHP는 서로 다른 방식으로 처리됩니다.)만약 register_globals 명령, 이 변수도 모든 스크립트에서 사용할 수 있습니다.즉, 분리된 $_SERVER 및 $HTTP_SERVER_VARS 배열.자세한 내용은 보안 관련 섹션을 참조하여 Register Globals를 사용하십시오.이러한 개별 글로벌 변수는 자동 글로벌 변수가 아닙니다.아래 나열된 $_ 을 발견할 수 있습니다.SERVER 요소를 사용할 수 없습니다.PHP를 명령줄로 실행하면 아래에 나열된 요소는 거의 유효하지 않거나 실제적인 의미가 없습니다."PHP_SELF"현재 실행 중인 스크립트의 파일 이름입니다. 문서 루트와 관련이 있습니다.예를 들어, URL 주소는http://example.com/test.php/foo.bar의 스크립트에 $_ 사용SERVER ['PHP_SELF'] 가/test를 받습니다.php/foo.bar 이 결과.PHP가 명령행으로 실행되는 경우 유효하지 않은 변수입니다."argv"는 이 스크립트에 전달되는 매개 변수입니다.스크립트가 명령행 방식으로 실행될 때,argv 변수는 프로그램 C 언어 스타일의 명령행 매개 변수에 전달됩니다.GET 메서드를 호출할 때 이 변수는 요청한 데이터를 포함합니다."argc"는 프로그램에 전달되는 명령행 매개 변수의 개수를 포함합니다. (명령행 모드에서 실행된다면)GATEWAY_INTERFACE 서버에서 사용하는 CGI 사양의 버전입니다.예를 들어, "CGI/1.1".SERVER_NAME'현재 실행 스크립트가 있는 서버 호스트의 이름입니다.이 스크립트가 가상 호스트에서 실행되면 이 이름은 가상 호스트가 설정한 값에 의해 결정됩니다. 'SERVER_SOFTWARE 서버 표지의 문자열은 요청에 응답할 때 머리에 표시됩니다.SERVER_PROTOCOL이 페이지를 요청할 때 통신 프로토콜의 이름과 버전입니다.예를 들어, "HTTP/1.0"입니다."REQUEST_METHOD"페이지에 액세스할 때의 요청 방법입니다.예를 들어, GET, HEAD, POST, PUT 등이 있습니다.QUERY_STRING 쿼리(query)의 문자열입니다.DOCUMENT_ROOT 현재 실행 스크립트가 있는 문서 루트 디렉토리입니다.서버 프로필에 정의됩니다.HTTP_ACCEPT에서 현재 요청한 Accept: 머리의 내용입니다.HTTP_ACCEPT_CHARSET 현재 요청된 Accept-Charset: 머리의 내용입니다.예를 들어 "iso-8859-1,*,utf-8"입니다.HTTP_ACCEPT_ENCODING 현재 요청된 Accept-Encoding: 머리의 내용입니다.예를 들어, "gzip"입니다.HTTP_ACCEPT_LANGUAGE 에서 현재 요청한 Accept-Language: 머리의 컨텐트입니다.예를 들어, "en"입니다.HTTP_CONNECTION에서 현재 요청한 Connection: 머리의 내용입니다.예를 들어, Keep-Alive.HTTP_HOST에서 현재 요청한 Host: 헤드의 내용입니다.HTTP_REFERERE는 현재 페이지의 이전 페이지의 URL 주소로 연결됩니다.모든 사용자 에이전트(브라우저)가 이 변수를 설정하는 것은 아니며 HTTP_를 수동으로 수정할 수도 있습니다REFERER.따라서 이 변수는 항상 정확하고 진실하지 않다.HTTP_USER_AGENT 현재 요청한 User_Agent: 머리의 내용입니다.이 문자열은 이 페이지에 접근하는 사용자 에이전트의 정보를 보여 줍니다.전형적인 예는 모질라/4.5[en](X11;U;Linux 2.2.9i586)이다.당신도 get_ 을 사용할 수 있습니다브라우저 () 에서 이 정보를 얻을 수 있습니다.REMOTE_ADDR 에서 현재 페이지 사용자의 IP 주소를 찾고 있습니다. 'REMOTE_HOST 에서 현재 페이지 사용자의 호스트 이름을 찾고 있습니다.역방향 도메인 이름 확인 사용자 기반 REMOTE_ADDR. 참고: 이 변수를 설정하려면 웹 서버를 구성해야 합니다.예를 들어 아파치는 httpd에 있어야 한다.conf에 Hostname Lookups On이 있습니다.gethostbyaddr () 를 참조하십시오.REMOTE_PORT 사용자가 서버에 접속할 때 사용하는 포트입니다."SCRIPT_FILENAME"현재 실행 스크립트의 절대 경로 이름입니다."SERVER_ADMIN"값은 Apache 서버 구성 파일의 SERVER_ 를 나타냅니다.ADMIN 매개변수.스크립트가 가상 호스트에서 실행되면 이 값은 가상 호스트의 값입니다.SERVER_PORT 서버에서 사용하는 포트입니다.기본값은 "80"입니다.SSL 보안 연결을 사용하는 경우 이 값은 사용자가 설정한 HTTP 포트입니다.SERVER_SIGNATURE에는 서버 버전 및 가상 호스트 이름이 포함된 문자열이 있습니다.PATH_TRANSLATED 현재 스크립트가 있는 파일 시스템 (문서 루트가 아님) 의 기본 경로입니다.서버에서 실제 경로로 가상화한 이미지의 결과입니다.SCRIPT_NAME에는 현재 스크립트의 경로가 포함되어 있습니다.이것은 페이지에서 자신을 가리켜야 할 때 매우 유용하다."REQUEST_URI"페이지에 액세스하는 데 필요한 URI입니다.예를 들어, "/index.html"입니다.PHP_AUTH_USER PHP가 Apache 모듈 방식으로 실행되고 HTTP 인증 기능을 사용하고 있을 때 이 변수는 사용자가 입력한 사용자 이름입니다.PHP_AUTH_PW PHP가 Apache 모듈 방식으로 실행되고 HTTP 인증 기능을 사용하고 있을 때 이 변수는 사용자가 입력한 암호입니다."AUTH_TYPE"은 PHP가 아파치 모듈 방식으로 실행되고 HTTP 인증 기능을 사용하고 있을 때 이 변수가 인증 유형입니다.

좋은 웹페이지 즐겨찾기