1

以下のコードが機能しないのはなぜですか?

      string Tmp_actionFilepath = @"Temp\myaction.php";


       // change the id and the secret code in the php file
            File.Copy(@"Temp\settings.php", Tmp_actionFilepath, true);
            string ActionFileContent = File.ReadAllText(Tmp_actionFilepath);
            string unique_user_id = textBox5.Text.Trim();
            string secret_code = textBox1.Text.Trim();
            ActionFileContent.Replace("UNIQUE_USER_ID", unique_user_id);
            ActionFileContent.Replace("SECRET_CODE", secret_code);
            File.WriteAllText(Tmp_actionFilepath, ActionFileContent);

これがsetting.phpの内容です

      <?php
      session_start();
      $_SESSION["postedData"] = $_POST;

      /////////////////////////////////////////////////////////
      $_SESSION["uid"] = "UNIQUE_USER_ID";
      $_SESSION["secret"] = "SECRET_CODE";
      /////////////////////////////////////////////////////////

      function findThis($get){
      $d = '';
      for($i = 0; $i < 30; $i++){
      if(file_exists($d.$get)){
        return $d;
      }else{
        $d.="../";
      }
    }
  }


   $rootDir = findThis("root.cmf");

   require_once($rootDir."validate_insert.php");

上記のコードの何が問題になっていますか? C# でコードをコンパイルした後、ファイル myaction.php が作成されていることに気付きましたが、UNIQUE_USER_ID と SECRET_CODE の値は変更されません。これらの値をコピー/貼り付けして、それらが同じであることを確認しました。しかし、コードは常に機能しません

4

2 に答える 2

5

String.Replace文字列は不変であるため、新しい文字列を返します。呼び出している文字列を置き換えません。

以下を置き換える必要があります。

ActionFileContent.Replace("UNIQUE_USER_ID", unique_user_id);
ActionFileContent.Replace("SECRET_CODE", secret_code);

と:

ActionFileContent = ActionFileContent.Replace("UNIQUE_USER_ID", unique_user_id);
ActionFileContent = ActionFileContent.Replace("SECRET_CODE", secret_code);

その上で、変数名を実際に変更して、通常の C# 命名規則に従うようにする必要があります (つまり、actionFileContent代わりに を使用しますActionFileContent)。

于 2013-01-22T11:30:44.747 に答える
2

replace文字列にstringメソッドの結果を設定する必要があります。

string Tmp_actionFilepath = @"Temp\myaction.php";

// change the id and the secret code in the php file
File.Copy(@"Temp\settings.php", Tmp_actionFilepath, true);

string actionFileContent = File.ReadAllText(Tmp_actionFilepath);

string unique_user_id = textBox5.Text.Trim();
string secret_code = textBox1.Text.Trim();

// set the result of the Replace method on the string.
actionFileContent = ActionFileContent.Replace("UNIQUE_USER_ID", unique_user_id)
                                     .Replace("SECRET_CODE", secret_code);

File.WriteAllText(Tmp_actionFilepath, actionFileContent);
于 2013-01-22T11:31:52.780 に答える