Исключения в коде

vave

Полезный
Регистрация
22 Июн 2007
Сообщения
466
Реакции
16
Здравствуйте дорогие знатоки!
столкнулся с такой проблемой,
у меня сайт расположен в папре /root
а админка в папке /root/admin
и когда я вношу изменения, мне приходится вносить их таким образом
edit.php?file=../main
как сделать что бы в коде уже было "../"

а так же желательно сделать исключения, что бы можно было вносить изменения только в те файлы, которые будут прописаны в коде.

вот сам код
PHP:
		<?php 
  if (!empty($_GET['file']) && strpos(DOCROOT.$_GET['file'].'.php', '/../')===false && is_file(DOCROOT.$_GET['file'].'.php'))
  
   {
        include ('../main.php');
    }
 
а так же желательно сделать исключения, что бы можно было вносить изменения только в те файлы, которые будут прописаны в коде.
запиши названия всех файлов в массив и при редактировании сверяй in_array
как сделать что бы в коде уже было "../"
на усмотрение разработчика. можно напрямую в коде написать $file="../".$_GET['file'];
 
  • Нравится
Реакции: vave
"запиши названия всех файлов в массив и при редактировании сверяй in_array"

а можно как-нибудь на примере?
второй ответ помог.

кстати я в первом посте не тот код вообще вставил, оказывается он лишний...
 
а можно как-нибудь на примере?
к примеру так:
PHP:
$for_edit=array("main","index","footer","header");
if(in_array($_GET['file'],$for_edit)){
// тут редактировать
}else{
// тут выводим сообщение, что редактировать указанный файл нельзя
}
 
что-то код не горит особо желанием работать:)

куда тока не вставлял
вот нуждающийся в помощи код:
PHP:
<?php 
$loadcontent = "../".$_GET['file'].'.php';

 if($_POST['save_file']) {
        $savecontent = stripslashes($_POST['savecontent']); 
        $fp = @fopen($loadcontent, "w"); 
        if ($fp) { 
            fwrite($fp, $savecontent); 
} 
} 
    $fp = @fopen($loadcontent, "r"); 
        $loadcontent = fread($fp, filesize($loadcontent)); 



      {

}
?>
 
PHP:
<?php 
$for_edit=array("main","index","footer","header"); 
if(in_array($_GET['file'],$for_edit)){ 
$loadcontent = "../".$_GET['file'].'.php';
 if($_POST['save_file']) {
        $savecontent = stripslashes($_POST['savecontent']); 
        $fp = @fopen($loadcontent, "w"); 
        if ($fp) { 
            fwrite($fp, $savecontent); 
} 
} 
    $fp = @fopen($loadcontent, "r"); 
        $loadcontent = fread($fp, filesize($loadcontent)); 
      {
}
}else{ 
echo "нет файла для редактирования";
} 
?>
в данном случае в строке адреса должно быть: edit.php?file=main
 
  • Нравится
Реакции: vave
А как сделать что бы "main" был дефолтом?
Что бы он открывался без index.php?file=maim а стоял изначально в index.php

но в тоже время осталась возможность менять содержание index.php?file=разное
 
А подумать не пытались?
PHP:
$for_edit = array("main", "index", "footer", "header");

define("DEFAULT_FILE", "main");

if (isset($_GET['file']) && in_array($_GET['file'], $for_edit)) {
    $file = $_GET['file'];
} else {
    $file = DEFAULT_FILE;
}

// Далее для имени обрабатываемого файла используем переменную $file
 
вот такой получился код

PHP:
	<?php 
$for_edit=array("main","1","2","3","4","5"); 

define("DEFAULT_FILE", "main");

if (isset($_GET['file']) && in_array($_GET['file'], $for_edit)) {
    $file = $_GET['file'];
} else {
    $file = DEFAULT_FILE;
}


if(in_array($_GET['file'],$for_edit)){ 
$loadcontent = "../".$_GET['file'].'.php';
 if($_POST['save_file']) {
        $savecontent = stripslashes($_POST['savecontent']); 
        $fp = @fopen($loadcontent, "w"); 
        if ($fp) { 
            fwrite($fp, $savecontent); 
} 
} 
    $fp = @fopen($loadcontent, "r"); 
        $loadcontent = fread($fp, filesize($loadcontent)); 
      {
}
}else{ 
echo "íåò ôàéëà äëÿ ðåäàêòèðîâàíèÿ";
} 
?>

Наверное я что-то не так сделал, дефолтом main.php не грузится :nezn:
 
Не пытались разобраться в предложенном коде?

PHP:
<?php 
$for_edit=array("main","1","2","3","4","5"); 

define("DEFAULT_FILE", "main");

if (isset($_GET['file']) && in_array($_GET['file'], $for_edit)) {
    $file = $_GET['file'];
} else {
    $file = DEFAULT_FILE;
}
$loadcontent = "../{$file}.php";

if ($_POST['save_file']) {
    $savecontent = stripslashes($_POST['savecontent']); 
    $fp = @fopen($loadcontent, "w"); 
    if ($fp) { 
        fwrite($fp, $savecontent); 
    } 
} 
$fp = @fopen($loadcontent, "r"); 
$loadcontent = fread($fp, filesize($loadcontent));
 
Назад
Сверху