За последние 24 часа нас посетили 59856 программистов и 1770 роботов. Сейчас ищут 839 программистов ...

Костыль или нет=)

Тема в разделе "Беседы", создана пользователем Qumo, 9 фев 2016.

  1. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Итак, такой код из functions.php:
    Код (PHP):
    1. function get_images()
    2.     {    
    3.     $path_s = 'uploads/photos/thumb';
    4.     $file = scandir($path_s);
    5.     if (false !== $file) {
    6.             $file = preg_grep('/\\.(?:png|gif|jpe?g)$/', $file);
    7.                 foreach ($file as $image_s)
    8.                     $images_small[] = $path_s.'/'.$image_s;
    9.         }
    10.         
    11.         $path_b = 'uploads/photos';
    12.         $files = scandir($path_b);
    13.         if (false !== $files) {
    14.             $files = preg_grep('/\\.(?:png|gif|jpe?g)$/', $files);
    15.                 foreach ($files as $image_b)
    16.                     $images_big[] = $path_b.'/'.$image_b;
    17.         }
    18.         return array($images_small, $images_big);
    19.     }
    Юзаем в другом файле так:
    Код (PHP):
    1. <?php 
    2.         list ($img_s, $img_b) = get_images();
    3.         $b = 0;
    4.         $s = 0;
    5.         $count_b = count($img_b);
    6.         $count_s = count($img_s);
    7.         if (!empty($count_b) and ($count_s)){
    8.         while($b < $count_b and $s < $count_s){
    9.         echo '<a href='.$img_b[$b].' rel="lightgallery[photo]" title="Leaves after rain"><img src='.$img_s[$s].' class="katalog__preview" alt="2414"/></a>';$b++;
    10.         $s++;}}
    11.                 
    12.             ?>
     
  2. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Код (PHP):
    1. $count_b = count($img_b);
    2. if (!empty($count_b) and ($count_s)){ 
     
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а надо загруженные фотки в одном формате сохранять, тогда не придётся париться вообще такими мелочами, и в базу писать кто загрузил, видна ли и т.п. =)
     
  4. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Грузит 1 человек - админ=)Тут подключен скрипт lightgallery. Он выводит по порядку миниатюры, а по клику на миниатюру, соответственно большую загружает=) Есть тут такой баг, что он в линию не выводит 4 миниатюры, хоть они и влезают по размерам контента=)

    Добавлено спустя 19 секунд:
    А что здесь не так?=))
     
  5. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    по сути тут написано немного через жопу, но работать будет =)) Просто это писал человек, который не понимал, что писал.
     
  6. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    у меня нет ни куки ни сешшон, но если бы были, то что там?
     
  8. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    $_COOCKIE:
    Код (PHP):
    1. _ym_uid    
    2. string(19) "1454791235257947935"
    3. _ym_isad    
    4. string(1) "1"
    5. session    
    6. string(189) "2d79b0d7100cc5bfc38040209ec0da64070513c4~YToyOntzOjExOiJsYXN0X2FjdGl2ZSI7aToxNDU1MTg1NzU3O3M6MTY6ImNhcHRjaGFfcmVzcG9uc2UiO3M6NDA …"
    Там же внизу на темном фоне написано белыми Environment=)
     
  9. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  10. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Это я к тому, что он багнутый=)

    Добавлено спустя 27 минут 22 секунды:
    Код (PHP):
    1. <?php 
    2.         list ($img_s, $img_b) = get_images();
    3.         $b = 0;
    4.         $s = 0;
    5.         $count_b = count($img_b);
    6.         $count_s = count($img_s);
    7.         if (!empty($count_b) and ($count_s)){
    8.         while($b < $count_b and $s < $count_s){
    9.         echo '<a href='.$img_b[$b].' rel="lightgallery[photo]" title="Leaves after rain"><img src='.$img_s[$s].' class="katalog__preview" alt="2414"/></a>';$b++;
    10.         $s++;}}
    11.  ?>
    Это я писал=)))) Не ну я вот так его себе представляю:
    1) строка- записываем в переменные за одну операцию то, что вернула функция.
    2) Тут понятно.
    3) Тут тоже. Хотя мне уже кажется, что она лишняя=) можно было и одной обойтись=)
    4) Записываем в переменную $count_b, количество элементов в массиве.
    5) Тоже самое, но в другую.
    6) Делаем проверку, не пустые ли переменные $count_b и $count_s, если нет, то выполняем тело.
    7) Пока переменные меньше количества, которое находится в соответствующих переменных, выполняем тело
    8) Собственно тело цикла вайл, пока условие верно, мы делаем "эхо" и по5тфиксный инкремент каждый раз, пока вайл не вернет true.
    Мне кажется, что можно было второй переменной избежать, не?=)

    Добавлено спустя 8 минут 9 секунд:
    Да, переменную можно и одну заюзать=)) Код сократил=)
    Код (PHP):
    1. <?php 
    2.     list ($img_b, $img_s) = get_images();
    3.     $count_i = count($img_b);
    4.     if (!empty($count_i)){
    5.         for($i=0; $i < $count_i; $i++){
    6.             echo '<a href='.$img_b[$i].' rel="lightgallery[photo]" title="Leaves after rain"><img src='.$img_s[$i].' class="katalog__preview" alt="2414"></a>';
    7.     ;}}
    8. ?>
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    теперь познакомься с циклом foreach и будет красиво
     
  12. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    ну я с ним знаком=) а зачем он тут?=)
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а зачем тут фор, если ты нигде не используешь $i?
     
  14. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Ключ-то у переменных $img_b[$i] и $img_s[$i] =)
     
  15. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    блин, понял. А почему их два массива тогда? Нафик это? Возвращай один массив.

    Код (PHP):
    1. [
    2.   'small'=>'...',
    3.   'big'=>'...',
    4.   'description'=>'...',
    5. ]; 
     
  16. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Об этом я тоже уже подумал, но количество строк не уменьшится, имхо, а увеличится, не?=) Я делаю scandir двух папок в 1 функции, соответственно, функция возвращает 2 массива. Вот думаю, реал ее сократить?
    Код (PHP):
    1. function get_images()
    2.     {    
    3.     $path_s = 'uploads/photos/thumb';
    4.     $file = scandir($path_s);
    5.     if (false !== $file) {
    6.             $file = preg_grep('/\\.(?:png|gif|jpe?g)$/', $file);
    7.                 foreach ($file as $image_s)
    8.                     $images_small[] = $path_s.'/'.$image_s;
    9.         }
    10.         
    11.         $path_b = 'uploads/photos';
    12.         $files = scandir($path_b);
    13.         if (false !== $files) {
    14.             $files = preg_grep('/\\.(?:png|gif|jpe?g)$/', $files);
    15.                 foreach ($files as $image_b)
    16.                     $images_big[] = $path_b.'/'.$image_b;
    17.         }
    18.         return array($images_small, $images_big);
    19.     }
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    читаемость повысится - это факт. Мозги расслабятся - это тоже большой плюс. У тебя один массив и в каждом его отдельном члене живёт вся информация по картинке. Можно даже отрисовку отдавать в другую функцю просто форычем скармливая айтем. Проще на бошку ложится такой код.
     
  18. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Ну да, как вариант=)
     
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    как правильный вариант, открывающий дорогу к лёгкому кодингу.
     
  20. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Всем привет=) Ребята, а mysqli_real_escape_string нужно использовать при выводе или вводе данных из БД? Или в обоих случаях?
     
  21. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вводе, при выводе надо использовать там где надо эскейпинг хтмл - htmlspecialchars()
     
  22. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Ок, спасибо за такой быстрый ответ=) А вот что лучше юзать htmlspecialchars() или htmlentities()? Или они одинаковы?
     
  23. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    они не одинаковы. используй что советуют.
     
  24. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Спасибо=) Просто я действительно думал, что они идентичны=)
    И еще:
    mysqli_real_escape_string
    приведение к типу
    htmlspecialchars()
    защищают ли от SQL Injection?
    Конечно лучше была бы ссылка на информацию по защите от некоторых видов инъекций, которую вы считает действительно достойной для прочтения. А то прочту где-нибудь что-то типа от Могучего Попова и капец=))
    Код (PHP):
    1. $result = mysqli_query($db, "SELECT * FROM `table`") or die("Ошибка: " . mysqli_error($db));
    2. if ($result) {
    3.     while($row = mysqli_fetch_assoc($result))
    4.     $item[] = $row;
    5. }
    Нужно тут приводить к типу вот так?
    Код (PHP):
    1. $item[] = (array)$row;
     
  25. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а как ты сам думаешь? какого типа данные возвращает использованная функция?