• Точно и подробно про защиту от инъекций в php, mysql?

    @xfg
    Подготовленные запросы.

    Старайся вообще читать по меньше хабр и побольше документации от разработчиков инструмента, которым пользуешься. Хабр и другие блог платформы это субъективное мнение автора. Не надежный источник информации.
    Ответ написан
    3 комментария
  • Точно и подробно про защиту от инъекций в php, mysql?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    $login = trim($_GET['login']);
    $login = strip_tags($login);
    $login = mysqli_real_escape_string($mysqli, $login);

    Почему вы думаете, что нужно менять логин пользователя, если она захотел именно такой? хочет быть <script> - пусть будет. Не ограничивайте.

    нужно различать sql-инъекцию и xss-атаку
    т.е. если мы пишем в базу, то
    $login = mysqli_real_escape_string($mysqli, $login);
    query( insert into ... );

    Далее выводим на страницу
    $login = query( select from ... );
    echo htmlspeialchars($login);

    И все счастливы.

    Если у вас будет время, напишите, пожалуйста, как бы Вы написали данный код. Мне просто интересно, посмотреть на правильно реализованный код.

    Код писать лень, хотя я там выше в принципе его уже написал =) только вместо mysqli_real_escape_string в реальном коде я бы использовал подготовленные выражения (и PDO вместо mysqli, хотя тут наверное, дело вкуса).
    Ответ написан
    7 комментариев
  • Почему не обновляются данные, получаемые через ajax?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Скорее всего кэш браузера, самое простое добавить рандом к запрашиваемому url
    $.ajax({
            type: "GET",
            url: "icecast.php?" + Math.random(),
            async: true,
            jsonpCallback: "parseMusic",
            contentType: "application/json",
            dataType: "json",
            success: function(a) {
                $("#main-track-title").text(a.track_url)
            }
    });
    Ответ написан
    2 комментария
  • Как сделать проверку отправляемых данных формы при помощи ajax?

    orlov0562
    @orlov0562
    I'm cool!
    давай по-порядку

    >> каптча
    1) выводишь каптчу и поле для ввода каптчи
    2) выводишь тригер проверки каптчи, чаще всего это какая-нибудь кнопка (например "Скачать трек")
    3) в момент нажатия кнопки (или исполнения тригера), проверяешь каптчу. Тригером может быть что угодно, например event "blur", который срабатывает, когда теряется фокус с поля ввода каптчи..
    4) если плохой результат показываешь ошибку
    5) если все ок, значит делаешь действие

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

    1) делаешь кнопку (можно без формы), пусть это будет "Скачать"

    2) на кнопку вешаешь функцию:
    $('#btn').click(function(){
    ....
    // проверка каптчи
    // показ ошибки или скачивание файла
    ....
    });


    3) при нажатии на кнопку проверяешь каптчу
    4) если ошибка, показываешь сообщение, обновляешь каптчу и выходишь из функции:
    $('#btn').click(function(){
    ....
    if (!valid_captcha()) return false;
    // показ ошибки или скачивание файла
    ....
    });
    
    function valid_captcha(){
    var ret = false;
    // проверка каптчи
    return ret;
    }


    5) делаешь ajax запрос к скрипту на php, например к file.php , передаешь параметры какие-надо
    скрипт возвращает тебе путь к файлу на который ты переходишь с помощью метода:

    при отдаче файла, посылаешь заголовоки вида:
    Content-Type application/octet-stream
    чтобы форсировать вызов диалога "Сохранить как"
    сделатьэто можно как на стороне php так и на стороне веб-сервера, если редирект будет напрямую на mp3 файл

    >> Как мне запретить нажимать submit, если не введена капча, если капча была уже введена и кто-то нажимает снова на submit.

    P.S. Если все таки решил делать в форме, то тогда в случае ошибок ты можешь остановить выполнение вернув false в submit event-е, т.е.:

    <form action="http://google.com">
    <input type="submit">
    </form>
    
    <script>
    $('form').first().submit(function(){
        if (!confirm('Submit form?')) return false;
    });
    </script>
    Ответ написан
    Комментировать
  • Как заблокировать зеркало моего сайта?

    alsopub
    @alsopub
    Не видя обоих доменов сказать сложно, но у меня сложилось следующее впечатление.
    Когда-то существовал сайт "сайт-клон.рф" со своим контентом и располагался на ip адресе, который теперь у вас.
    Сайт заброшен, связь сайт-клон.рф -> ip осталась.
    Возможно его сделали специально, не знаю.

    Если ваш сайт динамический, просто сделайте проверку $_SERVER{'HTTP_HOST'} - www.softtime.ru/article/index.php?id_article=69
    Если домен не ваш - выдавайте любой код ошибки по желанию.
    Ваш сайт перестанет открываться по чужому домену.

    Или еще проще - настройте свои apache/nginx или что там у вас, чтобы они отвечали только по указанному host, а не как сейчас, в разделе default, то есть ваш сайт открывается даже если вбить его ip адрес.
    Ответ написан
    4 комментария
  • Как заблокировать зеркало моего сайта?

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

    Без суда не вытянешь и рыбки из пруда.
    Ответ написан
    8 комментариев
  • Динамическое создание input JS?

    @oleg_drozdov
    Получайте класс родительского инпута и данамично добавляйте его всем инпутам, которые будут создаваться.
    a.classList.add('some-class')
    Ответ написан
    Комментировать
  • Динамическое создание input JS?

    mannaro
    @mannaro Куратор тега JavaScript
    Умею профессионально гуглить
    1. при чем тут NodeJS?
    2. реализовать надо на чистом JS? Ибо это один из случаев, когда jQuery показывает себя с выгодной стороны. Однако, если он не подключен, то тянуть его ради этого не стоит.
    3. что значит в вашем понимании "стили"? Класс, ID, или атрибут style?
    Ответ написан
    1 комментарий
  • Как удалить два одинаковых элемента массива?

    allard
    @allard
    Серийный программист
    php.net/manual/ru/function.array-unique.php
    Должно помочь.

    Комментарий под постом написал, продублирую код сюда.
    $input = []; // ваш массив
    $result = [];
    foreach($input as $elem)
        $result[serialize($elem)] = $elem;
    $result = array_values($result); 
    var_dump($result); // то что вам нужно
    Ответ написан
    5 комментариев
  • Можно ли заменять html на стороннем сайте?

    orlov0562
    @orlov0562
    I'm cool!
    Как и писали выше, это можно сделать с помощью дополнения. В FF есть дополнение GreaseMonkey, которое позволяет выполнить клиентский (ваш) JS скрипт после загрузки страницы. В этом JS скрипте можно модифицировать данные так как Вам угодно. Например, я себе для Вконтакте, написал маленький скрипт позволяющий листать фотки скроллом мышки - удобно.
    Ответ написан
    Комментировать
  • Можно ли заменять html на стороннем сайте?

    zvermafia
    @zvermafia
    WebDev
    Можно написать расширение для браузера, чтобы он автоматически внес изменения к подгружаемым данным (html/css).
    Ответ написан
    Комментировать
  • Почему nvidia медленнее intel в Ubuntu Bumblebee?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Вы путаете теплое с мягким.
    Nvidia-prime - фича, которая появилась не так давно, работает только с проприетарным драйвером.
    Bumblebee - в целом делает то же, что и Nvidia-prime, но не требует перезапуска графического сервера, работает как с открытым, так и с проприетарным драйвером

    Если кратко - ставьте проприетарный драйвер (ибо открытый драйвер в Nvidia паршивый пока, в отличии от AMD, в ближайшее время улучшений существенных не ожидается, скорее ухудшения на новых картах) но при этом используйте Bumblebee.

    У меня на ноутбуке 780M, через Bumblebee играю на 4k мониторе (3840х2160 разрешение), 35-50 FPS (встроенная Intel HD4600 выдает всего 3-5 FPS) в Star Conflict на настройках выше среднего.

    Ubuntu 14.04

    Поставьте современную Ubuntu 15.04
    KernelDriver=nvidia-340

    Подключите репозиторий xorg-edgers, поставьте Nvidia 349.

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