Часто необходимо вместе с GET / POST запросом отправить свои заголовки. 

Пример:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.mysite.ru/api.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//заголовки:
$headers = [
'testHeader: value',
'Accept-Encoding: gzip, deflate',
'Accept-Language: en-US,en;q=0.5',
'Cache-Control: no-cache'
];

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
curl_close ($ch);

testHeader - пример кастомного заголовка, ниже для примера приведены несколько стандартных. 

В Laravel валидация картинок происходит достаточно просто. 

Код-пример: 

    $data = $request->only('file');
$file = $data['file'];
$fileArray = array('image' => $file);
$maxSize = 1024; //kb

$allowedTypes = 'jpeg,jpg,png,gif';

//правила валидации:
$rules = array(
'image' => 'mimes:' . $allowedTypes . '|required|max:' . $maxSize
);

$validator = Validator::make($fileArray, $rules);

if ($validator->fails())
{
//если проверка не пройдена
} else
{
//проверка пройдена и можно сохранять картинку
};

Где:

$maxSize - максимальный “вес” картинки в килобайтах

$allowedTypes - через запятую можно указывать разрешенные расширения файлов. 

required - если картинка обязательна

Чтобы вычислить для строки хэш с форматом SHA256 в PHP нужно использовать функцию hash:

$myString = 'test';
$result = hash('sha256', $myString);

где 

$myString - строка, которую необходимо закодировать. 

Первый параметр, передаваемый в функцию hash - это алгоритм хеширования, он может быть и другим, к примеру "md5", "sha1", "haval160,4" и т.д. 

Узнать все доступные алгоритмы можно с помощью функции hash_algos()

Чтобы input в  html форме принимал только картинки, достаточно прописать это с помощью атрибута accept.

В данном случае перечислим все варианты вручную (удобно, когда нужно разрешить определенные форматы - лишние можете просто удалить из списка):  

<input type="file" name="example" 
accept="image/png, image/gif, image/jpeg" />

Есть более короткий вариант записи (удобно, когда можно использовать любые картинки):

<input type="file" name="example" accept="image/*" />

Не забудьте, что совместно с этим все равно необходима валидация!

С появлением телефона Xiaomi (Redmi note 9 Pro) появилась проблема - при попытке подключиться к любой публичной сети телефон к ней подключался, но не получалось открыть страницу авторизации. Чаще всего люди сталкиваются с этой проблемой в метро или в аэропорту. 

Существующие решения в сети ничего не дали. 

Методом проб и ошибок удалось решить эту проблему так:

  1. Подключитесь к Wi-fi свободной сети.
  2. Необходимо открыть настройки Wifi в телефоне (Настройки - Wi-fi).
  3. Далее необходимо нажать на кружок напротив выбранной сети, чтобы зайти в настройки:

...

Для замены ВНЖ со сроком действия на вид на жительство без срока действия необходимо: 

  • Паспорт + нотариально заверенный перевод паспорта (лучше всех страниц)
  • Вид на жительство + обычные копии (основная страница + прописка)
  • Отрывная часть бланка уведомления о подтверждении проживания за прошлый год (оригинал + копия)
  • Квитанция об оплате гос. пошлины (5000 руб.)
  • 4 личных фото 35 * 45 мм, матовые!
  • Заполненное заявление

Оригиналы документов вернут после просмотра вернут.

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

Образец доступен тут:


В миграционном центре Москвы (Сахарово) выдали такой образец для заполнения (для замены вида на жительства со сроком действия на бессрочный): 

Желательно не надеяться на то, что анкету выдадут на месте и заполнить ее заранее. 

Помните, что подпись и дату ставят в присутствии должностного лица!

SVG иконка меню в мобильных версиях сайта:

Код:  

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1.2em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1536 1280"><path d="M1536 1088v128q0 26-19 45t-45 19H64q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45zm0-512v128q0 26-19 45t-45 19H64q-26 0-45-19T0 704V576q0-26 19-45t45-19h1408q26 0 45 19t19 45zm0-512v128q0 26-19 45t-45 19H64q-26 0-45-19T0 192V64q0-26 19-45T64 0h1408q26 0 45 19t19 45z" fill="currentColor"/></svg>

Чтобы полностью очистить кеш в Laravel достаточно запустить 4 команды artisan:

php artisan cache:clear
php artisan route:clear
php artisan config:clear
php artisan view:clear

Первая чистит кеш, вторая - маршруты, третья - конфигурацию, четвертая - кеш от вьюшек. 

Экспорт

Для того, чтобы экспортировать MySQL таблицу из командной строки необходимо выполнить команду: 

mysqldump -u root -p database_name > file_name.sql

где:

  • root - имя пользователя (потом отдельно будет запрошен пароль)
  • database_name  - название базы данных, которую необходимо экспортирвоать
  • file_name.sql - название будущего sql файла

Импорт

Для того, чтобы импортировать MySQL таблицу из командной строки необходимо выполнить команду: 

...

Результат:

Код:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="35" height="35" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path fill="currentColor" d="M13.41 12l4.3-4.29a1 1 0 1 0-1.42-1.42L12 10.59l-4.29-4.3a1 1 0 0 0-1.42 1.42l4.3 4.29l-4.3 4.29a1 1 0 0 0 0 1.42a1 1 0 0 0 1.42 0l4.29-4.3l4.29 4.3a1 1 0 0 0 1.42 0a1 1 0 0 0 0-1.42z"/></svg>

 

 

Появилась проблема, что после обновления Android до версии 11 перестала работать шторка уведомлений [телефон - Realme 6 pro, но возможно подойдет и для других].

Как удалось починить: 

Для начала нужно проверить, что  в настройках телефона активен данный пункт:

Настройки - Уведомления и строка состояния - “Потяните вниз на экране блокировки чтобы открыть панель уведомлений”

Потом ставим телефон на блок. В заблокированном режиме пробуем вытянуть шторку. 

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

 

Если необходимо отправить часть формы, используя Ajax, можно перечислить все необходимые поля вручную. Но это долго и не удобно. 

Проще  автоматически найти все поля в нужном блоке, сериализовать их и затем отправить.

Допустим, есть такая HTML форма: 

<form method="post">
<input type="text" name="aaa" />
<input type="text" name="bbb" />

<div id="myBlock">
<input type="text" name="ccc" />
<input type="text" name="ddd" />
<input type="text" name="eee" />
</div>
</form>
...

В дополнении к заметке, где описано, как отправить часть формы по Ajax:


иногда необходимо отправить данные в формате JSON. 

Как конвертировать в данный формат:

var options = $('#myBlock').find('input, textarea, select').serializeArray();
var optionsJson = JSON.stringify(options);

Если необходимо прокрутить страницу до какого-то определенного элемента, то поможет данный код jQuery: 

$("html, body").scrollTop($('#myElement').offset().top);

где myElement - это ID вашего элемента, до которого нужна прокрутка. 

Обычно такое поведение кнопки нужно для того, чтобы форму не отправляли повторно несколько раз. 

Чтобы сделать кнопку на HTML форме не активной (disable) , нужно добавить к кнопке небольшой обработчик события onclick:

<input type="submit" name="send_form" value="Отправить"
onclick="this.form.submit(); this.disabled=true;" />

Именно этот код onclick="this.form.submit(); this.disabled=true;" отвечает за то, что после нажатия кнопка сразу становится не активна и затем отправляется форма.

Но есть подводные камни, которые могут сделать этот код не работающим, а именно:

...