Вторник, 26 Ноября 2024, 18:11

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
[PHP] Запись и чтение из определённой строки файла
Quad69Дата: Вторник, 23 Июня 2015, 16:32 | Сообщение # 1
заслуженный участник
Сейчас на сайте
Здравствуйте.
Делаю для своей игры что то типо регистрации, столкнулся с проблемой.
Не могу записать свой текст в определённую строку файла.
Например я пытаюсь записать слово "тест" в третью строку файла, а php скрипт записывает в первую.
Чтение вроде ещё как то работает, но вот запись... С ней уже пол дня мучаюсь.
Помогите пожалуйста.
Киньте код, или подскажите какие функции использовать...
SaiteiДата: Вторник, 23 Июня 2015, 16:46 | Сообщение # 2
старожил
Сейчас нет на сайте
maksim1221232, во-первых, тебе надо узнать сколько строк в файле на данный момент.
Если их меньше чем тебе необходимо - то добавь их. Переход на новую строку осуществляется с помощью специального символа "\n"
Quad69Дата: Вторник, 23 Июня 2015, 16:56 | Сообщение # 3
заслуженный участник
Сейчас на сайте
Цитата Saitei ()
во-первых, тебе надо узнать сколько строк в файле на данный момент.

Когда у меня создаётся скриптом файл, то их 0.
А так я планирую иметь в них только около 10 строк, не больше.
Мне надо что бы если я обратился к скрипту в аргументами ?function=write&number=3&value=тест то открыв нужный файл я увидел примерно такое:
Код
//пустая строка 0
//пустая строка 1
//пустая строка 2
тест
//пустая строка 4 и т.д


P.s Извиняюсь если где то что не так написал. Просто только недавно начал работать с php
AkyltistДата: Вторник, 23 Июня 2015, 17:03 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Цитата maksim1221232 ()
Здравствуйте. Делаю для своей игры что то типо регистрации, столкнулся с проблемой. Не могу записать свой текст в определённую строку файла. Например я пытаюсь записать слово "тест" в третью строку файла, а php скрипт записывает в первую. Чтение вроде ещё как то работает, но вот запись... С ней уже пол дня мучаюсь. Помогите пожалуйста. Киньте код, или подскажите какие функции использовать...


Смотри режимы открытия файла: http://php.net/manual/ru/function.fopen.php

прям тут пишу возможно есть опечатки
Код
$you_file = fopen("filename.xxx", "a+");
flock($you_file, LOCK_EX);
fwrite($you_file, "$you_string\r\n");
flock($you_file, LOCK_UN);
fclose($you_file);


PS: переходите с файлов на БД по возможности. В жизни пригодится.
AkyltistДата: Вторник, 23 Июня 2015, 17:06 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
Цитата maksim1221232 ()
Цитата Saitei ()во-первых, тебе надо узнать сколько строк в файле на данный момент. Когда у меня создаётся скриптом файл, то их 0. А так я планирую иметь в них только около 10 строк, не больше. Мне надо что бы если я обратился к скрипту в аргументами ?function=write&number=3&value=тест то открыв нужный файл я увидел примерно такое: Код//пустая строка 0 //пустая строка 1 //пустая строка 2 тест //пустая строка 4 и т.д P.s Извиняюсь если где то что не так написал. Просто только недавно начал работать с php


по этому поводу

Код
$you_file_data = file("filename.xxx");
$you_file_count = count($you_file_data);

for($i=0;$i<$you_file_count; $i++)
{
   echo $you_file_data[$i]."<br />";
}
Quad69Дата: Вторник, 23 Июня 2015, 17:08 | Сообщение # 6
заслуженный участник
Сейчас на сайте
Цитата Akyltist ()
прям тут пишу возможно есть опечатки
Код
$you_file = fopen("filename.xxx", "a+");
flock($you_file, LOCK_EX);
fwrite($you_file, "$you_string\r\n");
flock($you_file, LOCK_UN);
fclose($you_file);

Разве это то что я хотел? Вроде бы это простая запись в файл.

Цитата Akyltist ()
PS: переходите с файлов на БД по возможности. В жизни пригодится.

Можно, но я не знаю как это работает.
AkyltistДата: Вторник, 23 Июня 2015, 17:15 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
Цитата maksim1221232 ()
Разве это то что я хотел? Вроде бы это простая запись в файл.


Код

#$string_id - твое значение строки которую переписываешь

$you_file_data = file("filename.xxx");     
$you_file_count = count($you_file_data);

$you_file = fopen("filename.xxx", "w+");
flock($you_file, LOCK_EX);

for($i=0;$i<$you_file_count; $i++)     
{
      if($i == $string_id) { fwrite($you_file, "$you_new_string\r\n"); }
      else {  fwrite($you_file, $you_file[$i]);  }
}

flock($you_file, LOCK_UN);
fclose($you_file);



как бы 2+2 можно и сложить, удачи. Никогда не бойтесь задавать вопросы!

Цитата maksim1221232 ()
Можно, но я не знаю как это работает.


Интернет штука такая) Со временем разберетесь, было бы стремление!


Сообщение отредактировал Akyltist - Вторник, 23 Июня 2015, 17:20
ЭргалонДата: Вторник, 23 Июня 2015, 17:19 | Сообщение # 8
Вездесущий
Сейчас нет на сайте
maksim1221232, Незнание не освобождает от ответственности)) От кардиналов слышал)

Кубариум
Rise of the dark lords
Quad69Дата: Вторник, 23 Июня 2015, 17:27 | Сообщение # 9
заслуженный участник
Сейчас на сайте
Akyltist, Пробовал твой скрипт, поменял всё под себя. Не работает.
Пробовал покрутить чего как, всеровно не работает.
Твой скрипт какой то не такой. Он должен переписывать строки, но мне надо что бы оно просто писало в строке которой я хотел, не важно есть ли там что то или нет. Если есть то оно стирает и пишет то что нужно.

P.s Твой скрипт у меня полностью всё стёр из файла :\



Сообщение отредактировал maksim1221232 - Вторник, 23 Июня 2015, 17:29
AkyltistДата: Вторник, 23 Июня 2015, 17:37 | Сообщение # 10
заслуженный участник
Сейчас нет на сайте
Цитата
Твой скрипт у меня полностью всё стёр из файла


где else?

Цитата
file("users/" . $_GET["file"]);

никогда так не делай, сразу remove and local include

Цитата
Пробовал покрутить чего как, всеровно не работает.

не умеете готовить, внимательней. Сейчас совсем простой пример скину.
Quad69Дата: Вторник, 23 Июня 2015, 17:40 | Сообщение # 11
заслуженный участник
Сейчас на сайте
Цитата Akyltist ()
file("users/" . $_GET["file"]);

никогда так не делай, сразу remove and local include

А как тогда делать?
AkyltistДата: Вторник, 23 Июня 2015, 17:40 | Сообщение # 12
заслуженный участник
Сейчас нет на сайте
Код
# $i - номер строки
  # $you_string - твои данные
  $i = 3;
  $you_string = 'test';

  $file_name = "filename.xxx";
  $file_data = file($file_name);  
  $file_data[$i] = $you_string."\r\n";
  file_put_contents( $file_name, $file_data );
AkyltistДата: Вторник, 23 Июня 2015, 17:44 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
Цитата Akyltist ()
А как тогда делать?

либо ложите данные пользователей в один файл
либо фильтруйте Ваши переменные

начните с теоритической составляющей чтобы понять с чем имеете дело: https://ru.wikipedia.org/wiki/PHP-инъекция

PS: но как разберетесь не используйте данные во вред, никогда! Не портите мне карму!
Quad69Дата: Вторник, 23 Июня 2015, 17:51 | Сообщение # 14
заслуженный участник
Сейчас на сайте
Цитата Akyltist ()
никогда так не делай, сразу remove and local include

А можно об этом по подробнее...
Как с помощью этой строки можно нанести вред?
AkyltistДата: Вторник, 23 Июня 2015, 18:02 | Сообщение # 15
заслуженный участник
Сейчас нет на сайте
Цитата
Как с помощью этой строки можно нанести вред?

index.php?file=если_знать_имя_файла&number=0&value=можно_в_него_записать_любые_данные

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

Skype = vampir879 а то во флуд перерастает. Самый простой вариант скрипта Вам подошел?

Если работаете на файловых данных то пишите все в один файл, типа:
id1::user1::pass1::mail1::data1::
id2::user2::pass1::mail1::data1::
id3::user3::pass1::mail1::data1::


фильтруйте данные которые к Вам приходять на корректность
-длина
-запрещенные спецсимволы
-тип данных
-корректность данных (mail, phone, date)
-и т.д. безопасность лишней не бывает


Сообщение отредактировал Akyltist - Вторник, 23 Июня 2015, 18:07
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг