0

私が設定したのは、メインページ(require_once()PHP配列を含むPHPファイルに基づいてテーブルを出力する)、管理ページ(前述のPHP配列ファイルにデータを書き込むことになっている)、および配列を含むPHPファイルです。 。管理ページが問題です。fread非常に高速に乱雑になったtxtファイルを使用してさまざまなソリューションを試しました。

私はPHPが苦手です。管理ページからこのアレイを編集するにはどうすればよいですか?

コード:

メインページ

<?php
    require_once("sitesdb.php");
?>
<html>
<body style="text-align:center">
<div style="width:500px;background-color:ddd;padding:10px">
   <table width="100%">
     <tr bgcolor="gray">
       <td>Domain Host</td>
       <td>Prefix</td>
       <td>Suffix</td>
     </tr>
     <? foreach ($sites as $row) : ?>
     <tr bgcolor="white">
       <td><? echo $row[0]; ?></td>
       <td><? echo $row[1]; ?></td>
       <td><? echo $row[2]; ?></td>
     </tr>
     <? endforeach; ?>
   </table>
</div>
</body>
</html>

配列ファイル

<?php
$sites = array(
    array("POPNIC.COM",     "uk",    "pn"),
    array("POPNIC.COM",     "co.uk", "pn"),
    ...
    array("SUBDOMAIN.COM",  "aa6",   "de"),
    array("SUBDOMAIN.COM",  "aa8",   "de"),
);
?>

管理ページ

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="Administration"');
    header('HTTP/1.0 401 Unauthorized');
    echo '404 - Unauthorized!  Sorry about that.';
    exit;
} else {
if ($_SERVER['PHP_AUTH_USER'] = "*****" && $_SERVER['PHP_AUTH_PW'] = "*****"){

if ($_POST['host'] && $_POST['prefix'] && $_POST['suffix']){


    ??????????????


}
?>
<html>
<head>
    <title>Administration</title>
</head>
<body>
    <h1>Administration</h1>
    <h2>Add a Value</h2>
    <form method="post" action="">
        <label for="host">Domain Host: </label><br />
        <input name="host" id="host" type="text" /><br />
        <label for="prefix">Prefix: </label><br />
        <input name="prefix" id="prefix" type="text" /><br />
        <label for="suffix">Suffix: </label><br />
        <input name="suffix" id="suffix" type="text" /><br />
        <input type="submit" value="Add Value" /><br />
    </form>
</body>
<?php
}
}
?> 

アップデート

私はほとんどそれを持っていると思います。これが私の新しいコードです:

if ($_POST['host'] && $_POST['prefix'] && $_POST['suffix']){
    $ins_host = $_POST['host'];
    $ins_prefix = $_POST['prefix'];
    $ins_suffix = $_POST['suffix'];

    include_once("sitesdb.php");
    array_push($sites, array($ins_host, $ins_prefix, $ins_suffix));

    $file = fopen("sitesdb.php", "w");
    $newdata = "<?php " . var_export($sites) . "?>";
    fwrite($file, $newdata);
    fclose($file);
}

データが正しく書き込まれていません。私が何かを変えるたびに、何か他のことがうまくいかない。誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

1

管理ページからデータを収集し、それを配列としてsitesdb.phpに書き込む場合は、var-export関数をチェックアウトします。

管理スクリプトで、フォームがを使用して送信されたかどうかを確認します

if($_SERVER['REQUEST_METHOD'] == 'POST') {
   // your logic to read the posted data and save it to a file
   // goes here
}

私はウェブ上で、簡単で、時代遅れではなく、愚かではないチュートリアルを探しましたが、見つけるのはそれほど簡単ではありませんでした。現在、ほとんどの人がLaravel、Symfony2、Silex、Slimなどのフレームワークを使用しています(セキュリティの問題を回避するためなど)。最終的には、これが役立つことがわかります。

更新:結果を出力する代わりに変数で返すvar_exportの追加パラメーターに注意してください

更新2:私はあなたを苛立たせたくありませんが、このアプローチは本当に安全ではありません。誰かがあなたのフォームに邪悪なphpのものを書いていると想像してみてください。これをsitesdb.phpファイルに書き込み、次にsitesdb.phpを読み取るときに実行します。iniファイルをよく見てください(parse_ini_fileは、PHPでiniファイルを読み取るためのコマンドです)。

于 2013-03-25T22:27:33.147 に答える