phpscriptname
『壹』 $_SERVER['php_SELF'] $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
可以理解成問文件地址,
$_SERVER['PHP_SELF'] 會不會返回真,如果返回真那麼就是
$_SERVER['PHP_SELF'] //腳本文件的絕對路徑
如果返回假那麼就返回
$_SERVER['SCRIPT_NAME'];
『貳』 PHP預定義變數$_SERVER中的PHP_SELF和SCRIPT_FILENAME有什麼詳細區別
SCRIPT_FILENAME指向當前執行腳本的絕對路徑;PHP_SELF當前正在執行腳本的文件名,兩者經常混淆,舉一個例子你就明白了,假如D盤web文件夾為根目錄,web下的htdocs文件夾有文件a.php,語句如下:
<?php
include(common/b.php);
?>,
htdocs文件下common目錄b.php,語句如下:
<?php
echo $_SERVER['PHP_SELF'];
echo "<br />";
echo $_SERVER['SCRIPT_FILENAME'];
?>
運行a.php得出結果:
/htdocs/in.php
D:/web/htdocs/in.php
可以看出PHP_SELF只輸出以根目錄為開始網站文件路徑,但是SCRIPT_FILENAME輸出的是所在硬碟的文件絕對路徑,可以認為一個是輸出網路文件路徑,一個是文件所在路徑.
SCRIPT_NAME指的是當前腳本文件名,比如b.php有echo $_SERVER['SCRIPT_NAME'];那麼輸出是/htdocs/common/b.php,明白了,會直接把當前語句所在腳本文件路徑輸出。
『叄』 php 中表單中的 action="<php echo $SCRIPT_NAME; > 這個$SCRIPT_NAME是什麼搞不懂,哪位大俠指教
這個就是個變數,看你文件這樣的寫法,是採用原始的php寫法,你可以看看上面有沒有定義這個變數或者,和這個文件相關文件中有沒有定義這個變數
你有dreamweaver么?全局搜索一下
那有一種可能,一般變數是小寫的,這個變數是大寫,那麼很可能前面的那個$符號是多餘的,是寫錯了的。如果這樣的話,那這個就是個常量,你也可以搜索一下這個SCRIPT_NAME這個常量
『肆』 php中使用script
//javascript的邏輯運算符and用&&表示
if((year1%4)==0and(year1%100)!=0)
改成
if((year1%4)==0&&(year1%100)!=0)
另外閏年的規律是:四年一閏,百年不閏,四百年再閏,所以加上
if((year1%4)==0&&(year1%100)!=0&&(year1%400)==0)
『伍』 php通過url獲取欄目id參數
<?php
$s1 = 'localhost:82/special/4/index.php';
$s2 = 'localhost:82/special/4/';
//方法一:使用正則表達式
$pa = '%localhost:82/.*?/(\d)/%si';
preg_match_all($pa,$s2,$r,PREG_SET_ORDER);
echo '獲取的ID: '. $r[0][1];
//方法2:使用函數
$r = explode('/',$s1);
echo '獲取的ID: '. $r[2];
?>
『陸』 php里怎麼替換指定的一段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中的key=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 是一個包含諸如頭部(headers)、路徑(paths)和腳本位置(script locations)的數組。數組的實體由 web 伺服器創建。不能保證所有的伺服器都能產生所有的信息;伺服器可能忽略了一些信息,或者產生了一些未在下面列出的新的信息。這意味著,大量的這些變數在 CGI 1.1 specification 中說明,所以您應該仔細研究它。
這是一個「superglobal」,或者可以描述為自動全局變數。這只不過意味這它在所有的腳本中都有效。在函數或方法中您不需要使用 global $_SERVER; 訪問它,就如同使用 $HTTP_SERVER_VARS 一樣。
$HTTP_SERVER_VARS 包含著同樣的信息,但是不是一個自動全局變數。(注意: $HTTP_SERVER_VARS 和 $_SERVER 是不同的變數,PHP 處理它們的方式不同。)
如果設置了 register_globals 指令,這些變數也在所有腳本中可用;也就是,分離了 $_SERVER 和 $HTTP_SERVER_VARS 數組。相關信息,請參閱安全的相關章節 使用 Register Globals。這些單獨的全局變數不是自動全局變數。
您或許會發現下面列出的某些 $_SERVER 元素並不可用。注意,如果以命令行方式運行 PHP,下面列出的元素幾乎沒有有效的(或是沒有任何實際意義的)。
「PHP_SELF」
當前正在執行腳本的文件名,與 document root相關。舉例來說,在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_REFERER」
鏈接到當前頁面的前一頁面的 URL 地址。不是所有的用戶代理(瀏覽器)都會設置這個變數,而且有的還可以手工修改 HTTP_REFERER。因此,這個變數不總是正確真實的。
「HTTP_USER_AGENT」
當前請求的 User_Agent: 頭部的內容。該字元串表明了訪問該頁面的用戶代理的信息。一個典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。您也可以使用 get_browser() 得到這個信息。
「REMOTE_ADDR」
正在瀏覽當前頁面用戶的 IP 地址。
'REMOTE_HOST'
正在瀏覽當前頁面用戶的主機名。反向域名解析基於該用戶的 REMOTE_ADDR。
注: 必須配置 Web 伺服器來建立此變數。例如 Apache 需要在 httpd.conf 中有 HostnameLookups 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 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是認證的類型。
『柒』 php script 把參數傳到另一個php
通過請求或鏈接到另一個php,附帶上參數傳遞過去;
比如簡單的一個方法:
var str = myArray.join(); //用逗號分隔把數組轉換成字元串
window.location.href = '另一個php地址』+ '?str='+str; //get方式傳遞參數
然後在另一個php中用超全局變數$_GET['str']接收傳遞過來的參數
$myArray = explode(',', $_GET['str']); //把參數字元串拆分處理轉化回數組 就行了
『捌』 PHP中的<script>部分的值怎麼傳遞出來呢
基本問題都沒搞清楚。
PHP是伺服器端,JS是客戶端。
當你向伺服器請求一個頁面的時候,PHP就會接手處理頁面邏輯,然後把結果發回來,也就是伺服器應答了你的要求。當伺服器傳送完數據的時候,你和伺服器之間的連接就中斷了。
這個時候你的瀏覽器接到了伺服器傳送來的數據,然後才開始解析運行其中的JS代碼。
到這里不知道你明白了沒有?即PHP必然執行在JS之前。所以PHP可以很簡單的同頁面把值傳遞給JS,但是JS就不可能同頁面把值傳遞給PHP。
但是你可以使用ajax,ajax實際上是JS對伺服器又發起了新的請求,所以嚴格來說不能算同頁面了。
------------------------------------------
不是。
首先HTML和javascript對於伺服器端來說,都只是一段文本而已,不會進行任何邏輯處理,你能看到的所有網頁,不是伺服器展示給你看,而是伺服器把這段文本發給你,然後你的瀏覽器處理之後展示給你看的。
而PHP程序則是一段邏輯處理,一般來說這個邏輯處理的結果是生成一段文本,然後伺服器把這個動態生成的文本和原來的HTML,javascript文本一起發送給你的瀏覽器。
舉例而言,我們來看看這段例文裡面 value="<?=$DH>" 代表什麼含義。
首先你必須了解<?php echo "hello world" ?>的含義。
PHP處理這一段邏輯的結果是動態生成一段文本並輸出(echo)。
那麼,假設$DH="hello world"
(源代碼) value="<?=$DH>" ==> value="<?php echo 「hello world」 ?>" ==> value="hello world"(PHP處理結束,伺服器開始發送文本數據)。
換句話說,對PHP來說,結果是HTML還是javascript它是不關心的,它只是輸出一個文本而已。
所以你也可以用下面這種寫法從PHP給javascript傳值:
<script>
var sample=<?=$sample?>
</script>
回到你最開始的問題,關鍵在於$DH的值,如果你看懂了我上面說的這些內容,那麼你就會明白這個值不可能來自HTML或者是javascript,必然是在更早之前在PHP中定義過。