2013-03-25 3 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

실제로 원하는 작업은 무엇입니까? $ 사이트에서 일부 데이터를 누른 다음 나중에 액세스하겠습니까? 또는 sitesdb.php의 내용을 변경 하시겠습니까? –

+0

sitesdb.php의 내용을 변경하고 싶습니다. admin.php가 제출 한 정보를 배열에 추가해야합니다. – ndm13

+0

이 질문에 대해 "건설적이지 않은"것으로 간주되는 것이 확실하지 않습니다. 나는 파일에 PHP 코드를 쓰는 방법을 모르고'var-export'를 체크 아웃하고, 어리석은 실수를 한 후에 결국 그것을 해결했다. 다리 아래 물, 그것은 이미 대답을 가지고 있기 때문에,하지만 여전히. – ndm13

답변

1

admin 페이지에서 데이터를 수집하고이를 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과 같은 Framework를 사용합니다 (예 : 보안 문제 방지). 결국 this one 명이 도움이 될 것입니다.

업데이트 :

업데이트 2를 그것을 밖으로 인쇄하는 대신 변수에 결과를 반환합니다 var_export의 추가 매개 변수 참고 : 나는 당신을 좌절하고 싶지 않아,하지만이 방법은 정말 안전하지 않습니다. 귀하의 양식에 악의적 인 PHP 물건을 작성하는 사람을 상상해보십시오. 당신은 sitesdb.php 파일에 그것을 쓰고 다음에 sitesdb.php를 읽을 때 그것을 실행할 것입니다. ini 파일을 더 잘 살펴보십시오 (parse_ini_file은 PHP에서 ini 파일을 읽는 명령입니다).

+0

감사! 많은 도움이되었습니다. 나는 아직도 약간 혼란 스럽다. 나는 내 질문을 업데이트했다. – ndm13

+0

내 대답이 업데이트되었습니다. – herrjeh42

+0

PHP로 작업하면서이 시점에서 보안은 큰 문제가 아닙니다. 유일하게 관리 페이지를 사용하는 것은 나 자신 일 것이고, 필요하다면 나는 그것을 프로젝트와 완전히 다른 서버에 둘 수있다. 모든 것은 암호로 보호되어 있으므로 커다란 문제는 없습니다.저것과 나는 백업을 가지고있다. 나는 누군가가 해킹했을지라도 너무 많은 피해를 줄 수 있다고 생각하지 않는다. – ndm13