亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

到底是怎么回事?我從來沒有見過這樣的 PHP 語法:

到底是怎么回事?我從來沒有見過這樣的 PHP 語法:

PHP
暮色呼如 2024-01-19 15:26:46
我發現這段 php 代碼中有一些奇怪的語法:我特別好奇,這是一個什么樣的語法?${"\x47\x4c\x4fB\x41\x4c\x53"}['v9800']
查看完整描述

1 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

首先,為了解決代碼語法本身的問題,PHP 允許您動態創建變量名稱。


假設你有一個變量:


$test = 123;

您可以動態創建對此變量的引用,如下所示:


echo ${'test'};  // Prints '123'

你為什么想做這個?上面的例子毫無意義,但是假設您需要在運行時動態運行一些變量名稱:


$var1 = 'A';

$var2 = 'B';

$var3 = 'C';


for ($i = 1; $i <= 3; $i++) {

    echo ${'var' . $i};

}


// Prints 'ABC'

既然我們知道了語法的含義,那么它到底\x47\x4c\x4fB\x41\x4c\x53意味著什么呢?


用于\x轉義十六進制字符序列。簡單來說,您顯示的字符串是一堆字符,有人將其表示為十六進制,而不是您習慣看到的人類可讀的 ASCII 字符。


如果我們去掉\x逃逸部分,我們就剩下:


474c4fB414c53

據我所知,B這里并不是十六進制的。這給我們留下了:


474c4f 414c53

翻譯過來就是:


GLO ALS

如果我們替換B我們得到:


GLOBALS

如果我們將其添加回動態變量引用并再次查看代碼,我們會得到:


$GLOBALS['v9800']

這很有趣,因為$GLOBALS是 PHP 中可用的特殊數組,它可以訪問全局范圍內的所有變量。所以本質上,您的代碼正在嘗試訪問一個名為 的全局變量$v9800。


您必須決定這對您的應用程序意味著什么,但此代碼可能是可疑的。可能有人故意使用這種神秘的方法來偽裝他們的代碼,以嘗試訪問全局變量。


查看完整回答
反對 回復 2024-01-19
  • 1 回答
  • 0 關注
  • 134 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號