2012-03-29 34 views
0

私は動的にRPGキャラクタシートを保持するウェブサイトを作ろうとしています。新しいファイルを作成し、PHPでこれらの作成されたファイルのリストを更新する

<form action = "charCreate.php" method = "post"> 
    <h1>Character Sheet Name:</h1> 
    <input type = "text" name = "fileName"> 
    <input type = "submit" value="Submit"> 
</form> 

私はfopenの方法を認識していますが、私は(これはindex.phpページの一部である)このように、シートのタイトルを持つフォームを提出することによって、新たなキャラクターシートを作成できるようにしたいと思います私はこのシナリオでそれを使う方法を正確には分かりません。このフォームで新しいWebページを作成し、上記のフォームを使用して作成されたファイルのリストをindex.phpに表示したいと考えています。

作成されたWebページのリストを動的に更新し、ファイル名のフォームの値を使用してこれらのWebページを作成する最良の方法は何でしょうか。

これらの新しく作成されたページを変更する方法も知りたいが、まずこれを理解する必要がある。

ありがとうございました。

答えて

0

は、次の操作を行います

<?php 
    // w will create a file if not exists 
    if($loHandle = @fopen('folder_to_add_files/'.$_POST['fileName'], 'w')) 
    { 
     echo 'Whoops something went wrong..'; 
    } 
    else 
    { 
     // you can write some default text into the file 
     if([email protected]($loHandle, 'Hello World')) 
     { 
      echo 'Could not right to file'; 
     } 

     @fclose($loHandle); 
    } 
?> 

はあなたのファイル名にスペースや他の変な文字に気をつけろ。あなたは次の操作を行うことができますのindex.php内のファイルを表示するには

// Replace spaces with underscores 
$lstrFilename = str_replace(' ', '_', $_POST['fileName']); 

:あなたはそうのようなstr_replaceでスペースを置き換えることができ

<?php 
    if ($loHandle = @opendir('folder_to_add_files')) 
    { 
     echo 'Directory handle: '.$handle.'<br />'; 
     echo 'Entries:<br />'; 

     // This is the correct way to loop over the directory. 
     while (false !== ($lstrFile = @readdir($loHandle))) 
     { 
      echo $lstrFile.'<br />'; 
     } 

     @closedir($loHandle); 
    } 
?> 
0

ここで最初の、そして最も重要な点は、あなたということですファイル内のデータを管理しようとするスケーラビリティ/データ破損の問題に遭遇します。これがデータベースの目的です。

データを格納するためにフラットファイルを使用するだけで、大規模で高速なシステムを構築することは可能ですが、複雑なファイルロックキューを実装するには複雑なコードが多く必要になります。しかし、単純にデータベースを使用する代わりに、その努力をする価値はほとんどありません。

ユーザーがファイル名を指定できるようにすると、マシン上のWebサーバーのuidで書き込み可能なファイルをすべてゴミ箱に入れることができます。また、独自のPHPコードを展開することもできます。いい考えではない。

クイックで汚れた解決策(これは、将来、ある時点で、恐ろしい痛みを伴う方法で失敗する...)。

function write_data($key, &$data) 
{ 
    $path=gen_path($key); 
    if (!is_dir(dirname($path)) { 
     mkdir(dirname($path), 0777, true); 
    } 
    return file_put_contents($path, serialize($data)); 
} 

function get_data($key) 
{ 
    $path=gen_path($key); 
    return unserialize(file_get_contents($path)); 
} 

function gen_path($key) 
{ 
    $key=md5($key); 
    return '/var/data/' . substr($key,0,2) . '/' . substr($key,2) . '.dat'; 

} 
関連する問題