如何在新的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 . '\';';