插入'&'/和字符串中的文本符号


PHP Insert '&' / and text symbol in a string

我试图在我的PHP代码中插入&符号,但它被转换为ASCII &

下面是我的代码:
$symbolAnd= '&';
echo $symbolAnd;
foreach ($clientLists as $clientList =>$clientValue){
    //Get values
    echo  $clientList .' - '.$clientValue['client-pass'] . '<br/>';
    include('index.php?client='.$clientList.$symbolAnd.'pass='.$clientValue['client-pass']);
}//foreach ($clientLists as $clientList){

我得到这个错误在我的error_log;

PHP Warning: include() [<a href='function.include'>function.include</a>]: Failed opening 'index.php?client=john-jones&amp;pass=123456' for inclusion

代码是正确的。它显示一个&amp;,因为error.log的输出是在显示错误时应该以HTML形式输出给用户的内容。这里的真正问题是,您试图包含一个文件并传递GET参数,但这是不可能的。当您include(尽管requireinclude_once等所有变体都是如此)一个文件时,您必须将其视为该文件的复制和粘贴到当前PHP文件中。您正在尝试从文件系统中获取名称为index.php?client=WhateverClientListIs&pass=WhateverClientPassIs的文件,该文件不存在!

要解决这个问题,可以这样做:

 $_GET['client'] = $clientList;
 $_GET['pass'] = $clientValue['client-pass'];
 include('index.php');

无论你在文件名中放入什么符号(&&amp;),这种方法都不会像你期望的那样起作用,除非你的文件名真的是

index.php?client=client1&password=1234
index.php?client=client2&password=123123
index.php?client=client3&password=qwerty

我是说真正的文件。include包含文件名的文件。如果你想包含index.php你应该包含include('index.php')