2016-07-30 59 views
0

我很惊讶我没有在Google上找到这个答案的答案。 所以基本上我有一个PHP代码必须作为一个字符串存储在一个变量。不幸的是PHP承认在开场和结束标记而不是作为一个字符串,但一个PHP代码...我想作为一个字符串:)字符串中的PHP代码

 $settings_string = 
        ' 
        <?php 
         //Locker ID 
         $userToSearch = '.$_POST["usertosearch"].'; 

         //User Folder 
         $userFolder = '.$folder.'; 

         //User Link 
         $userLink = '.$_POST["userlink"].'; 

         // Username and pass 
         $affiliateuser = '.$_POST["affiliateuser"].'; 
         $affiliatepassword = '.$_POST["affiliatepassword"].'; 
        ?> 
        '; 
+0

你为什么要这样做?请分享你的目的,可能你会比这个选择更好。 – C2486

+0

我想在文本文件上'写'它。 –

+0

'不幸的PHP识别开始和结束标签',不,它不是。您在字符串中使用相同的引用类型进行封装,以便结束封装。 – chris85

回答

-2

你找eval

<?php 
    $settings_string =' 
        //Locker ID 
        $userToSearch = '.$_POST["usertosearch"].'; 

        //User Folder 
        $userFolder = '.$folder.'; 

        //User Link 
        $userLink = '.$_POST["userlink"].'; 

        // Username and pass 
        $affiliateuser = '.$_POST["affiliateuser"].'; 
        $affiliatepassword = '.$_POST["affiliatepassword"].'; 
       '; 
eval($settings_string); 
+0

没有工作:( –

+0

不要在用户提供的数据上使用'eval'。 'eval()语言结构是非常危险的,因为它允许执行任意PHP代码,因此不鼓励使用它。如果您仔细验证了除了使用此构造外别无选择,请特别注意不要传递任何用户在未事先对其进行适当验证的情况下向其提供数据。' – chris85

-1

你可以使用这样。 如果你告诉你的目的。所以我可以给你比这更好。

$settings_string =' 
    <?php 
    //Locker ID 
    $userToSearch = \'.$_POST["usertosearch"].\'; 

    //User Folder 
    $userFolder = \'.$folder.\'; 

    //User Link 
    $userLink = \'.$_POST["userlink"].\'; 

    // Username and pass 
    $affiliateuser = \'.$_POST["affiliateuser"].\'; 
    $affiliatepassword = \'.$_POST["affiliatepassword"].\'; 
    ?> 
'; 

现在你有如果你想在$_POST的价值在那里注射,你仍然需要在输出中正确引用它像这样

$file = fopen('file_name.php', 'w'); 

fwrite($file, $settings_string); 
+0

我认为这对你来说是完美的使用这个 –

0

使用。

$settings_string = 
       ' 
       <?php 
        //Locker ID 
        $userToSearch = "'.$_POST["usertosearch"].'"; //add them quotes!!!! 

        //User Folder 
        $userFolder = "'.$folder.'"; 

        //User Link 
        $userLink = "'.$_POST["userlink"].'"; 

        // Username and pass 
        $affiliateuser = "'.$_POST["affiliateuser"].'"; 
        $affiliatepassword = "'.$_POST["affiliatepassword"].'"; 
       ?> 
       '; 

我假设$_POST["usertosearch"] = 'user'目前在你的输出会是这样。

 $userToSearch = user; 

如果不是你想

 $userToSearch = "user"; 

上面你会看到加双引号,正确引用字符串输出文件。该文件仍然必须有有效的语法。

作为一个说明,如果任何后期值包含"你会有问题,除非你为他们做addslashes()

例如

$userLink = "'.$_POST["userlink"].'"; 

认为这是$_POST["userlink"] = '<a href="#">link</a>' OR

$userLink = "<a href="#">link</a>"; 

见问题这一点。当你想要这个

$userLink = "<a href=\"#\">link</a>";