За последние 24 часа нас посетили 19373 программиста и 1666 роботов. Сейчас ищут 1683 программиста ...

Система друзей и ее реализация php mysql

Тема в разделе "PHP для новичков", создана пользователем _ne_scaju_, 14 мар 2017.

  1. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @_ne_scaju_, подожди смеяться.
    --- Добавлено ---
    @_ne_scaju_, твой класс я не смотрел, возможно завтра. Попробуй прикрутить.
     
    _ne_scaju_ нравится это.
  2. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mahmuzar
    Не я смеюсь из-за того что не понимаю) Честное слово)
    Да и смайл этот прикольный что самому хочется поставить его :D
    А какой ресайз попробовать прикрутить?
    Буду завтра пробовать прикрутить)))
     
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Чтобы положить картинку туда, откуда её веб-сервер отдаст, нужно знать откуда вебсервер картинки отдаёт.
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    :D
    [​IMG]
     
    _ne_scaju_ нравится это.
  5. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mahmuzar
    :D До завтра если конечно будет время у тебя!
     
  6. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Всем привет, кто смотрел ресайз и класс который я скинул, как вам они хорошие?
     
  7. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Можно вопрос задам, тут стоит такая фишка:
    Если пользователь грузит точно такую картинку то есть с одинаковым названием, Например foto111.jpg и foto111.jpg то в базе md5 шифрует тот же самый хеш для этих двух картинок, не меняется на другой, Если я картинку удалю и попробую эту же картинку залить опять, то хеш с генерируется опять тот же самый.
    А надо что бы он создавал разный хеш не зависимо загружали вы эту картинку ранее, не зависимо что одинаковое название у них и т.д. что бы все время менялся, а не подставлялся тот же самый хеш что с генерировали недавно.
    Пользуюсь функцией которую мне посоветовали здесь $name = md5_file($filePath);
    Как можно исправить? вот таким образом можно?
    $name = md5_file(md5($filePath));
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты хэш файла считай, а не названия. или генери рандомный номер.
    --- Добавлено ---
    ну и заебись. пока у тебя посещаемость до миллиона не выросла и из сервака дым не пошёл - ты вполне можешь этим пользоваться.
     
  9. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    Генери рандомный примерчик покажи)))
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    почитай сначала сам. Это ж простая штука. Ищи. Всё твои задачи на ближайшие три года - Это повседневные задачи Для пхп, которые уже сто раз были кем-то решены. Учись искать решение.
     
    #485 igordata, 13 апр 2017
    Последнее редактирование: 13 апр 2017
  11. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
  12. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    Вот нашел, такой типа функции, может они помогут мне в решении?
    $filename = substr(md5(microtime() . rand(0, 9999)), 0, 20);
    Попробовал, рандомный текст получается, но на много ли хватит, загружаемых файлов?
     
  13. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    кол-во символов в словаре, нужно возвести в степень по длине строки,
    если у тебя md5, то алфавит a-f и 0-9, будет 16 и длина md5 это 32 символа, будет 16^32 это очень большое число

    https://ru.wikipedia.org/wiki/Разме....BE.D1.80.D0.B5.D0.BD.D0.B8.D1.8F.D0.BC.D0.B8

    главное перед записью файла, проверяй свободно ли имя
     
    _ne_scaju_ нравится это.
  14. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Хотел у вас спросить, а как можно проверить файл перед загрузкой на имеющиеся имя? $nane = md5_file($filepath);
    Представьте ситуацию пользователь один грузит файл с именем image1
    И пользователь два грузит с таким названием имя image1 а эта функция md5_file с генерирует тот же хешь что и для первого что второго файла. Как можно предусмотреть и предупредить пользователя что файл такой существует?
    Пробовал сделать так:
    if($name = md5_file($filepath){
    echo 'файл с таким именем существует';
    }else{
    'загрузка успешно завершена';
    }
    Почему то проверка не проходит, что ж не так.
    Может вы мне подскажите где эту проверку надо правильно делать. Файл который я использую выше в теме загружен.
     
    #489 _ne_scaju_, 14 апр 2017
    Последнее редактирование: 14 апр 2017
  15. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а посчитай
    --- Добавлено ---
    тебя вообще не должно волновать имя файла. никогда. забей. это вообще просто так. даже не смотри на него. пользователь присылает тебе файлы. не имена. файлы. а как он там их у себя называет - сто человек - сто разных названий одного файла. Забей
     
  16. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    Как это не волнует. Я гружу картинку с названием imc и генерю хеш для него. А если я гружу опять эту же картину то хеш для этой картинки генерится тот же самый. И не предупреждает что эта картинка уже была загружена.
     
  17. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Вообще, это не правильно, почему - описано в доке к ноде, но если кратко: то что ты проверил свободно ли имя перед записью ещё ничего не гарантирует. Прямо в момент между проверкой и созданием файла кто-то другой может создать файл с точно таким же именем и у кого-то обязательно случится облом. По хорошему создавать файл надо открывая его через fopen('filename', 'x') что бы в случае наличия файла возникала ошибка, беда же в двух вещах:
    1. Вместо эксепшена она выкидывает ворнинг, который тут явно не к месту.
    2. Хз как дальнейшая логика реализована в потрохах, не копался.

    Радует только, что если нормально сгенерировать имя, вероятность такой коллизии стремится к 0, но всё же )
    --- Добавлено ---
    @_ne_scaju_ чувак, а ты не пробовал доку читать? md5_file делает хэш файла, а не его имени.
     
    denis01 нравится это.
  18. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @romach
    А надо сделать хеш имени а не файла? Читал вроде как бы.
    И выбираю правильный метод.
    Короче не понял вас...
    Меня интересует вообще стоить ли использовать эту функцию md5_file
    Для генерации хеша?
     
    #493 _ne_scaju_, 14 апр 2017
    Последнее редактирование: 14 апр 2017
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    1. название не связано с содержимым файла.
    2. я ж сказал вроде, не пляши от названия, танцуй от содержания.
    --- Добавлено ---
    рейс кондишн
    --- Добавлено ---
    надо помнить о чем шел разговор два сообщения назад. хотя бы.
    --- Добавлено ---
    не первый раз

    обозначь критерии, тогда будет понятно
     
  20. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.557
    Симпатии:
    631
    md5_file() медленно и прожорливо. Но у вас есть такие данные, как размер файла, время загрузки, разрешение.
     
  21. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @[vs]
    Медленно и прожерливо в каком смысле? Очень медленно грузит и обрабатывает?
     
  22. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.557
    Симпатии:
    631
    @_ne_scaju_ у меня на сервере хэш 7.5 мб файла - 0.03 секунды. Столько же времени занимает 50.000 раз захэшировать обычную строку из нескольких символов.
    По памяти оказалось не прожорливо, эта функция не загружает файл в ОЗУ.
     
  23. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @[vs] в
    Так что можно её использовать смело? А я так не думаю, из-за одной причины. Вот может возникнуть ситуация такая:
    User1 загружает файл с названием любым например avatar.jpg
    User2 загружает файл с таким же названием avatar.jpg
    И у этих обоих юзеров будет создан один хеш, и если кто-то из них удалит файл то и у другого он пропадет.
    Может кто посоветует что-то оригинальней? Хорошую функцию? Или дополнить эту с сочетанием с другой.
     
  24. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.557
    Симпатии:
    631
    @_ne_scaju_ например добавлять к имени файла id пользователя с разделителем, как это делает вконтакт?
     
    _ne_scaju_ нравится это.
  25. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @[vs]
    Это помогло добавить id пользователя, спасибо, сделал так:
    PHP:
    1. $name = md5_file(filepath).$_SESSION['user_id'].$i;$i++;
    А вот на счет разделителя не понял вас, надо добиться чего чтобы было подчеркивание?
     
    #500 _ne_scaju_, 15 апр 2017
    Последнее редактирование модератором: 15 апр 2017