这段PHP代码到底是做什么的?
好的,我的朋友给了我这个代码,用于请求头并将它们与头应该是什么进行比较。它工作得很好,但我不知道为什么。代码如下:这段PHP代码到底是做什么的?,php,foreach,strpos,Php,Foreach,Strpos,好的,我的朋友给了我这个代码,用于请求头并将它们与头应该是什么进行比较。它工作得很好,但我不知道为什么。代码如下: $headers = apache_request_headers(); $customheader = "Header: 7ddb6ffab28bb675215a7d6e31cfc759"; foreach ($headers as $header => $value) { // 1 $custom .= "$header: $v
$headers = apache_request_headers();
$customheader = "Header: 7ddb6ffab28bb675215a7d6e31cfc759";
foreach ($headers as $header => $value) { // 1
$custom .= "$header: $value"; // 2
}
$mystring = $custom; // 3
$findme = $customheader; // 4
$pos = strpos($mystring, $findme);
if ($pos !== false) {
// Do something
} else{ exit(); } //If it doesn't match, exit.
我就以下问题发表了一些评论:
这里到底发生了什么?是否将$headers设置为$header和$value
再说一次,我不知道这里发生了什么
为什么要将变量设置为其他变量?这是变量被使用的唯一区域,所以有理由将其设置为其他值吗
与第三个问题相同
如果这是一个糟糕的问题,我很抱歉,但它一直困扰着我,我真的想知道它为什么有效。嗯,我明白它为什么会起作用,我想我只是想知道得更具体一些。感谢您提供的任何见解
它迭代$headers,将每个元素的键分配给$header,将值分配给$value。因此,在块内部,我们在单独的变量中获取头的名称及其值。
在这一步中,我们使用点运算符将所有标题连接在一个字符串中。从本质上讲,我们将头从数组转换为字符串。
除非这些变量在其他地方使用,否则没有理由重新分配。
免责声明:我是红宝石人,如果我错了,请纠正我
$headers = apache_request_headers();
它迭代$headers,将每个元素的键分配给$header,将值分配给$value。因此,在块内部,我们在单独的变量中获取头的名称及其值。
在这一步中,我们使用点运算符将所有标题连接在一个字符串中。从本质上讲,我们将头从数组转换为字符串。
除非这些变量在其他地方使用,否则没有理由重新分配。
免责声明:我是红宝石人,如果我错了,请纠正我
$headers = apache_request_headers();
获取标头数组
$customheader = "Header: 7ddb6ffab28bb675215a7d6e31cfc759";
定义了要搜索的customheader
foreach ($headers as $header => $value) { // 1
$custom .= "$header: $value"; // 2
}
循环并创建一个$custom变量来保存扩展的$key=>$value头
在展开的字符串中查找$customheader
if ($pos !== false) {
// Do something
} else{ exit(); } //If it doesn't match, exit.
确实不需要重新分配变量。本质上,它是将标题数组转换成一个大字符串,然后搜索其中的$customheader文本是否存在
获取标头数组
$customheader = "Header: 7ddb6ffab28bb675215a7d6e31cfc759";
定义了要搜索的customheader
foreach ($headers as $header => $value) { // 1
$custom .= "$header: $value"; // 2
}
循环并创建一个$custom变量来保存扩展的$key=>$value头
在展开的字符串中查找$customheader
if ($pos !== false) {
// Do something
} else{ exit(); } //If it doesn't match, exit.
确实不需要重新分配变量。本质上,它是将标题数组转换成一个大字符串,然后搜索$customheader文本是否存在。返回当前请求中所有HTTP标题的关联数组,如果失败则返回false。因此,最好检查返回值,如下所示:
$headers = apache_request_headers();
if(! $headers) {
die("Error fetching headers");
}
1:您正在对得到的关联数组进行迭代。
2:在数组中形成一串粘合的键值对,键值之间用冒号分隔。
3和4只是将一个变量分配给另一个变量。您可以直接使用:$pos=strpos$custom,$customheader;代替步骤3和4。如果strpos在$custom中找不到您的$customheader,则返回false,否则返回找到的位置
总的来说,此代码段检查apache_请求_头返回的头中是否存在自定义头。返回当前请求中所有HTTP头的关联数组,如果失败,则返回false。因此,最好检查返回值,如下所示:
$headers = apache_request_headers();
if(! $headers) {
die("Error fetching headers");
}
1:您正在对得到的关联数组进行迭代。
2:在数组中形成一串粘合的键值对,键值之间用冒号分隔。
3和4只是将一个变量分配给另一个变量。您可以直接使用:$pos=strpos$custom,$customheader;代替步骤3和4。如果strpos在$custom中找不到您的$customheader,则返回false,否则返回找到的位置
总的来说,这段代码检查apache_请求_头返回的头中是否存在自定义头。谢谢,这段代码解释得最好。现在我明白了:谢谢,这个解释得最好。现在我明白了: