За последние 24 часа нас посетили 22744 программиста и 1273 робота. Сейчас ищут 740 программистов ...

Изменение php-файла через форму

Тема в разделе "PHP для новичков", создана пользователем Sasha55555, 20 мар 2018.

  1. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Имеется форма, в которой нужно вписать имя. При отправке формы, информация записывается в файл
    имя, мне нужно, чтобы при просмотре других пользователей отображалось последнее отправленное формой имя. Но при открытии файла в новой вкладке браузера все пропадает, а содержимое файла data.txt стирается.
    Код (Text):
    1. $server = $_POST['server'];
    2. file_put_contents('data.txt', $server);
    3. echo file_get_contents('data.txt');  
    Как сделать так, чтобы только при повторной отправке формы файл как раз таки перезаписывался?
    Мне нужно, чтобы те, кто имеет ссылку к форме, мог изменять скрипт через форму, вводя имя.
     
  2. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @Sasha55555 может просто юзер отсылает пустую форму?
     
  3. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Нет, вообщем я сделал так
    Код (Text):
    1. <?php
    2. $info = $_POST['info'];
    3. file_put_contents('info.txt', PHP_EOL.$server, FILE_APPEND);
    4. echo file_get_contents('info.txt');
    5. ?>
    Но к файлу добавляется текст, а как сделать, чтобы при отправке формы файл перезаписывался?
     
  4. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Вообще когда люди дают ответ который тебе помогает, принято благодарить, для этого есть иконка с пальцев вверх. Т.е. человек потратил на тебя свое время и было бы правильно оценить его работу, такая минимальная плата за его труд и время.
    Ну, а касаемо твоего дописывания, так за это отвечает "FILE_APPEND"
    Кроме этого, зачем плодить однотипные топики?
     
    Sasha55555 нравится это.
  5. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Я понял, а как ри повторной отправке формы делать перезапись файла, а не дописывание?
     
  6. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Выше человек подсказал, что возможно отправляется пустая форма.
    По сути у тебя нет проверки пустой запрос $_POST['info']
    соответственно, при каждом обращении к php файлу выполняется весь код.
    Для этого нужно выполнить проверку:


    PHP:
    1. <?php
    2.  
    3. $info = $_POST['info'];
    4.  
    5. if (!empty($info)) {
    6.     file_put_contents('info.txt', $info);
    7. }
    8.  
    9. ?>
    Но опять же, это только пример, не более.

    Т.к. как я писал в другом топике, в ответ на твой же вопрос, данные код не выполняет проверку, и соответственно, если в форму ввести
    Код (Text):
    1. <h1>DjPHP</h1>
    то при отображении содержимого файла info.txt отобразиться с тегами, можешь попробовать.
    Чтоб этого избежать нужно применить strip_tags()

    PHP:
    1. <?php
    2.  
    3. $info = $_POST['info'];
    4.  
    5. if (!empty($info)) {
    6.     file_put_contents('info.txt',  strip_tags($info));
    7. }
    8.  
    9. ?>
     
    #6 AlexandrS, 20 мар 2018
    Последнее редактирование: 20 мар 2018
    Sasha55555 нравится это.
  7. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Что тут не так
    Код (Text):
    1. <?php
    2. $test = $_POST['test'];
    3. if (!empty($test)) {
    4.     file_put_contents('test.txt', $test);
    5. }
    6. file_put_contents('test.txt', PHP_EOL.$server, FILE_APPEND);
    7. echo file_get_contents('test.txt');
    8. ?>
     
  8. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    PHP:
    1. file_put_contents('test.txt', PHP_EOL.$server, FILE_APPEND);
    Этим ты обходишь проверку и дописываешь данные в файл 'test.txt'
    Т.е. нужно вот так:

    PHP:
    1. <?php
    2. $info = $_POST['info'];
    3. if (!empty($info)) {
    4.     file_put_contents('info.txt',  strip_tags($info));
    5. }
    6. echo file_get_contents('test.txt');
    7. ?>
    Вот это не нужно:
    PHP:
    1. file_put_contents('test.txt', PHP_EOL.$server, FILE_APPEND);
    Кроме это в одном примере у тебя $_POST['info'] в другом $_POST['test']
    Тут соответственно пропиши что именно у тебя приходит 'info' или 'test'
     
    Sasha55555 нравится это.
  9. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Спасибо вам огромное! А еще вопросик, как сделать перенос на сл.строку между $_POST['test'] и $_POST['info']
    И как перед значением $_POST['test'] добавить обычный текст, например Сообщение?
     
  10. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Перенос на следующую строку это вот так:
    PHP:
    1. file_put_contents('info.txt',  strip_tags($info))."\n";
    или
    PHP:
    1. file_put_contents('info.txt',  strip_tags($info)).PHP_EOL;
    В контексте отображения в браузере:
    PHP:
    1. file_put_contents('info.txt',  strip_tags($info))."<br>";
    В форме сколько полей?
    Поле для ввода Имени диджея и поле для ввода доп инфы?

    Т.е если в форме несколько полей и каждое должно быть в обязательном порядке заполнино, то соответственно и проверка будет другая, желательно сделать и предпроверку самой формы на JS.
     
    Sasha55555 нравится это.
  11. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Да, нужно чтобы я вводил просто имя, а не Имя DJ - Test, для доп.инфы также, чтобы слово доп.инфа уже была отображена
     
  12. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Покажите форму и что вы хотите увидеть в результате ибо из объяснения, ничего не понять.
     
  13. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Как можно добавить свой текст в файл
    Код (Text):
    1. if (!empty($test)) {
    2.     file_put_contents(Свой текст, 'test.txt',  strip_tags($test));
    3. }
    Но так не работает.
    И как вы сказали раньше про отступ строки, у меня теперь указывается в первом значении количество введеных символов, а второе как обычно.
    Код (Text):
    1. echo file_put_contents('test.txt', strip_tags($test))."<br>";
    2. echo file_get_contents('info.txt');
     
  14. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    PHP:
    1. <?php
    2. $info = $_POST['info'];
    3. $myText = 'Мой Текст';
    4. $br = '<br>';
    5.  
    6. if (!empty($info)) {
    7.     file_put_contents('info.txt',  strip_tags($info).$br.$myText);
    8. }
    9. echo file_get_contents('test.txt');
    10. ?>
    Только почему в одном примере пишем в 'info.txt' а читаем из 'test.txt' ?
     
    Sasha55555 нравится это.
  15. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    А как сделать, чтобы $myText отображался перед значением из txt?
     
  16. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар