Экранирование специальных символов в curl

Неожиданно подобного вида конструкция вызвала ошибку:

root@ares:~ # /usr/local/bin/curl -k -v --url 'https://dwedwed.do?userName=23уй3уй&password=wdedwe{dwe&orderNumber=00107103933&amount=5100&failUrl=http://edes.tv/client/fail.php&clientId=00107&returnUrl=http://bilewdis.tv/client/payok.php'
curl: (3) [globbing] unmatched brace in column 97
root@ares:~ #

Порыскал в интернетах, ничего толкового не нашел по этой ошибке.  А дело в простом — curl не экранирует специальные символы типа {. Чтобы всё работало, нужно добавить перед этим символом \

/usr/local/bin/curl -k -v --url 'https://swedwdded.do?userName=23уй3уй&password=wdedwe\{dwe&orderNumber=00107103933&amount=5100&failUrl=http://edes.tv/client/fail.php&clientId=00107&returnUrl=http://bilewdis.tv/client/payok.php'

Ubuntu синхронизация времени на сервере

Сначала установим ntp и ntppdate

sudo apt-get install ntp ntpdate

Синхронизируем время:

root@xn--90acbu5aj5f:/var/www# ntpdate -s ntp.ubuntu.com
root@xn--90acbu5aj5f:/var/www# date
Mon Feb 12 14:35:13 UTC 2018

Чтобы выставить часовой пояс, сервера можно выполнить:

root@xn--90acbu5aj5f:/var/www# sudo dpkg-reconfigure tzdata

Current default time zone: 'Europe/Moscow'
Local time is now:      Mon Feb 12 17:35:57 MSK 2018.
Universal Time is now:  Mon Feb 12 14:35:57 UTC 2018.

root@xn--90acbu5aj5f:/var/www# date
Mon Feb 12 17:36:00 MSK 2018
root@xn--90acbu5aj5f:/var/www#

 

Jquery и маска ввода телефона

К сожалению наиболее часто упоминаемый в «интернетах» плагин maskedinput не очень хорошо работает на мобильных устройствах. Адекватной заменой может служить плагин inputmask: https://github.com/RobinHerbots/Inputmask

Один огромный минус — уж очень «жирноват» плагин для простых задачь. Иногда лучше использовать «чистый» javascript:

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
    <input  value="+7(___)___-____">
    <script>
window.addEventListener("DOMContentLoaded", function() {
function setCursorPosition(pos, elem) {
    elem.focus();
    if (elem.setSelectionRange) elem.setSelectionRange(pos, pos);
    else if (elem.createTextRange) {
        var range = elem.createTextRange();
        range.collapse(true);
        range.moveEnd("character", pos);
        range.moveStart("character", pos);
        range.select()
    }
}

function mask(event) {
    var matrix = this.defaultValue,
        i = 0,
        def = matrix.replace(/\D/g, ""),
        val = this.value.replace(/\D/g, "");
        def.length >= val.length && (val = def);
    matrix = matrix.replace(/[_\d]/g, function(a) {
        return val.charAt(i++) || "_"
    });
    this.value = matrix;
    i = matrix.lastIndexOf(val.substr(-1));
    i < matrix.length && matrix != this.defaultValue ? i++ : i = matrix.indexOf("_");
    setCursorPosition(i, this)
}

    var input = document.querySelector("input");
    input.addEventListener("input", mask, false)
});
  </script>
</body>

</html>

Простой способ сохранить файл по нажатию кнопки на странице (HTML)

Задача: по нажатию кнопки на странице, чтоб вызывался диалог сохранения файла и собственно сохранялся произвольный файл с сервера.

Решение:

В коде html страницы упоминаем скрытую форму:

<form method="post" action="inc/csvExport.php">
	<input type="hidden" name="csvBuffer" id="csvBuffer" value="" />
</form>

Добавляем туда же обработчик нажатия вида:

    $("#viewwork").click(function(){       
            document.forms[0].method='POST';
            document.forms[0].action=save_file.php; 
            document.forms[0].target='_self';
            document.forms[0].submit();  	    	    
       return false;
    });

Ну код на сервере для:

save_file.php:

<?php

// Данный код создан и распространяется по лицензии GPL v3
// Изначальный автор данного кода - Грибов Павел
// http://грибовы.рф

$ex= "1;2;3;4;5;6;7";
 header("Content-type: application/msexcel");
    header("Accept-Ranges: bytes");
    header("Content-Length: " . strlen($ex));
    header("Content-Disposition: attachment; filename=rep_by_addr.csv");

?>

csvExport.php:

<?php

// Данный код создан и распространяется по лицензии GPL v3
// Изначальный автор данного кода - Грибов Павел
// http://грибовы.рф

header('Content-type: application/vnd.ms-excel');
if (isset($_GET["csv"])==true){
    header("Content-Disposition: attachment; filename=file.csv");
} else {
    header("Content-Disposition: attachment; filename=file.xls");
};
header("Pragma: no-cache");

$buffer = $_POST['csvBuffer'];

try{
    echo $buffer;
}catch(Exception $e){

}
?>

Жизнь замечательных грибов