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

Проверка наличия данных в текстовом файле.

Тема в разделе "PHP для новичков", создана пользователем АлексейКоваль, 28 июл 2016.

  1. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @pinokio ты опять пытаешься изменить формат хранения данных. Для зачем? Чисто чтоб твой говнокод стал работать? Даже решение с регуляркой тут больше прокатывает, потому что не допустит совпадения неверной подстроки. Если уж ты так хочешь блеснуть стрпозом, то почему ты не добавишь банальные проверки последовательности перевода строки? А, жираф? Да и с циклическим эксплодом ты тоже палку перегнул. В общем рано тебе врываться в треды и постить "решения". Они верные исключительно для тебя, но не рабочие на 95% применительно к оригинальной задаче.
    --- Добавлено ---
    И да, ты скопипастил коммент относящийся к конкретному листингу из мануала. А положив его сюда ты лишь дополнил бредом свой говнокод. Зачем? Что мешает думать перед тем как отправлять сообщения?
     
  2. pinokio

    pinokio Новичок

    С нами с:
    25 июл 2016
    Сообщения:
    160
    Симпатии:
    6
    @Ganzal потому что я работаю с бд. =_= И особо поиска по строке мне ещё не приходилось заморачиваться, но дай мне задачу я решу её на ура, потому что решил куда более серьёзные задачи, скоро ты поймёшь о чём я, буквально недельку погоди :D... На счёт explode не знаю... Зато надёжно будет. Мимо не проскочит можно контролировать, каждую строчку, на нём можно и сортировку построить пузырьковую и тд, там в общем много чего можно намутить на самом деле хоть бд свою начать писать но зачем?: :D
     
  3. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @pinokio ты чушь несешь. А эксплод будет особо радовать людей, которые всё позже и позже регистрируются. Догадываешься почему? Еще раз тебе говорю про твой стрпоз. Идея хорошая, но твоя конкретная реализация - говно. Проконтролируй последовательности конца строки и станет рабочим красивым решением наряду с вычиткой файла в массив и применением регулярных выражений.
     
  4. pinokio

    pinokio Новичок

    С нами с:
    25 июл 2016
    Сообщения:
    160
    Симпатии:
    6
    96388856 bytes Page generated in 0.132 seconds.


    PHP:
    1. $time= microtime();
    2. $time= explode(' ', $time);
    3. $time= $time[1] + $time[0];
    4. $start = $time;
    5. $startMemory = memory_get_usage();
    6. $array = array_fill(0, 1000000, 42);
    7. echo memory_get_usage() - $startMemory, " bytes\n";
    8. $time= microtime();
    9. $time= explode(' ', $time);
    10. $time= $time[1] + $time[0];
    11. $finish = $time;
    12. $total_time = round(($finish - $start), 4);
    13. echo 'Page generated in '.$total_time.' seconds.'."\n";
    14.  
    15. exit();
    И это блин на 5,6 а на семёрке ещё быстрее будет.... Так что пусть я буду хоть 2 000 000 пользователем думаю я не почую сильно.
    --- Добавлено ---
    откроется так словно я первый разница будет не большой
    --- Добавлено ---
    думаю в базе тоже идёт перебор по массиву.... Хочешь сказать explode долго получает массив ? А если мне надо будет обо всех данные вывести ? А ещё вообще то есть функции по работе с массивами я вообще то опять на коленке написал ща секу напишу по другому :D
     
  5. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    буратинко, почитай про microtime(); там уже давно добавили входной параметр, для любителей эксплода, типа тебя)
    ну и про БД почитай, как они работают, а то живешь... незнаешь... что если бы там был тупой перебор, то ими бы никто не пользовался
     
  6. bikerlex

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

    С нами с:
    2 дек 2014
    Сообщения:
    344
    Симпатии:
    40
    О да...
     
  7. pinokio

    pinokio Новичок

    С нами с:
    25 июл 2016
    Сообщения:
    160
    Симпатии:
    6
    @runcore вкурсе специально его там на лупил показать что скорость от этого сильно не падает я сейчас мильён записей делаю ща доделаю и докажу что мой метод не фига долго работать не будет. я уверен просто.
     
  8. pinokio

    pinokio Новичок

    С нами с:
    25 июл 2016
    Сообщения:
    160
    Симпатии:
    6
    Вообще в топку, сижу два часа потратил на создание миллиона так и не создал а потом когда послал свой локальный сервер, обробатывать массив из 50к ключей значений, серв сдох в общем в топку ваше блин тут дебаты :((((
    --- Добавлено ---
    Короче не работал не хрена сидел фигнй занимался, есть базы данных: mysql есть постгрес берём пользуемся и забиваем на остальное болт, по крайне мере пока не прежмёт, меня ещё не прижало, как то обхожусь без файловой системы вообще...
     
  9. Schrodinger

    Schrodinger Новичок

    С нами с:
    8 июн 2016
    Сообщения:
    40
    Симпатии:
    5
    @pinokio это наверн
    PHP:
    1. $name = $_POST['name'];
    2. $pass = $_POST['pass'];
    3. $ud = $name.$pass;
    4. $text = file_get_contents('1.txt'); // Необходимо указать полный путь к файлу
    5. if ( preg_match( "~(^|[\r\n])".preg_quote($ud, "~")."($|[\r\n])~sD", $text ) ) {
    6.     echo "YES";
    7. } else {
    8.     echo "NO'";
    9. }
    но еще логин/пасс лучше бы разделять
     
    #34 Schrodinger, 29 июл 2016
    Последнее редактирование: 29 июл 2016
  10. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Вот он опыт. Вернее его отсутствие.
    Я за два часа накатал НЕСКОЛЬКО бенчмарков спецом для тебя. И поехал на дачку.

    Ща вывод результатов красивый сделаю и покажу.
     
    denis01 и mr.akv нравится это.
  11. pinokio

    pinokio Новичок

    С нами с:
    25 июл 2016
    Сообщения:
    160
    Симпатии:
    6
    Кичиться, что ты умнее меня, тебе пользы не принесёт особо и карму тебе явно не подымет... Так что не выделывайся, а лучше научи если есть что сказать, а то как петух выглядишь.

    P.S (Я не говорю, что ты не говоришь как правильно, просто ты при этом выделываешься мол самый умный, поверь мир велик :) Так что это как то бессмысленно)

    Ну если только не почесать своё "великое" ЭГО
     
  12. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    pinokio, чувак, ты делаешь полную шняжку, автор просто перепутал функции. :)
    К тому-же при большом файле, твой сервак помрет, но для больших файлов нужно делать чтение со смещением и не грузить весь файл целиком, да хотя о чем я говорю, ты далек от этого деревяшечка.
     
  13. pinokio

    pinokio Новичок

    С нами с:
    25 июл 2016
    Сообщения:
    160
    Симпатии:
    6
    @rodent90 я вижу ты пока только своё я сказал, давай код, как правильно нужно.
     
  14. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Ночамi Днямi
    Ты пиши по русски.
    Это давно уже есть, ты просто введи в поиск " чтение со смещением " и " как правильно обезопасить поток и блокировку ", изучи и попробуй.
    Или ты на столько уверен, что для тебя родненького буду сидеть и писать качественный и логически структурированный скрипт-код?
    Не поверишь, я не читал не одной книжки по программированию, я читаю оф доки, там есть больше чем в книжках и всегда вводится новые фитчи и бенчмарки.
    Просто приучаю себя, чтобы питаться только от оф. источников, сложно но зато без нареканий и никто не говорил, что будет легко.
     
  15. pinokio

    pinokio Новичок

    С нами с:
    25 июл 2016
    Сообщения:
    160
    Симпатии:
    6
    @rodent90 давай код. много болтаешь. Или ты просто так языком трепишь.
     
  16. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Платишь?
     
  17. pinokio

    pinokio Новичок

    С нами с:
    25 июл 2016
    Сообщения:
    160
    Симпатии:
    6
    @rodent90 нет, но ты говоришь что ты можешь, это сделать, а я тебе говорю ты много болтаешь смысл советовать и открывать свой рот, если ты не в состоянии выложить код прямо сейчас.
     
    #42 pinokio, 1 авг 2016
    Последнее редактирование: 1 авг 2016
  18. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Кто тебе сказал, что я, тебе что - то должен? У тебя каша в голове, ты посмотри, что ты пишешь.
    Я тебе четко объяснил и сформулировал решение задачи, я не обязан его писать за-тебя, если у меня нет желания писать скрипт за тебя, а совет дать для того, чтобы ты поумнел, задумался и воспользовался им для изучения и написания скрипта.
    К тому же, твое фырканье и троллинг - как дикарь залетел в тему и начал в ней срать, - пора банить.
     
  19. pinokio

    pinokio Новичок

    С нами с:
    25 июл 2016
    Сообщения:
    160
    Симпатии:
    6
    @rodent90 знаешь что ты написал? бред ты написал, если ты считаешь что этого достаточно чтобы чувак который задал здесь вопрос, то ты написал бред.
    Ты прав не поверю.
    Ты сам себе веришь то?
    Мне кажется, ты врёшь сам себе, потом искренне веришь в это, а потом навязываешь это другим.
    Да ну?

    А кто тебе сказал что я от тебя что то требую, не чё не попутал ?

    А я не просил писать за меня скрипт, у меня всё классно работает и без твоей тупой фантазии, я тебе сказал покажи вариант своего решения.
    На что ты агрессивно среагировал, а значит у тебя нет подобных даже скриптов, значит кто ты? (********)
    Отгодай ответ под звёздочками.

    Серьёзно?
     
  20. Schrodinger

    Schrodinger Новичок

    С нами с:
    8 июн 2016
    Сообщения:
    40
    Симпатии:
    5
    @pinokio
    я написал регистрацию улучшенную
    PHP:
    1. include "kvl.php";
    2.  
    3. if ( @( strlen($name = trim($_REQUEST['name'])) && strlen($pass = trim($_REQUEST['pass'])) ) ) {
    4.     $users_au = new \Reader\MemoryKeyValueList( __DIR__ . "/users_au.list" );
    5.     $au = $users_au[$name] === $pass;
    6.     unset($users_au);
    7.     if ( $au ) {
    8.         echo "YES\n";
    9.     } else {
    10.         echo "NO\n";
    11.     }
    12. }
    13.  
    14. // ... регистрация
    15.  
    16. if ( @( strlen($name = trim($_REQUEST['name'])) && strlen($pass = trim($_REQUEST['pass'])) ) ) {
    17.     $users_au = new \Reader\MemoryKeyValueList( __DIR__ . "/users_au.list" );
    18.     if ( !preg_match("~^\w{4,12}$~D", $name) ) {
    19.         exit(sprintf('Недопустимое имя "%s" пользователя.', $name));
    20.     }
    21.     if ( !preg_match("~^\w{4,12}$~D", $pass) ) {
    22.         exit(sprintf('Недопустимый пароль "%s" пользователя.', $pass));
    23.     }
    24.     if ( $users_au[$name] !== null ) {
    25.         exit(sprintf('Пользователь "%s" уже существует.', $name));
    26.     }
    27.     $users_au[$name] = $pass;
    28.     echo "Успешно.";
    29.     exit;
    30. } else {
    31.     exit(sprintf('Недопустимый логин или пароль пользователя.'));
    32. }
    --- Добавлено ---
    для работы надо https://github.com/GloryMind/KeyValueList-emulate
     
    pinokio нравится это.
  21. pinokio

    pinokio Новичок

    С нами с:
    25 июл 2016
    Сообщения:
    160
    Симпатии:
    6
    Что загуглить, чтобы посмотреть что это ? Мне интересно не пойму как ты массив получил. Эта функция она дефолтная или же это библиотека подключаемая ?
     
  22. Schrodinger

    Schrodinger Новичок

    С нами с:
    8 июн 2016
    Сообщения:
    40
    Симпатии:
    5
    очевидно же
     
  23. pinokio

    pinokio Новичок

    С нами с:
    25 июл 2016
    Сообщения:
    160
    Симпатии:
    6
    @Schrodinger если бы мне было очевидно, я бы не уточнял.
    --- Добавлено ---
    что за libe ?
     
  24. Schrodinger

    Schrodinger Новичок

    С нами с:
    8 июн 2016
    Сообщения:
    40
    Симпатии:
    5
  25. pinokio

    pinokio Новичок

    С нами с:
    25 июл 2016
    Сообщения:
    160
    Симпатии:
    6
    Но это ппц ужас, для создания авторизация ещё и библиотеку подрубать какую нибудь. Чисто ради иследовательских целей работы можно, но в боевом режими наврятли кто-то авторизацию будет так делать, когда уже есть базы данных.... Ну или если придётся работат ьс файлами как то по крутому, но такое это редко...
    --- Добавлено ---
    @Schrodinger через чур как то 1443 строки... Для того чтобы сделать то что уже возможно с помощью php, сомнительное удовольствие.... Не увидел описание библиотеки даже комментариев в ней.