2013-03-25 117 views
0

我設置的是一個主頁面(輸出基於具有PHP數組的require_once() PHP文件的表格)和管理頁面(應該將數據寫入上述PHP數組文件)以及包含數組的PHP文件。管理頁面是問題。我已經嘗試了fread和txt文件的不同解決方案,這些文件真的很麻煩。將數據添加到另一個文件中的PHP數組

我不擅長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 
} 
} 
?> 

UPDATE

我想我已經差不多了。這是我的新代碼:

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); 
} 

這不是正確寫入數據。每當我改變一些東西出現錯誤。有人能指引我朝着正確的方向嗎?

+0

實際上你想要做什麼?你想在$ site中推送一些數據然後想要訪問它們嗎?或者你想改變sitesdb.php的內容? – 2013-03-25 21:33:47

+0

我想更改sitesdb.php的內容。它需要將admin.php提交的信息添加到它的數組中。 – ndm13 2013-03-26 01:12:13

+0

我不確定這個問題被認爲「不具有建設性」。我不知道如何將PHP代碼寫入文件,我被告知要查看'var-export',並且在犯了一個愚蠢的錯誤之後,我最終解決了它。橋下的水,因爲它已經有了答案,但仍然。 – ndm13 2017-07-09 20:26:40

回答

1

假設您想要從管理頁面收集數據並將其作爲數組寫入到sitesdb.php,請簽出var-export function

在您的管理腳本,你檢查你的形式使用

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

我找了一個簡單的,沒有過期的,非傻在網絡上的教程提交的,不那麼容易找到。大多數人現在都使用Laravel,Symfony2,Silex或Slim等框架(例如爲了避免安全問題)。最終你會發現this one有幫助。

更新:注意var_export的附加參數,這將在一個變量返回的結果,而不是打印出來

更新2:我不想阻撓你,但這種做法實在是不安全的。想象一下有人在你的表單中寫下邪惡的PHP東西。你將它寫入sitesdb.php文件中,並在下次讀取sitesdb.php時執行它。最好查看一下ini文件(parse_ini_file是在PHP中讀取ini文件的命令)。

+0

謝謝!幫了很多。我仍然有點困惑,我已經更新了我的問題。 – ndm13 2013-03-26 01:56:09

+0

更新了我的答案。 – herrjeh42 2013-03-26 06:34:26

+0

在我使用PHP的這一點上,安全性不是一個大問題。唯一使用管理頁面的是我自己,如果有必要,我可以把它放在與我的項目完全不同的服務器上。整個事情都有密碼保護,所以我沒有看到一個大問題。那,我有備份。我不認爲即使有人做了破解,他們可能會造成太大的損失。 – ndm13 2013-03-26 13:25:40

相關問題