如何在新的php文件中编写php代码

如何在新的php文件中编写php代码,php,Php,我需要创建一个新的inc/.sky.php文件,并在其中写入以下内容: $np = $_POST["np"]; // `sky` for example $a = "inc/" . $np . ".php"; $new = fopen($a, "w") or die("Unable to open file!"); $str="$np='" . $np . "';"; fwrite($new, $str); fclose($new); 但我得到的是: $np = 'sky'; 有什么想法吗?

我需要创建一个新的
inc/.sky.php
文件,并在其中写入以下内容:

$np = $_POST["np"]; // `sky` for example
$a = "inc/" . $np . ".php";
$new = fopen($a, "w") or die("Unable to open file!");
$str="$np='" . $np . "';";
fwrite($new, $str);
fclose($new);
但我得到的是:

$np = 'sky';

有什么想法吗?

这应该适合你:

sky='sky';
问题是您正在使用
定义字符串
$str
。因此,打印了
$np
内容,而不是字符串
'$np'

使用单个逗号 这将把$np变量插入到您的sting中

$np = $_POST["np"]; // `sky` for example
$a = "inc/" . $np . ".php";
$new = fopen($a, "w") or die("Unable to open file!");
$str='$np = \'' . $np . "';";
fwrite($new, $str);
fclose($new);
这将插入np作为文本

$str="$np='" . $np . "';"; 

可能是因为您没有在字符串中写入空格?所以您不会得到任何空格?!
$str=“$np=”“$np.”;“;
我希望您看到这里的安全漏洞,而这不是真正的生产代码(提示:如果我通过post将
./index.php
作为
np
传递,会发生什么情况?)阅读上的单引号字符串和双引号字符串之间的差异。@BenjaminGruenbaim:如果php文件处理容易受到空字节注入的攻击,情况可能会更糟:
。/.htaccess\0
甚至
。/../../../../etc/apache2/httpd.conf\0
(不确定是否确实如此)您应该真正解决代码中的安全问题。使用
$np=str\u replace(“/”,“”,$\u POST[“np”]);
作为第一行将使代码更加安全。
$str='$np=\'' . $np . '\';';