2016-07-30 35 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>";