• Очистка html атрибутов

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

    //$date='2014-04-03 05:00:00'; //На любую дату
    $date = date('Y-m-d H:i:s'); //На сегодня
    $current_time = strtotime($date);
    echo date('d.m.Y',$current_time-(date('N',$current_time) - 1)*86400);
    Ответ написан
    Комментировать
  • Как развивать характерный программистам тип мышления?

    Все очень просто. Нужно понять основную идею программирования - это автоматизация.
    Каждый раз делая что-то вручную, думайте, как это автоматизировать - и в первую очередь это касается написания кода. Просто не пишите дважды принципиально одно и то же. Вот и все :-)
    Ответ написан
    Комментировать
  • Как передать данные в js файл?

    Если в lib у вас лежат библиотеки, то там код не должен быть привязан к конкретным данным, т.е. там либо список функций, либо классы.
    А вот в каком месте вы их вызываете?
    Ну и как вариант всегда в html передать эти данные

    <input type="hidden" id="xxx" value="2" />
    Ответ написан
    Комментировать
  • Почему не работает apache в локальной сети?

    Я бы сразу советовал для apache открыть мир виртуальных машин. Ставится за 10 минут VMWare Player + Ubuntu Server.
    Ответ написан
    Комментировать
  • MySQL, оптимизация запроса

    Мне кажется вам стоит считать количество картинок заранее: по триггеру или крону и все у вас будет!
    (ну раз вам так важна скорость).

    В любом случае, попробуйте заменить group by на вложенный подзапрос по __games_images, так хотя бы группироваться будет 1 таблица.
    С индексами все просто:
    Для каждого запроса нужно создать комбинированный индекс в таком порядке: сначала условия (ON и WHERE), затем группировка (если есть), затем сортировка.
    Ответ написан
    5 комментариев
  • Как поступать с тегами, которые генерируются БЭМ?

    А кто вам сказал, что БЭМ такая хорошая технология?)
    Ответ написан
    5 комментариев
  • Как реализовать отчет о доставке?

    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script><form>
    <div class="alert"></div>
    <input name="email" type="email" />
    <input type="submit" value="Отправить" />
    </form>

    $('form').submit(function()
    {
    $.post('mail.php',$(this).serialize(),function(response)
    {
    if(response.status=="success")
    {
    $('form .alert').html('Письмо отправлено');
    }
    else
    {
    alert('Ошибка ' + response.error);
    }
    },'json');
    return false;
    });


    mail.php
    $isCorrectEmail=filter_var($_POST['email'],FILTER_VALIDATE_EMAIL) ;
    if ( $isCorrectEmail &&  mail($_POST['email'], 'My Subject', 'My body text') ) {
      echo json_encode(array('status'=>'success'));exit;
    }
      echo json_encode(array('status'=>'error','error'=> ($isCorrectEmail ? 'Непредвиденная ошибка' : 'Неправильно заполнено поле email' )));exit;
    Ответ написан
    Комментировать
  • JQuery, обращение к элементу через атрибут data-*?

    @dedik Ну как вариант вы всегда можете дописать свой селектор (особенно если не важна скорость :-) Думаю в вашем случае - вы легко можете себе это позволить.

    jQuery.extend(jQuery.expr[':'], {  data: function (el,index,prop) {
        if (typeof(prop[3]!=undefined) && prop[3])
        {
            var attrs=prop[3].split('=');
            if ( $(el).attr('data-' + attrs[0]) && ( (attrs.length > 1 && $(el).attr('data-' + attrs[0])==attrs[1]) || attrs.length == 1 ) )
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        return false;    
    }});
    console.log($(':data(id=5)'));


    Только не забывайте делать селектор с контекстом, чтобы перебор был только в нужом месте, как писали выше, т.е.
    $(':data(id=5)', DIV_WITH_IMAGES)
    Ответ написан
    Комментировать
  • Как в Mysql получить массив в одном из полей?

    dev.mysql.com/doc/refman/5.0/en/data-type-overview.html

    Как видите, массивов тут нет.
    Так что либо делайте собственную реализацию (сериализуйте, как подсказал @VitaZheltyakov), либо так как вы уже сделали - с нормализацией базы данных.
    Однако отмечу, что есть nosql-БД, которые будут поддерживать такой функционал из коробки, например mongodb. Однако это другой подход к архитектуре БД и работой с ней.
    Выбирайте :-)
    Ответ написан
    Комментировать
  • Как правильно использовать исключения?

    Тут достаточно просто все.
    Исключения помогают проскочить участок кода при выполнении определенных условий.
    Причем, при коде без вызовов функций - всегда можно заменить на if/else, но код будет многовложенным (один if в другом). Но такой код естественно давно никто не пишет.

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

    Идея же исключений такая:
    1. У нас есть алгоритм, который должен работать по заданной схеме. Мы нигде на уровне выше не проверяем корректность возвращаемых значений или правильность выполнения уровня ниже - он должен выполниться правильно или не выполниться. Это условие рождается из понимания инкапсуляции - каждый отвечает за свой кусок кода.
    2. Если в какой момент момент, метод (кусок кода), отвечающий за определенную функциональность понимает, что не может выполнить назначенную ему операцию - он сообщает об этом на уровень выше.
    3. Уровень выше может обработать исключительную ситуацию, либо (если не знает как) - передать исключение еще уровнем выше по стеку вызовов.

    Т.е. резюмирую: у нас есть код, который должен в 90% случаев обрабатываться по одному алгоритму и в 10% случаях могут возникать ситуации, когда этот алгоритм в одной конкретной части кода - пойдет по другому сценарию.
    Т.е. ваша задача писать код именно таким образом, чтобы исключения были лишь подстраховкой, а не частью основного алгоритма.

    Интересный момент реализации исключений в lisp: там можно выполнить код вызвавший исключение повторно (например попытаться подключиться к базе второй раз средствами самого исключения).
    Ответ написан
    Комментировать
  • Почему не сохраняются куки?

    Ошибки включены у вас? Возможно контент какой-то раньше заголовков отдается?
    Домен с которого вызывается страница тот же?
    Ответ написан
    7 комментариев
  • Какие права мне нужно поставить на папку?

    PHP работает с теми правами с которыми работает запускающий его процесс.
    Например, если вы запускаете из консоли или по крону
    php file.php
    то права будут того пользователя из под которого запущена консоль или чей crontab.
    Если php запускается Apache'м или Nginx'ом, то пользователь будет www-data.
    Обычно для перезаписываемых php-папок выставляют минимальные права с владельцем www-data.
    И cron настраивают именно для этого пользователя.

    P.S. Это все верно для *nix систем. для windows опять же важно кто запускает PHP, например IIS будет запускать его соответствующим пользователем.
    Ответ написан
    4 комментария
  • Как сделать чтобы скрипт продолжал выполнятся не смотря на ошибки?

    Во первых,

    ssl://jshop.cc:443

    читаем документацию

    Если установлена поддержка OpenSSL, можно использовать SSL или TLS протоколы соединений поверх TCP/IP при подключении к удаленному хосту.

    И здесь про установку
    www.php.net/manual/ru/openssl.installation.php

    Во-вторых,

    А что дальше в скрипте, т.е. дальнейшая работа, что, не зависит от выполнения fsockopen?

    В любом случае, есть несколько вариантов:

    1. Тупо не выводить ошибку, но знать о ней
    if ( ($handle = @fsockopen('ssl://jshop.cc',443,$url,$errno,$errstr)) === false)
    {
        //Здесь код в случае возникновения ошибки, ее описание лежит в $errstr
    }

    2. Переназначить обработчик ошибок для обработки Exception с помощью функции set_error_handler

    class ErrorException extends Exception{}
            function myErrorHandler($errno = null, $errstr = null, $errfile = null, $errline = null)
            {
                throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
            }
            set_error_handler('myErrorHandler');

    Это позволит не прерывать работу программы, а обработать нужный кусок кода

    try
    {
    //Вызов fsockopen
    }
    catch(ErrorException $e)
    {
    //Тут например логирование $e->getMessage();
    }
    Ответ написан
    Комментировать
  • Миниатюрные изображения

    $imfile
    $infile

    Включите показ ошибок
    ini_set('display_errors',true);error_reporting(E_ALL);
    Ответ написан
    2 комментария