亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

淺談 PHP 變量可用字符

添加時(shí)間:2014-12-1 20:28:34  添加: 思海網(wǎng)絡(luò) 
先來說說php變量的命名規(guī)則:
(1) PHP的變量名區(qū)分大小寫;
(2) 變量名必須以美元符號(hào)$開始;
(3) 變量名開頭可以以下劃線開始;
(4) 變量名不能以數(shù)字字符開頭.
 
其實(shí)所有編程都類似的命名規(guī)范就是:
1. 變量第一個(gè)字符最好是 字母或_,不能以數(shù)字開頭
2. 第二個(gè)字符開始允許 數(shù)字,字母,_
 
以下示例:
 
<?php
if ($_POST) {
    $chr = chr($_POST['chr']);
    eval('$'.$chr."=1;");
    echo 'ok';
    exit;
}
?>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
    < src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js"></>
</head>
<body>
    <>
    for(var i = 0x00; i <= 0xFF; i++) { // 0x00 - 0xFF  255個(gè)字符
        $.ajaxSettings.async = false; // 同步模式, 為了按順序返回?cái)?shù)據(jù)
        $.post( "?", {chr: i}, (function (data) { // post i 給 php 解析
            data === 'ok' && console.log( "\\x"+(i).toString(16) ); // 如果只返回 ok 說明能正常執(zhí)行,否則會(huì)拋出異常
        });
    }
    </>
</body>
</html>
代碼還算比較簡單,PHP 部分只負(fù)責(zé)解析每一個(gè)字符當(dāng)作變量名的執(zhí)行結(jié)果是否會(huì)拋出溢出。
比如 字符 a 那么會(huì)解析  eval('$a=1;');  這樣的結(jié)果肯定沒問題,所以不會(huì)拋出異常,返回結(jié)果就是 ok 字符。
如果 字符 - 那么會(huì)解析  eval('$-=1;');  這明顯是不對(duì)的,所以會(huì)拋出  PHP Parse error: syntax error, unexpected '-', expecting T_VARIABLE or '$'  和 ok 字符。
而下面的 ajax 部分者正是利用返回結(jié)果是否為 'ok' 而判斷是否是有效的變量名。
看看執(zhí)行后的結(jié)果是什么吧:
 
"\x41, \x42, \x43, \x44, \x45, \x46, \x47, \x48, \x49, \x4a, \x4b, \x4c, \x4d, \x4e, \x4f, \x50, \x51, \x52, \x53, \x54, \x55, \x56, \x57, \x58, \x59, \x5a, \x5f, \x61, \x62, \x63, \x64, \x65, \x66, \x67, \x68, \x69, \x6a, \x6b, \x6c, \x6d, \x6e, \x6f, \x70, \x71, \x72, \x73, \x74, \x75, \x76, \x77, \x78, \x79, \x7a, \x7f, \x80, \x81, \x82, \x83, \x84, \x85, \x86, \x87, \x88, \x89, \x8a, \x8b, \x8c, \x8d, \x8e, \x8f, \x90, \x91, \x92, \x93, \x94, \x95, \x96, \x97, \x98, \x99, \x9a, \x9b, \x9c, \x9d, \x9e, \x9f, \xa0, \xa1, \xa2, \xa3, \xa4, \xa5, \xa6, \xa7, \xa8, \xa9, \xaa, \xab, \xac, \xad, \xae, \xaf, \xb0, \xb1, \xb2, \xb3, \xb4, \xb5, \xb6, \xb7, \xb8, \xb9, \xba, \xbb, \xbc, \xbd, \xbe, \xbf, \xc0, \xc1, \xc2, \xc3, \xc4, \xc5, \xc6, \xc7, \xc8, \xc9, \xca, \xcb, \xcc, \xcd, \xce, \xcf, \xd0, \xd1, \xd2, \xd3, \xd4, \xd5, \xd6, \xd7, \xd8, \xd9, \xda, \xdb, \xdc, \xdd, \xde, \xdf, \xe0, \xe1, \xe2, \xe3, \xe4, \xe5, \xe6, \xe7, \xe8, \xe9, \xea, \xeb, \xec, \xed, \xee, \xef, \xf0, \xf1, \xf2, \xf3, \xf4, \xf5, \xf6, \xf7, \xf8, \xf9, \xfa, \xfb, \xfc, \xfd, \xfe, \xff"
整理后發(fā)現(xiàn)是這樣的16進(jìn)制數(shù)據(jù),當(dāng)然看不懂沒關(guān)系,看下轉(zhuǎn)義后的結(jié)果:
 
"A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, _, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, , ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,  , ¡, ¢, £, ¤, ¥, |, §, ¨, ©, a, «, ¬, -, ®, ˉ, °, ±, 2, 3, ′, μ, ¶, ·, ¸, 1, o, », ¼, ½, ¾, ¿, à, á, Â, Ã, Ä, Å, Æ, Ç, è, é, ê, Ë, ì, í, Î, Ï, D, Ñ, ò, ó, Ô, Õ, Ö, ×, Ø, ù, ú, Û, ü, Y, T, ß, à, á, a, ã, ä, å, æ, ç, è, é, ê, ë, ì, í, î, ï, e, ñ, ò, ó, ô, õ, ö, ÷, ø, ù, ú, û, ü, y, t, ÿ"
除了前面的 A-Z_a-z 是我們熟悉的,后面的那些亂七八糟的東西竟然也能當(dāng)作正常的變量名,簡直不可思議。
其實(shí)只是PHP拓展了變量名的字符范圍,在 A-Z_a-z 之上,將變量可用字符范圍拓展到了 \x7f-\xff。
所以,第一個(gè)字符范圍應(yīng)該是 [a-zA-Z_\x7f-\xff]
那么第二個(gè)字符是否也是這樣能,我們繼續(xù)測(cè)試下。
將上面 php 代碼里的  eval('$'.$chr."=1;");  改成  eval('$a'.$chr."=1;");  保存測(cè)試、
 
"\x9, \xa, \xd, \x20, \x30, \x31, \x32, \x33, \x34, \x35, \x36, \x37, \x38, \x39, \x41, \x42, \x43, \x44, \x45, \x46, \x47, \x48, \x49, \x4a, \x4b, \x4c, \x4d, \x4e, \x4f, \x50, \x51, \x52, \x53, \x54, \x55, \x56, \x57, \x58, \x59, \x5a, \x5f, \x61, \x62, \x63, \x64, \x65, \x66, \x67, \x68, \x69, \x6a, \x6b, \x6c, \x6d, \x6e, \x6f, \x70, \x71, \x72, \x73, \x74, \x75, \x76, \x77, \x78, \x79, \x7a, \x7f, \x80, \x81, \x82, \x83, \x84, \x85, \x86, \x87, \x88, \x89, \x8a, \x8b, \x8c, \x8d, \x8e, \x8f, \x90, \x91, \x92, \x93, \x94, \x95, \x96, \x97, \x98, \x99, \x9a, \x9b, \x9c, \x9d, \x9e, \x9f, \xa0, \xa1, \xa2, \xa3, \xa4, \xa5, \xa6, \xa7, \xa8, \xa9, \xaa, \xab, \xac, \xad, \xae, \xaf, \xb0, \xb1, \xb2, \xb3, \xb4, \xb5, \xb6, \xb7, \xb8, \xb9, \xba, \xbb, \xbc, \xbd, \xbe, \xbf, \xc0, \xc1, \xc2, \xc3, \xc4, \xc5, \xc6, \xc7, \xc8, \xc9, \xca, \xcb, \xcc, \xcd, \xce, \xcf, \xd0, \xd1, \xd2, \xd3, \xd4, \xd5, \xd6, \xd7, \xd8, \xd9, \xda, \xdb, \xdc, \xdd, \xde, \xdf, \xe0, \xe1, \xe2, \xe3, \xe4, \xe5, \xe6, \xe7, \xe8, \xe9, \xea, \xeb, \xec, \xed, \xee, \xef, \xf0, \xf1, \xf2, \xf3, \xf4, \xf5, \xf6, \xf7, \xf8, \xf9, \xfa, \xfb, \xfc, \xfd, \xfe, \xff"
發(fā)現(xiàn)結(jié)果多了好多字符,其實(shí)有一部分我們是要去掉的,比如 \x20 其實(shí)就是 空格,相當(dāng)于  eval('$a =1;');  而已,當(dāng)然是能正常執(zhí)行的。
除了空格,還有 \t\r\n 都去掉因?yàn)檫@些也是PHP語法說允許的 \t=\x9,\n=\xa,\r=\xd,所以我們要去掉結(jié)果中的前4個(gè)數(shù)據(jù)\x9, \xa, \xd, \x20,
最終得到的結(jié)果其實(shí)只是多了  \x30, \x31, \x32, \x33, \x34, \x35, \x36, \x37, \x38, \x39  熟悉 ascii 的人也許一眼就看出來了,這就是數(shù)字 0-9
所以第一個(gè)字符范圍應(yīng)該是 [\w\x7f-\xff] 對(duì)正則不熟的也許會(huì)覺得怎么不是 [0-9a-zA-Z_\x7f-\xff],其實(shí) \w 就是 0-9a-zA-Z_
 

也許有人會(huì)說  $$a; ${$a};  這樣的變量呢?我覺得這個(gè)已脫離了變量命名的范圍了。

關(guān)鍵字:PHP、變量

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開網(wǎng)站