ФорумПрограммированиеPHP для идиотов → Ошибка в file_get_contents(), что сделать??

Ошибка в file_get_contents(), что сделать??

  • KuF

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 4 июля 2008 г. 3:58

    Привет! Задача следующая: Необходимо написать скрипт, который редактирует хтмл-ки, (добавляет табличку и кнопку с ссылкой). Т.е. необходимо указать путь к этому файлу, который нужно редактировать и ссылку, которую он должен будет содержать. (итого 2 поля формы) Я написал страничку (там формы, данные ввожу туда) и обработчик. Все работает, когда дома загружаю на сервак Apache дома.
    Прога вставляет новые теги после <body id="cs_flashBody"> и  перед </BODY>. Так и должно быть.
       Но я столкнулся с проблемой - когда пришел с прогой в универ, загрузил её через комп, который подключен к сети на сервер, запустил , и… Файл не захотел открываться. Видимо, это из-за неправильного пути в $file = file_get_contents(msg1);  Объясните плз, как должно быть, чтобы работало… Я подозреваю, что нужно влепить в параметры file_get_contents IP компа, ведь хтмл документ для редактирования находится на этом компе… но не знаю как это написать. Помогите плз =)


    1 . формы для ввода данных
     

    <?
      $My_date=date("d.m.y");
    echo "Сегодняшняя дата : $My_date";
    echo "<br>";

      $action = $HTTP_POST_VARS["action"];
      if ( empty($action) )
      {
      ?>
         <HTML>
         <HEAD>
    <TITLE>. . : : : Add_Url : : : . .</TITLE>
         </HEAD>
         <BODY bgcolor="DeepSkyBlue">
     <br><br><br><br><br><br><br><br><br><br>
         <center>
    <FIELDSET STYLE="border: 2px solid #000; padding: 10px; width: 550px">
    <LEGEND> Заполните поля формы: </LEGEND>
         <table width=450px border=1>
         <form action=KufScript.php method=post>
            <input type=hidden name=action value=post>
            <tr><td colspan=2>
    <br><b>Укажите страницу, в которую необходимо добавить ссылку:</b>
    <br>Введите, пожалуйста, адрес этого файла:
    <br><input type=text size=80 name=msg1>
            </td></tr>
    <input type=hidden name=action value=post>
    <tr><td colspan=2>
    <br><b>Укажите страницу, на которую будет переход по ссылке:</b>
    <br>Введите, пожалуйста, адрес этого файла:
    <br><input type=text size=80  name=msg2>
            </td></tr>
    <tr><td>
    <br> <b>Введите, пожалуйста, IP компьютера в сети :</b>
    <input type=text sixe=80 name=msg3>
    </tr><td>
    <tr><td colspan=2><br>
    <DIV align="center"><input type=submit value=" Добавить URL "></div>
    </td></tr>
     </form>
         </table>
    </FIELDSET>
         </center>
         </BODY>
         </HTML>
      <?
      }
    ?>


    2.  обработчик
     

    <HTML>
    <TITLE>Добавление ссылки в текст html-документа</TITLE>
    <BODY bgcolor="DeepSkyBlue">
    <?  
      if(isset($HTTP_POST_VARS["msg1"]) and isset($HTTP_POST_VARS["msg2"]))
      {
      $msg1 = substr($HTTP_POST_VARS["msg1"],0,1024);
      $msg1 = htmlspecialchars($msg1);
    $msg1= stripslashes($msg1);
    ?> <tr><td>
    <center>
    <? print "<P>".$msg1."</P>\n"; ?>
    </center>
    </tr></td>
    <?
      $msg2 = substr($HTTP_POST_VARS["msg2"],0,1024);
      $msg2 = htmlspecialchars($msg2);
      $msg2= stripslashes($msg2);
    ?>  <tr><td>
    <center>
    <? print "<P>".$msg2."</P>\n"; ?>
    </center>
    </tr></td>
    <?  

    $Variable1 = '<div align= "center"> <Table border="1" bgcolor="LightGray"> <tr><td><FORM ACTION='.$msg2.' METHOD="POST"><input type="submit" value="MyButton"></FORM></td><td>';
    $Variable2 = '</td></tr></TABLE></div>';
    // читаем


    $file = file_get_contents(msg1);

    // удаляем
    // заменяем тег   <body id="cs_flashBody"> на строковую переменную, результат сохр в $file
    $SpecVar='<body id="cs_flashBody">';
    $file = str_replace("$SpecVar\r\n","$SpecVar\r\n$Variable1\r\n",$file);

    $file = str_replace("</body>\r\n","$Variable2\r\n</body>\r\n",$file);

    // пишем обратно
    $fp = fopen ($msg1, 'w');
    fwrite ($fp,$file);
    fclose ($fp);
    exit();
    }
    else
    echo "Не введено значение в обязательное к заполнению поле <br>";
    echo "<A href =# onClick='history.back()'>Вернуться к правке </a> <br>";
    ?>

    </BODY>
    </HTML>


    3. файл для редактирования

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
      <head>
         <!– saved from url=(0025)http://www.techsmith.com/ –>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
         <meta name="DC.date" content="вторник, Апрель 15, 2008" />
         <meta name="DC.language" content="ENU" />
         <meta name="DC.title" content="прилади_small3" />

         <title>Created by Camtasia Studio 5</title>
         <script type="text/javascript" src="swfobject.js"></script>
         <script type="text/javascript" src="prylady3.js"></script>
         
                               
      <link rel="stylesheet" type="text/css" href="FlashTemplate.css"/>
      </head>
      <body id="cs_flashBody" >
         <div id="flashcontent">  
    <div id="cs_noexpressUpdate">
     <p>The Camtasia Studio video content presented here requires JavaScript to be enabled and the  latest version of the Macromedia Flash Player. If you are you using a browser with JavaScript disabled please enable it now. Otherwise, please update your version of the free Flash Player by <a href="http://www.macromedia.com/go/getflashplayer">downloading here</a>. </p>
       </div>
      </div>
         <script type="text/javascript">
     // <![CDATA[          
            var fo = new SWFObject( "prylady3_controller.swf", "csSwf", "960", "499", "8", "#FFFFFF" );
            fo.addVariable( "csConfigFile", "prylady3_config.xml"  );
            fo.addVariable( "csColor"     , "FFFFFF"           );
            fo.addVariable( "csPreloader" , "prylady3_preload.swf" );
            if( args.movie )
            {
               fo.addVariable( "csFilesetBookmark", args.movie );
            }
            fo.write("flashcontent");    
            // ]]>

      </script>          
      </body>
    </html>


    Опять  же, если запустить дома на своем севаке, работает. А нужно, чтобы работала через удаленный сервак.
    Спасибо большое, очень надеюсь на вашу помошь!!!!
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 4 июля 2008 г. 4:20, спустя 22 минуты 9 секунд

    1. Прочитай это: http://www.phpfaq.ru/paths
    2. Пойми, что file_get_contents должен получать файл, а не url
    3. Забей на все свои извращения и сделай нормальную CMS с помощью баз данных.

  • KuF

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 4 июля 2008 г. 7:05, спустя 2 часа 45 минут 4 секунды

    file_get_contents должен получать файл, а не url…. и как мне это написать?
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 4 июля 2008 г. 7:15, спустя 9 минут 32 секунды

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

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 4 июля 2008 г. 9:40, спустя 2 часа 25 минут 28 секунд

    "подключи внешний ресурс как сетевой диск может прокатит " , а где это подключается?
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 4 июля 2008 г. 9:55, спустя 14 минут 54 секунды

    KuF, на маке не знаю
    на винде проводник-сераис-подключить сетевой диск
    на линуже наверное через моинт $ mount -o loop /что /куда
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 4 июля 2008 г. 10:09, спустя 13 минут 8 секунд


    file_get_contents должен получать файл, а не url….  и как мне это написать?
    Т.е. ссылку, которую я тебе дал первым пунктом, ты не читал? Так не пойдет! Первый пункт он на то и первый, чтобы начать с него, а потом уже переходить ко второму. Кстати, третий тоже не надо игнорировать …
  • KuF

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 7 июля 2008 г. 2:12, спустя 2 дня 16 часов 3 минуты

    4 AlexB : Читал, можешь написать пример … что должно передаваться в качестве параметров в эту функцию, чтобы все правильно было.?:???
  • KuF

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 7 июля 2008 г. 2:24, спустя 12 минут 32 секунды

    А может быть мне этот файлик закачивать на сервак каждый раз, редактировать, а потом только как его обратно вернуть..
    Киньте ссылочку плз, если кто знает какую-нибудь СМS, самую легкую, чтобы редактировала структуру и добавляла ссылки на другие страницы.
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 7 июля 2008 г. 4:11, спустя 1 час 46 минут 33 секунды

    CMS надо написать самому, хотя бы чисто под это дело. Для редактирования используй визивиг TinyMCE и будет тебе счастье.
    И как правильно уже сказали, храни весь текст, требующий редактирование, в БД.
    from TRIAL with LOVE

Пожалуйста, авторизуйтесь, чтобы написать комментарий!