• Как работать с большими массивами?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Слышал, что есть такая штука как разбивка массивов на под массивы, что дает возможность уменьшить нагрузку и увеличить производительность.

    Это какая-то адова ересь.
    Разбивка на подмассивы только увеличит нагрузку и ухудшит производительность.
    поскольку помимо вместо того чтобы сразу взять и обработать массив мы сначала зачем-то разобьем его на куски, а потом будем писать вложенный цикл, чтобы перебрать те же самые данные, которые у нас уже были.

    array_chunk может использоваться только для удобства, когда нам надо вывести массив ровными кусочками. Да и то можно обойтись без разбивки, а вывести все кусочки в одном цикле.
    Ответ написан
    Комментировать
  • Как в PHP вычисляется count()?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    второе
    потому что там дураков нет, каждый раз пересчитывать одно и то же.
    Ответ написан
    Комментировать
  • Как отсортировать массив по двум критериям?

    0xD34F
    @0xD34F
    usort($arr, function($a, $b) {
      $t = strcmp($a['type'], $b['type']);
      return $t ? $t : $a['id'] - $b['id'];
    });
    Ответ написан
    Комментировать
  • Зачем нужны абстрактные классы (PHP)?

    У разных языков по разному. Например в Java можно реализовывать кучу интерфейсов, но нельзя реализовать множественное наследование не больше 3-ех наследников и с помощью интерфейсов решают это.

    Интерфейс нужен обычно, когда описывается только интерфейс (тавтология). Например, один класс хочет дать другому возможность доступа к некоторым своим методам, но не хочет себя "раскрывать". Поэтому он просто реализует интерфейс.

    Абстрактный класс нужен, когда нужно семейство классов, у которых есть много общего. Конечно, можно применить и интерфейс, но тогда нужно будет писать много идентичного кода.

    Пример: Абстрактный класс заведомо не будет запрошен как объект. К примеру абстрактный класс - Транспорт: Но все его наследники будут Автомобилем, краном, лодкой, самолет и т.д. Например вы заведомо знаете, что весь транспорт будет двигаться. И вы объявляете абстрактный метод(движение) в абстрактном классе, который нужен будет 100% всем наследникам т.е. без движения это уже не транспорт и новый наследник обязан будет реализовать это. В самом же абстрактном классе, есть другие поля и свойства, которые будут унаследованы. Ну например мощность двигателя(очень грубо), или то что их роднит.
    Ответ написан
    2 комментария
  • Какие книги по SOLID принципам стоит прочитать?

    @ilitaexperta
    Никакие. SOLID это мусор. Встречал много людей, любящих рассуждать об архитектуре. Их всех объединяет одна вещь - они не могут спроектиоровать и написать с нуля систему.

    Потому что чтобы проектировать нужно иметь практический опыт, банально видеть много хороших и плохих примеров кода\архитектуры и самому писать крупные проекты с нуля, а не кусочки в составе команды.

    Вам же советую больше заниматься практикой, а не мусорные книжки читать. У вас сама постановка вопроса неправильная. Какую нафиг книгу? Все что можно узнать о SOLID - гугится в википедии за 15 секунд.

    Вообще лучше не думайте об архитектуре, просто делайте проекты. Первые несколько раз получится дерьмо, зато потом заткнете за пояс любого знатока значения буковок из SOLID
    Ответ написан
    Комментировать
  • Как извлечь данные из двухмерного массива и записать их на одной строке?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Привести массив к удобному виду и в цикле вывести строки:
    // convert array to apopriate form
    $name_colors = array_combine(
    	array_values($arr['name']),
    	array_values($arr['color']),
    );
    
    // print select options
    foreach($name_colors as $name=>$color) {
    	printf('<option name="chapter" style="color:%s" class="user-chapters" >%s</option>'.PHP_EOL, $color, $name);
    }


    run PHP online
    Ответ написан
    Комментировать
  • Как правильно сохранять сессию в куки?

    serginhold
    @serginhold
    Ты положил болт на безопасность, сделав авторизацию по куке которая равна id пользователя.
    Я допустим захожу на твой сайт, захожу в настройки браузера и ставлю твою куку, допустим id=1, и так я зашёл под админом на твой сайт, или просто под каким-то другим пользователем. Вопрос только в подборе id.

    По этому если хочешь сделать такую авторизацию, нужно чтобы в куках был ничем не связанный с пользователем токен входа.

    Ввел юзер логин/пароль, если все ок, создаёшь какую-то белеберду, типа
    token = md5(salt . rand() . id) // эта часть твоя фантазия :)
    сохраняешь ее и в куку пользователя, и в базу.
    Когда пользователь заходит на сайт, берешь эту куку и сверяешь со значение в базе для этого пользователя. Всё.
    Ответ написан
    1 комментарий
  • Как админы сайтов узнают пароли пользователей, если пароли в бд захешированы?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Пароли хешируют очень редко, даже в крупных конторках. Часто вижу в новостях утечки данных в крупных компаниях, и там оказывается что пароли в базе хранились в открытом виде.

    Как защитить пароли пользователей и при этом иметь к ним доступ?
    Используйте Соль
    Ответ написан
    2 комментария
  • Что нужно знать для backend разработки?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Выучите PHP.
    99% открытого бэка - написано на нём.
    Ответ написан
    Комментировать
  • Как отправить данные на сервер с Ajax на чистом JavaScript?

    @zkrvndm
    Софт для автоматизации
    Отправку данных делаете так:
    spoiler
    // Ждем когда элементы на странице прогрузятся:
    
    document.addEventListener('DOMContentLoaded', function() {
    
    	// Вешаем на кпопку обработчик клика, чтобы при каждом клике
    	// сразу запускалась функц я dataSend отвечающая за отправку данных:
    	
    	document.querySelector('.button').addEventListener('click', dataSend);
    	
    });
    
    // Функция для отправки данных на сервер:
    
    async function dataSend() {
    
    	// Получаем данные с нужных нам полей в переменные:
    	
    	var loginValue = document.querySelector('.login').value
    	var emailValue = document.querySelector('.email').value
    	var passwordValue = document.querySelector('.password').value
    	var conf_passwordValue = document.querySelector('.conf_password').value
    
    	// Создаем объект с данными:
    
    	var data = {
    		'login': loginValue,
    		'email': emailValue,
    		'password': passwordValue,
    		'conf_password': conf_passwordValue
    	}
    
    	// Конвертируем объект в JSON:
    
    	var json = JSON.stringify(data);
    
    	// Отправялеям полученный JSON на сервер обычным POST-запросом:
    
    	var response = await (await fetch('https://yousite.ru/handler.php', {
    		'method': 'POST',
    		'headers': {
    			'Content-Type': 'application/json; charset=utf-8'
    		},
    		'body': json
    	})).text();
    
    	// Выводим ответ сервера в консоли:
    
    	console.log('Ответ сервера:');
    	console.log(response);
    
    }

    Замените только ссылку на php-обработчик на свой. Далее, принимать данные отправленные, как JSON надо по другому. Пример получения данных отправленных, как JSON:
    spoiler
    <?php
    
    // Включим показ ошибок:
    
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    
    // Считываем полученный JSON:
    
    $json = file_get_contents('php://input');
    
    // Раскодируем JSON в массив:
    
    $array = json_decode($json, true);
    
    // Выведем массив, чтобы посмотиеть, что в нем:
    
    header('Content-Type: text/plain; charset=UTF-8'); // Указыавем браузеру, что ответ будет обычным текстом
    echo "Из браузера получены следующие данные:\n"; // Выведем текст-предупреждение
    print_r($array); // Выведем все, что находится в массиве
    Ответ написан
    7 комментариев
  • Как создать HTML тег через js?

    SagePtr
    @SagePtr
    Еда - это святое
    Через DOM:
    var div = document.createElement('div');
    div.innerHTML = "Hello World";
    document.body.appendChild(div);
    Ответ написан
    Комментировать
  • Как удалить элемент на чистом JavaScript?

    @YNile
    JS Developer
    var element = document.getElementsByTagName( "p" )[0];
    element.parentNode.removeChild(element);
    Ответ написан
    Комментировать
  • Как удалить элемент на чистом JavaScript?

    @balamyt92
    ; select * from users; --
    getElementsByTagName возвращает массив.

    так сработает.

    document.getElementsByTagName( "html" )[0].remove();
    Ответ написан
    3 комментария
  • Как убрать правую панель с кодом VS Code?

    notiv-nt
    @notiv-nt
    Как ваше ничего? Да, моё тоже
    ctrl + shift + p > vtmi
    Ответ написан
    Комментировать