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

Тема в разделе "PHP", создана пользователем vave, 22 окт 2011.

Модераторы: latteo
  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    369
    Симпатии:
    14
    Здравствуйте дорогие знатоки!
    столкнулся с такой проблемой,
    у меня сайт расположен в папре /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');
        }
     
  2. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    запиши названия всех файлов в массив и при редактировании сверяй in_array
    на усмотрение разработчика. можно напрямую в коде написать $file="../".$_GET['file'];
     
    vave нравится это.
  3. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    369
    Симпатии:
    14
    "запиши названия всех файлов в массив и при редактировании сверяй in_array"

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

    кстати я в первом посте не тот код вообще вставил, оказывается он лишний...
     
  4. PapaJoe

    PapaJoe

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

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    369
    Симпатии:
    14
    что-то код не горит особо желанием работать:)

    куда тока не вставлял
    вот нуждающийся в помощи код:
    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($fpfilesize($loadcontent)); 



          {

    }
    ?> 
     
  6. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    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($fpfilesize($loadcontent)); 
          {
    }
    }else{ 
    echo 
    "нет файла для редактирования";

    ?> 
    в данном случае в строке адреса должно быть: edit.php?file=main
     
    vave нравится это.
  7. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    369
    Симпатии:
    14
    А как сделать что бы "main" был дефолтом?
    Что бы он открывался без index.php?file=maim а стоял изначально в index.php

    но в тоже время осталась возможность менять содержание index.php?file=разное
     
  8. fpinger

    fpinger

    Регистр.:
    11 май 2007
    Сообщения:
    253
    Симпатии:
    58
    А подумать не пытались?
    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

     
  9. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    369
    Симпатии:
    14
    вот такой получился код

    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($fpfilesize($loadcontent)); 
          {
    }
    }else{ 
    echo 
    "íåò ôàéëà äëÿ ðåäàêòèðîâàíèÿ";

    ?> 
    Наверное я что-то не так сделал, дефолтом main.php не грузится :nezn:
     
  10. fpinger

    fpinger

    Регистр.:
    11 май 2007
    Сообщения:
    253
    Симпатии:
    58
    Не пытались разобраться в предложенном коде?

    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($fpfilesize($loadcontent));