• Как обновить значение в блоке с помощью js?

    dimastik1986
    @dimastik1986
    учусь
    1. Как мне кажется, вторая функция отправки не нужна, ведь обе функции ведут на один и тот де обработчик. У вас вообще все готово почти. Достаточно в updatePrice, туда же в запрос, просто добавить значение поля kupon и если нужно выполнять updatePrice при изменении kupon, отправляйте так же через on('change'. А в php обработчике, проверяйте наличие переменной kupon + что это не попытка подставить в ваш код что-то вредное, можно проверить регулярным выражением или хотя бы, что это не html код и прочее. Регулярные выражения для новичка не очень просто, однако они еще пригодятся и их придется учить. А до момента понимания, как писать регулярные используйте встроенные ф-ции и/или регулярные выражения найденные в сети.

    1.1. если вы используете .on('change', я бы советовал добавить проверку по маске купона на стороне пользователя с помощью js, чтобы скрипт не ломился отправлять и соответственно обрабатывать ненужные запросы, тем самым вы сможете меньше нагружать процессор и БД, кажется что мелочь, но если пользователей на сайте будет много, тут, там-сям немного сэкономили, на круг уже будет заметно.

    1.2. обязательно, возьмите за привычку проверять/сверять информацию, которую вводит пользователь! Перед запросом в БД нужно проверить наличие с помощью isset(), если подразумевается число, значит функцией is_numeric() и тд... В случае с купоном, можно проверить на кол-во символов (если это известно) и например прогнать через strip_tags(), htmlspecialchars() или использовать другие встроенные функции для фильтрации и/или обработки информации.

    2. К слову о фильтрации и проверке информации. НЕ обращайтесь к $_POST на прямую, для получения значений $_POST и $_GET используйте функции фильтрации filter_input(), если это массив filter_input_array(). Они же могут определить является ли полученная переменная числом, адресом эл.почты и прочее. Подробнее тут и тут...

    3. не используйте SQL-инъекции, используйте PDO, посмотреть доступность на вашем сервере можно в PhpInfo

    Старайтесь совершать как можно меньше необоснованных запросов и оправок данных, а так же обязательно проверять все данные которые поступают из вне - возьмите за аксиому: каждый пользователь враг и хочет навредить вашему сайту, многие просто могу сделать это по приколу, ну а если вы собираетесь работать с деньгами, то тут уже вопрос безопасности нужно выводить на первое место и уделять проверкам особое внимание! Почитайте более подробно, например на habr.com.

    Пункты 2 и 3 обязательны для всех ваших скриптов!
    И под конец для вас две новости, одна плохая и одна хорошая:
    Плохая - придется исправлять все подключения и заменить переменные $_POST и $_GET...
    Я в свое время решил эту проблему очень просто

    1. Автозаменой заменил во всех файлах массивы $_POST на $POST и соответственно $_GET на $GET. Визуально практически ничего не изменив в тексте скрипта, но уже суть совсем другая )))
    2. Задав в начале скрипта новым переменным значения через описанные выше функции фильтрации...


    Хорошая - это будет не сложно и не очень объемно ;)

    доп.: в самом начале каждого php файла (а проще в один, который добавляется везде, например конфиг) - советую прописать вывод ошибок на экран, если конечно вы этого еще не сделали
    тут то, что нужно прописать
    ini_set('display_errors', true); 
    ini_set('display_startup_errors', true);
    ini_set('error_reporting', -1);
    Ответ написан
    4 комментария
  • Как организовать вытягивание из URL определенного значения в форму?

    dimastik1986
    @dimastik1986
    учусь
    <?php
    $url = 'http://username:password@hostname/path?arg=value#anchor';
    print_r(parse_url($url));
    echo parse_url($url, PHP_URL_PATH);


    Результат выполнения данного примера:
    Array
    (
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
    )
    Ответ написан
    Комментировать
  • Как в БД изменить значение 0 или 1 через checkbox, без обновления?

    dimastik1986
    @dimastik1986
    учусь
    да все просто...
    нужно просто разделить код на 2 части
    1. стр со списком чекбоксов
      <form>
      <input type="checkbox" class="Todo" name="DoSomething[]" value="Задача 1">Задача 1 <Br>
      <input type="checkbox" class="Todo" name="DoSomething[]" value="Задача 2">Задача 2 <Br>
      <input type="checkbox" class="Todo" name="DoSomething[]" value="Задача 3">Задача 3 <Br> 
      <input type="checkbox" class="Todo" name="DoSomething[]" value="Задача 4">Задача 4 <Br> 
      <input type="checkbox" class="Todo" name="DoSomething[]" value="Задача 5">Задача 5 
      </form>

      теперь это надо отправить на обработчик, примерно так
      <script type="text/javascript">
      $(document).ready(function() { 
          $('.Todo').on('click', function(){
              $.post('https://ссылка на обработчик',   
              $(".Todo").serialize(), 
              function(msg) { 
                  $('#answer').html(msg);
              });  
          return false; 
          });  
      });
      </script>

      - можно отправлять не массив, а каждый чекбокс отдельно, как удобно

      - на страницу с чекбоксами можно вернуть информацию от обработчика, она попадет в блок <div id="answer"></div>
      например все это дело можно оформить как всплывающий блок, накрутить немного анимации. Блок будет отображать результат обработки (удачно, нет или другая информация). Сделать это весьма просто, я думаю разберетесь на основе примеров: animate.css, position, появление и иcчезновение элементов

    2. стр обработчика
      - получаем массив, например так
      $POST['DoSomething'] = filter_input(INPUT_POST, 'DoSomething', FILTER_DEFAULT , FILTER_REQUIRE_ARRAY);

      далее обрабатывайте как вам надо.
    Ответ написан
    Комментировать
  • Скролл на js для подгружаемого index.php?

    dimastik1986
    @dimastik1986
    учусь
    да уж, старайтесь формулировать задачу более правильно, от этого зависит скорость и качество ответов ;)
    я так понимаю, вы хотите сделать страницу без основного скролла, внутри которой будет основной блок с полосой прокрутки?
    • вот так убираем основной скролл
      html, body {
              overflow: hidden;
          }
    • вот так прикручиваем скролл для блока
      .section{
         width: 200px; /* ширина нашего блока */
         height: 200px; /* высота нашего блока */
         background: #fff; /* цвет фона, белый */
         border: 1px solid #C1C1C1; /* размер и цвет границы блока */
         overflow-x: scroll; /* прокрутка по горизонтали */
         overflow-y: scroll; /* прокрутка по вертикали */
      }

    Что такое "плавный скрол" ?
    Ответ написан
    1 комментарий
  • Как добавить текст после определенного тега?

    dimastik1986
    @dimastik1986
    учусь

    например:


    результатом, после последнего найденного тега <li> мы добавляем еще один - Незванный элемент О_О
    Ответ написан
    Комментировать
  • Функция обработки большого текста для записи в БД?

    dimastik1986
    @dimastik1986 Автор вопроса
    учусь
    В большинстве случаев достаточно использовать PDO с подготовленными запросами - они все необходимое экранирование делают самостоятельно (c) rjhdby
    Ответ написан
    Комментировать
  • VK api SDK проблема с адресами подключаемых функций, как решить?

    dimastik1986
    @dimastik1986 Автор вопроса
    учусь
    VK сами не знают ничего ))
    5c18334a536f0585772894.jpeg
    Ответ написан
    Комментировать
  • Как убрать пробелы в ссылках по всему сайту?

    dimastik1986
    @dimastik1986
    учусь
    я вижу два варианта:
    1. прогнать url через функцию перед выводом на стр, которая уберет пробелы
    2. или прогнать всю базу через эту функцию
    Ответ написан
  • Как объединить массив?

    dimastik1986
    @dimastik1986 Автор вопроса
    учусь
    $result = array();
    foreach ($test as $key => $value) {
        $result = array_merge($result, $test[$key]);
    }
    Ответ написан
    Комментировать
  • Как получить список всех участников группы?

    dimastik1986
    @dimastik1986 Автор вопроса
    учусь
    помогло добавить в конец запроса }).items;

    API.groups.getMembers({"group_id":"123377669","count":"1000","offset":"0"}).items;
    Ответ написан
    Комментировать
  • Могут ли мне заблокировать карту сбербанка, если я выведу на нее ЗП с WebMoney? Какой предел денег есть, чтобы ко мне начали проявлять внимание?

    dimastik1986
    @dimastik1986
    учусь
    а я бы битки купил, они как раз подешевели...
    потом можно за 3 рубля в дарке купить правильный пластик и Васю в банкомат заслать...
    для сбера макс лимит чет в районе 500к в сутки ;)
    Ответ написан
  • Что писать в ТЗ по внутренней документации?

    dimastik1986
    @dimastik1986
    учусь
    вот люди совсем думать не хотят, никак... ТЗ это то, что вы хотите получить в качестве результата.
    откройте аналогичные сайты и прочее, посмотрите что нравится, сделайте скрины, распишите то что нужно именно вам! А пока что у вас 2 строчки, кто где и кто чей - хз....
    Ответ написан
  • VK api SDK установка и подключение, как правильно?

    dimastik1986
    @dimastik1986 Автор вопроса
    учусь
    Вот рабочий вариант, проблема была в том, что нельзя использовать классы, которые находятся не в одном пространстве имён с текущим сценарием.

    require_once __DIR__.'/vendor/autoload.php'; 
    
    use \VK\Client\VKApiClient;
    use \VK\OAuth\VKOAuth;
    use \VK\OAuth\VKOAuthDisplay;
    use \VK\OAuth\Scopes\VKOAuthUserScope;
    use \VK\OAuth\VKOAuthResponseType;
    
    $vk = new VKApiClient(VER);
    
    $oauth = new VKOAuth(); 
    $client_id = API_CLIENT_ID; 
    $redirect_uri = REDIR; 
    $display = VKOAuthDisplay::PAGE; 
    $scope = array(VKOAuthUserScope::WALL, VKOAuthUserScope::GROUPS); 
    $state = 'secret_state_code'; 
    
    $browser_url = $oauth->getAuthorizeUrl(VKOAuthResponseType::CODE, $client_id, $redirect_uri, $display, $scope, $state);
    
    print $browser_url;
    Ответ написан
    2 комментария
  • Как закачать файл на сервер?

    dimastik1986
    @dimastik1986
    учусь
    $uploadfile = "images/".$_FILES['somename']['name']; 
    move_uploaded_file($_FILES['somename']['tmp_name'], $uploadfile);
    Ответ написан
    Комментировать
  • Как сделать появление текста при прокрутке снизу вверх?

    dimastik1986
    @dimastik1986
    учусь
    Попробуйте рассмотреть Аnimate.css
    Ответ написан
    Комментировать
  • Как сформировать запрос методом execute в VK api?

    dimastik1986
    @dimastik1986 Автор вопроса
    учусь
    нашел в инете внятный пример, почти разобрался!
    единственный момент - вот я сформировал запросы:
    $code .= 'var out = API.users.get({...});'; 
    $code .= 'var out = out + API.groups.getById({...});'; 
    $code .= 'var out = out + API.stats.get({...});'; 
    $code .= 'return out;';

    отправил все это дело
    $execute = json_decode(GetVK('https://api.vk.com/method/execute', array(
        'code' => $code,
        'access_token' => mc_decrypt($_SESSION['UserInfo']['access_token'], ENCRYPTION_KEY),
        'v' => $System['api']['version']
    )), true);

    на выходе получил массив $execute['response'], получается на следующем уровне у меня 3 массива, которые соответствуют 3 моим запросам в порядке очереди!? Правильно?

    ------
    выкладываю для тех, кому может пригодиться
    1. удобная функция для запросов
    function vk_query($url, $params) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_IPRESOLVE, CURLOPT_IPRESOLVE_V4);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_REFERER, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }


    2. пример запроса
    $members_all = array();
    for ($i=0; $i<$query_count; $i++){
      $offset_out = $i*25000;
        $query = "
          var members = API.groups.getMembers({\"group_id\": $group_vk_id, \"count\":1000, \"fields\": \"sex, bdate\", \"offset\": $offset_out}).items;
          var offset = 1000;
          while (offset < 25000 && (offset+$offset_out < $group_vk_count)){
          members = members + API.groups.getMembers({\"group_id\": $group_vk_id, \"count\":1000, \"fields\": \"sex, bdate\",\"offset\": ($offset_out + offset)}).items;
          offset = offset + 1000;
          };
          return members;
        ";
      $result = json_decode(vk_query('https://api.vk.com/method/execute', array(
        'access_token' => $_SESSION['access_token'],
        'code' => "$query",
        'v' => '5.37'
      )), true);
      //echo '<pre>';
      //print_r($result);
      $members_all[] = $result;
    }


    источник
    Ответ написан
    Комментировать
  • Форма отправки данных. Как исправить или как работать с этой?

    dimastik1986
    @dimastik1986
    учусь
    прошу прощения.
    повесить цель с разной ценностью?

    о чем вы?
    Ответ написан
    Комментировать
  • Почему не работают сессии?

    dimastik1986
    @dimastik1986
    учусь
    проверьте включены ли сессии на хостинге
    phpinfo()
    Ответ написан
    Комментировать
  • Как убрать большой отступ под embed видео?

    dimastik1986
    @dimastik1986
    учусь
    видимо убрать строчку padding-bottom: 10px; у стиля .embed-responsive video
    Ответ написан
    Комментировать