За последние 24 часа нас посетили 17510 программистов и 1715 роботов. Сейчас ищут 1660 программистов ...

Как добавить информацию в файл?

Тема в разделе "PHP для новичков", создана пользователем Arty220, 23 апр 2011.

  1. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    После ввода запроса создаётся файл и в него записывается то, что мы ввели.
    PHP:
    1. $fileNameAsk=md5($lines[$index]); // генерируем имя файла
    2. $fileNameAsk = dirname(__php__).'/pages/'.$fileNameAsk;   // путь к нему
    3. file_put_contents($fileNameAsk, "<div class='text'>".$lines[$index]."</div>", LOCK_EX);  // записываем в него наш запрос со стилем css.
    4. ?>  
    Вопрос: как в этот файл добавить инклуды с оформлением страницы, т.е как из этого файла сделать полноценную страницу? Подскажите, пожалуйста...
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Не понятно, в чем проблема.
    Вот ты записал в файл строчку "<div class='text'>то_что_было_в_переменной</div>". Точно также можешь сформировать любые текстовые данные, в том числе и include, и код php:
    PHP:
    1. $out="<div class='text'>".$lines[$index]."</div>";
    2. $out.='<?php include("some_file.php");?>';//php код в одинарных кавычках не обрабатывается
    3. file_put_contents($fileNameAsk, $out);
     
  3. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    Спасибо тебе огромное! Я не знал что в переменную можно много значений записывать...
    Если в браузере открыть файл без расширения, то он не читает php скрит внутри него, что можно придумать?
    Расширение как-нибудь присвоить скриптом, хотя много где файлы в браузере без расширения, а информация отображается в них отлично..
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Arty220
    пхп исполняется сервером а не браузером. пхп создает текст - html - отправляет его браузеру

    пхп для сервера.

    что вы вобще изобретаете? расскажите пожалуйста, может мы вам что по-проще присоветуем
     
  5. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    что-то похожее на infametr.ru
     
  6. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Можно создать файл .htaccess в корне сайта и в нём прописать
    Код (Text):
    1. RewriteEngine On
    2. RewriteCond %{REQUEST_FILENAME} !-d
    3. RewriteCond %{REQUEST_FILENAME} !-f
    4. RewriteRule ^(.*)$ index.php?path=$1 [L,QSA]
    Тогда все запросы будут передаваться главному файлу index.php, а в нём уже принимается решение, что делать.
    Например, ты написал в браузере http://my.site.ru/8f77f79dcc2d41089405513ef9125a45
    Часть строки "8f77f79dcc2d41089405513ef9125a45" будет передана файлу index.php через параметр path, который берется так
    PHP:
    1. $path=$_GET['path'];
    На основе этой переменной в скрипте index.php можно прописать логику. Например
    PHP:
    1. if($path=='8f77f79dcc2d41089405513ef9125a45'){
    2.   include('secret/8f77f79dcc2d41089405513ef9125a45');
    3. }
    и файл из папки "secret", к примеру, будет подключен к файлу "index.php" и выведен в браузер.
     
  7. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    Я же не знаю под каким именем сгенерируется файл так что


    PHP:
    1.  
    2.  if($path=='8f77f79dcc2d41089405513ef9125a45'){
    3.    include('secret/8f77f79dcc2d41089405513ef9125a45');
    4.  }
    5.  
    не пойдёт, как написать. Я сейчас попробывал, php скрипт в файле без расширения не работает, а с расширением php работает. Подскажите что, делать, пожалуйста...
     
  8. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Хм, у меня работает.
    Покажи, как ты сделал.
    Можно при создании файла прописать в БД или в отдельном файле, какое имя за какой файл отвечает, доп. информацию и т.д. За логику программы отвечаешь ты.

    PS. Не нужно целиком пост цитировать. Засоряет страницу.
     
  9. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    Я очень очень слабо разбираюсь в PHP, всего для 4 как начал разбираться. Я ещё не сделал как ты показал выше,т.к.
    PHP:
    1.  if($path=='8f77f79dcc2d41089405513ef9125a45'){
    2.    include('secret/8f77f79dcc2d41089405513ef9125a45');
    3.  }
    4.  
    Я прописать не смогу , это ведь для конкретного файла.. Если не трудно можешь расписать в какой файл, что вставлять..[/php]
     
  10. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Для 4-го дня сложноватую задачу решаешь.
    Конкретная реализация зависит от ТЗ. Трудно догадаться, что ты задумал. Я тебе только намекнул, что можно делать, а работать не буду :)
     
  11. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    а можно, как-нибудь расширение файлу генерируему задать или добавить?
     
  12. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    да, а в чём проблема?.. просто дописать в конце имени файла
     
  13. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    $fileNameAsk=md5($lines[$index]);
    $fileNameAsk = dirname(__php__).'/pages/'.$fileNameAsk; // путь к нему
    как дописать?
    $fileNameAsk = dirname(__php__).'/pages/'.$fileNameAsk.php; - точку он выбрасывает еогда файл сохраняется...
     
  14. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    $fileNameAsk = dirname(__php__).'/pages/'.$fileNameAsk.'.php';
     
  15. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    Спасибо!!! Вроде всё работает!
    А почему тут
    PHP:
    1.  $out="<div class='text'>".$lines[$index]."</div>";
    2.  $out.='<?php include "up.php" ?>';//php код в одинарных кавычках не обрабатывается
    Вторая переменная с точкой?
    [/php]
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Arty220
    я смотрю это не только четвертый день знакомства с php, но и четвертый день знакомства с программированием вобще?
     
  17. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    Ну почти... Я вот, что нашёл:
    Как правило, PHP не меняет передаваемых скрипту имен переменных. Однако следует отметить, что точка не является корректным символом в имени переменной PHP. Поэтому рассмотрим такую запись:
    <?php
    $varname.ext; /* неверное имя переменной */
    ?>
    В данном случае интерпретатор видит переменную $varname, после которой идет оператор конкатенации, а затем голая строка (то есть, не заключенная в кавычки строка, не соответствующая ни одному из ключевых или зарезервированных слов) 'ext'. Очевидно, что это не даст ожидаемого результата.


    По этой причине важно заметить, что PHP будет автоматически заменять любые точки в именах приходящих переменных на символы подчеркивания.
    Когда я меняю местами
    PHP:
    1. $out="<div class='vopros'>".$lines[$index]."</div>";
    2.  $out.='<?php include "up.php" ?>';//php код в одинарных кавычках не обрабатывается
    3. то инклуд не записывается в файл, а мне надо чтобы они по порядку шли. Как сделать? Объясните, пожалуйста!
     
  18. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    Всё, понял надо точку везде ставить и по порядку писать переменные. Всё норм получается.. Огромное спасибо всем, кто помогал!!
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Arty220
    точка в php служит для сложения строк. и точка! :D

    Arty220
    По этой причине важно заметить, что PHP будет автоматически заменять любые точки в именах приходящих переменных на символы подчеркивания.
    никаких "приходящих" переменных (это что? типо как замещающий учитель в школе?) нету.

    есть механизм автоматического создания переменных из переданных в запросе параметров. Этот дебилизм остался в наследство с лохматых времен и уже давно по-умолчанию отключен.

    дальше.

    одинарные кавычки кардинально отличаются от двойных.

    изначально в тексте существуют невидимые колдовские символы, такие как например символ Энтера - перевода строки или табуляция. Для того чтобы прогеры не морочились в таких местах а заодно и могли юзать ВНУТРИ строки переменные и прочие плюшки было придумано простое правило: если надо нарисовать какой-то такой символ типа перевода строки или ввести в переменную допустим какую-то конструкцию, напоминающую служебную, то перед этой хренью ставится слэш \
    т.е.
    PHP:
    1. <?
    2. $a = "lalala $pupupu"; //подставляет в строку содержимое переменной $pupupu
    3. $a = "lalala \$pupupu"; //Нет, брат. Тут не надо подставлять, поэтому даю отмашку флажком - ставлю слеш.
    4.  
    забавное следствие - чтобы нарисовать слеш надо поставить слеш перед слешом - он же служебный символ теперь! =)
    С помощью слеша можно и саму кавычку заэранировать.
    PHP:
    1. <?
    2. $a = "lalala \"$pupupu\""; //переменная в кавычках!
    3.  
    Но для простоты ввели одинарные кавычки, и условились что там как будто все что написано - не надо думать, искать там переменные. Мол, компилятор когда видит строку в одинарных кавычках он так ее и выводит как есть.
    Ну тут само собой можно заэкранировать саму кавычку 'dfdfdfdf \' dfdfdfdfdf'... все просто.

    соответственно, когда ты что-то пишешь в одинарных кавычках, то это будет выведено как текст.

    Но в двойных кавычках только переменные подставляются и массивы в фигурных скобках выводятся:
    PHP:
    1.  
    2. <?
    3.  $out="<div class='vopros'>{$lines[$index]}</div>";// и можно не заниматься конкатенацией
    4.  
    но не более того!

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



    можно правда выполнить твой пхп скрипт, а его результат засунуть в переменную. Это обычный подход в стайтостроительстве. Сначала исполняются скрипты, потом весь вывод с них собирается и пихается в шаблон страницы в нужных местах.

    поставь в закладки себе http://php.net и найди там в поиске ob_start() и возьми пример оттуда - это решит твои вопросы.
     
  20. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    igordata , спасибо за подробное описание =).
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    двадцать баксов
     
  22. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    Да если бы они у меня были, я бы не стал сам пытаться сайт на php писать, в котором ни хрена не понимаю ))
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    заюзай готовую cms =)
     
  24. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    Не.. У меня идея сайта без контента, типо infametr.ru, тупо скриптом.. Если норм получится, то очень выгодно походу.
     
  25. Arty220

    Arty220 Активный пользователь

    С нами с:
    23 апр 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Belarus
    Последний вопрос как редирект сделать, если у меня название конечной странице только в таком виде:
    PHP:
    1. $fileNameAsk = dirname(__php__).'/'.$fileNameAsk.'.php'; // т.е переменная + расширение php
    В нете нашёл скрипт, там с хедерами...что-то не получилось...[/php]