2012-02-11 8 views
0

PHPファイル内の変数を更新してディスクに保存するにはどうすればよいですか?小さなCMSを作成しようとしていますが、データベースがありません。設定変数を更新できるようにしたいのですが、設定ページを作成しました。更新するには変数を更新したいのですがPHPファイル内にあります。 以下は変数を更新しますが、もちろんそれをPHPファイルに保存しないので、どうすればいいですか?PHP PHPファイルの変数を更新する方法

<?php 
$USER = "user"; 
if (isset($_POST["s"])) { $USER = $_POST['USER']; } 
?> 
<html><body> 
Current User: <?php echo $USER; ?> 
<form method="post" action="<?php echo $_SERVER["SCRIPT_NAME"]; ?>"> 
New User<input type="text" name="USER" value="<?php echo $USER; ?>"/> 
<input type="submit" class="button" name="s" value="Update" /> 
</form> 
</body></html> 

わかりませんか? 私はこのような何か使用を考えていた:あなただけの設定に別のファイルを持つことができ、より良いアプローチとして

+0

イム混乱し、あなたがより良い自分自身を説明する必要があります – JimmyBanks

答えて

1

...

$newcms = file_get_contents(index.php) 
str_replace(old_value, new_value, $newcms) 
file_puts_contents(index.php, $newcms) 

をしかし、それは適切なソリューションのように見えるしていません。また、そのファイルをPHPファイルに含めます。その後、PHPファイル自体を変更するのではなく、必要に応じて値を変更して保存することができます。

<?php 

    $configPath = 'path/to/config.file'; 
    $config = array(
    'user' => 'user', 
); 

    if(file_exists($configPath)) { 
    $configData = file_get_contents($configPath); 
    $config = array_merge($defaults, unserialize($configData)); 
    } 

    if(isset($_POST['s']) { 
     // PLEASE SANTIZE USER INPUT 
     $config['user'] = $_POST['USER']; 

     // save it to disk 
     // Youll want to add some error detection messagin if you cant save 
     file_put_contents($configPath, serialize($config)); 
    } 
?> 

<html><body> 
Current User: <?php echo $config['user'; ?> 
<form method="post" action="<?php echo $_SERVER["SCRIPT_NAME"]; ?>"> 
New User<input type="text" name="USER" value="<?php echo $config['user']; ?>"/> 
<input type="submit" class="button" name="s" value="Update" /> 
</form> 
</body></html> 

このアプローチは非常に人間が読めるイマイチPHPのネイティブシリアル化形式を使用しています:あなたはこのような何かがあるかもしれませんので、

+0

はい、それは解決策になりますが、それは1つのファイルのコンセプトを取り除くことになります。私は本当に1つのファイルですべてのことをしたいのです... – oiZo

2

最も簡単な方法は、ディスクにシリアル化し、それらをロードすることです。手動で構成を更新したり、より簡単に検査できるようにしたい場合は、JSON、YAML、XMLなどの異なる形式を使用することができます。 JSONはおそらく、serialize/unserializeの代わりにjson_encode/を使用することで、ほぼ同じ速さで簡単に作業できます。 XMLはより遅く、より煩雑になります。 YAMLも使いやすいですが、sfYamlのような外部ライブラリが必要です。

さらに、私はスクリプトの一番上でこれをやっていません。おそらくidはおそらくそれのクラスか一連の関数を最低で作っています。

0

たとえば、あなたがYOURFILE.phpを持って、そしてあなたがその変数を変更したい場合は、その中にあなたが$targetvariable='hi jenny';

を持って、その後、これを使用:

<?php 
$fl='YOURFILE.php'; 
     /*read operation ->*/ $tmp = fopen($fl, "r"); $content=fread($tmp,filesize($fl)); fclose($tmp); 

// here goes your update 
$content = preg_replace('/\$targetvariable=\"(.*?)\";/', '$targetvariable="hi Greg";', $content); 
     /*write operation ->*/ $tmp =fopen($fl, "w"); fwrite($tmp, $content); fclose($tmp); 
?> 
関連する問題