За последние 24 часа нас посетили 22136 программистов и 1144 робота. Сейчас ищут 824 программиста ...

Реализация небольшой идеи в PHP

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

Метки:
  1. guno7

    guno7 Новичок

    С нами с:
    10 апр 2018
    Сообщения:
    12
    Симпатии:
    0
    Всем привет. У меня возникла одна проблема при реализации одной идеи. Я пытаюсь сделать такое: сначала открываю файл users.txt, потом перебрать все строки из линии. В каждой линии уникальное имя, а на сервере есть файл с таким именем. Мне нужно открыть все эти файлы с названиями из users.txt и записать там что то. Пытался примерно так:
    PHP:
    1. if (isset($servername) && $pcname == "all")
    2.    {
    3. $content = file('users.txt');
    4. foreach ($content as $line) {
    5.     $fh=fopen("users/".$line.".txt", "w+");
    6.     fwrite($fh, $servername);
    7.     fclose($fh);
    8.    }
    9. }
    Ничего не получается. В инете много копал, ни че по теме не нашел. Кто сможет, помогите. Заранее спасибо)
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.825
    Симпатии:
    738
    Адрес:
    Татарстан
    Ну проверки всякие делайте
    PHP:
    1. if (isset($servername) && $pcname == "all") {
    2.     $content = file('users.txt');
    3.     foreach ($content as $line) {
    4.         if (is_writable($line)) {
    5.             if (!$fh=fopen("users/".$line.".txt", "w+")) {
    6.                 echo "Не могу открыть файл ($line)";        
    7.             } else {
    8.                 if (fwrite($fh, $servername) === FALSE) {
    9.                     echo "Не могу произвести запись в файл ($line)";
    10.                 } else {
    11.                     echo "Успешно записали в файл ($line)";
    12.                 }
    13.             }
    14.             fclose($fh);
    15.         } else {
    16.             echo "Файл $line недоступен для записи";
    17.         }  
    18.     }
    19. }
    20. }
     
    guno7 нравится это.
  3. guno7

    guno7 Новичок

    С нами с:
    10 апр 2018
    Сообщения:
    12
    Симпатии:
    0
    Вызывается исключение и говорит что файл недоступен для записи. Права 777 есть. В чем может быть проблема?
     
  4. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    PHP:
    1. if (is_writable($line)) {
    2. if (!$fh=fopen("users/".$line.".txt", "w+")) {
    Странно как то. Проверяешь line а писать собираешься в user/line.txt
    Проверяй user. 777 надеюсь на папку не на файл?
     
  5. guno7

    guno7 Новичок

    С нами с:
    10 апр 2018
    Сообщения:
    12
    Симпатии:
    0
    А в проверке должен быть путь до файла users.txt, да?
     
  6. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Или к файлу или к папке. На все что подсвечено красным в коде можно нажать
     
  7. guno7

    guno7 Новичок

    С нами с:
    10 апр 2018
    Сообщения:
    12
    Симпатии:
    0
    На папке есть, на файле тоже
    --- Добавлено ---
    С задачей справился. Спасибо всем большое
     
  8. guno7

    guno7 Новичок

    С нами с:
    10 апр 2018
    Сообщения:
    12
    Симпатии:
    0
    Оказалось у меня в файл записывается сначала имя, а потом переходит на новую строку. Из-за этого имя не находилось в файле.
    Т.е при записи в файл, у меня все записывается так:
    1.username
    2.//здесь бывает курсор для редактрирования

    А нужно так
    1.username //здесь курсор
    Код для записи в файл:
    PHP:
    1. <?php
    2. $user = $_GET['newuser'];
    3. if (isset($user)) {
    4. if ($user!="") {
    5.     $fh=fopen("users.txt", "a+");
    6.     $user = trim(preg_replace('/\s/', '', $user));
    7.     fwrite($fh, $user."\r\n");
    8.     fclose($fh);
    9.    }}
    10. ?>
    Как сделать так, чтобы каждый раз все записывалось с новой строки, но с условием что на новую строку он перейдет только при следующем редактрировании? Заранее спасибо