Ответы пользователя по тегу Веб-разработка
  • Как обеспечить безопасность сайта?

    Stalker_RED
    @Stalker_RED
    Очень крутой вопрос, прямо хочется бегать по кругу, размахивать руками и кричать.
    Ну... как-бы... ВСЕХ дыр стоит остерегаться!
    И того, что вам вместо аватарки шеллскрипт зальют, и того, что вместо поискового запроса будет sql инъекция, и того, что в вашу форму с оплатой заказа прилетит "левый" запрос сформированный при помощи XSS. И это не полный список возможных неприятностей, если что. А полный список будет сильно зависеть от того, какие вообще злоумышленник сможет делать запросы и есть ли в обработчиках этих запросов хоть какие-то проверки.

    Общие правила примерно такие:
    1. Проверяйте и/или фильтруйте все данные, которые приходят со стороны пользователя
    1a. Убедитесь, что эти запросы не ddos, не брутфорс и не xss.
    2. Наймите хорошего сисадмина, который будет следить за безопасностью и обновлениями OS и компонентов вебсерера.

    Конечно, если ваш сайт не представляет интереса для "крутых хакеров™", то можно на все это просто забить и довольствоваться защитой Неуловимого Джо.
    Ответ написан
    1 комментарий
  • Как добавлять/удалять ключевые слова (теги) в БД (многие ко многим)?

    Stalker_RED
    @Stalker_RED
    Связь многие-ко многим в виде отдельной таблицы
    oPccoGy.png

    Перед каждой опрацией с тегами желательно знать id тех тегов, которые вы собираетесь удалять или добавлять. Если у вас с клиента приходят не id а строки, то узнаем id так:

    select id, name from tag where name in ('js', 'css', 'html')

    Также нужно вытащить все теги, которые уже привязаны к статье:
    select tag_id from article_has_tag where article_id=1234

    Пусть, к примеру, будет js = 111 и css = 222.

    Как организовать так чтобы тег "js" был удалён если больше нет привязок к нему иначе просто удалить связь со статьёй1?
    Вам обязательно удалять неиспользуемый тег? Это конечно можно сделать, но проще оставить его в таблице, авось еще пригодится для следующих статей. В крайнем случае можно сделать отдельную "удалялку мусора" и запускать ее иногда.
    Удалять связь со статьей как-то так:
    delete from article_has_tag where article_id=1234 and tag_id=111


    Как добавить теги "css" и "html" если тег "css" уже существует в БД, а тег "html" абсолютно новый ?
    Так как мы уже пытались узнать id тегов, мы можем понять, что если id для тега "html" не нашелся, то он новый. И добавляем его так:
    INSERT INTO tag ('html')
    И сразу узнаем какой у него id
    $id = mysqli_insert_id(); (возможно у вас используется доступ не через mysqli а через PDO или какую-то ORM, но подобные методы есть везде.) Пусть к примеру вернется 333.
    Привязываем теги к статье:
    insert into article_has_tag (article_id, tag_id) values (1234, 222), (1234, 333)
    Ответ написан
    Комментировать
  • Есть ли аналог chosen или select2 без jQuery-зависимостей?

    Stalker_RED
    @Stalker_RED
    select2 или chosen
    upd: ай, они тоже jquery-зависимы. И бутсраповский тоже.
    Вот есть на vue еще https://www.npmjs.com/package/vue-select
    А таких чтоб и с богатым функционалом и без зависимостей - не знаю.
    Ответ написан
    Комментировать
  • Как починить apache(XAMPP)?

    Stalker_RED
    @Stalker_RED
    Скормить ему сертификат с правильным именем сервера. Или изменить имя сервера на то, которое в сертификате. Или отключить ssl.
    Ответ написан
  • Конструкторы сайтов и их перспективы?

    Stalker_RED
    @Stalker_RED
    Конструкторы существуют, wix даже заявляет, что растет. И перспективы пока у них неплохие - ниша не такая уж и маленькая. Один мой товарищ (не программист) запустил уже пару сайтов на wix - школа танцев и промо-сайт магазина цветов. И заказчиков всё устраивает - обоим сайт нужен для галочки, продвижение им не нужно, клиенты из сети не идут - ну и черт с ними, зато на визитке адрес красуется.

    Собственно, для небольшого оффлайн бизнеса, это довольно неплохой и сравнительно недорогой способ завести сайт, который нужен для понтов.
    Ответ написан
    Комментировать
  • Как защитить сайт от копирования?

    Stalker_RED
    @Stalker_RED
    В общем случае - никак.

    Демонстрировать верстку со своего ноутбука, а затем уносить его с собой?
    Убирать образец из доступа сразу после демонстрации?
    Прикрутить одноразовые коды доступа к каждой странице?

    Все перечисленное несет больше проблем, чем пользы, как мне кажется.
    Ответ написан
    Комментировать
  • Как проверить сайт на разных размерах экрана?

    Stalker_RED
    @Stalker_RED
    Самые надежные способы проверить на разных устройствах выглядят как-то так: 1, 2, 3

    Есть конечно какие-то эмуляторы, но крупные студии почему-то держат у себя зоопарк устройств.
    Ответ написан
    Комментировать
  • Как оформить визуальную часть php страницы?

    Stalker_RED
    @Stalker_RED
    В том и проблема, я не понимаю как сделать что б тут:
    if ($success){
      echo "Success";
      
    }
    else{
      echo "Error";
    }
    
    header('Refresh: 5; URL=http://mysite.net/index.html');

    Вместо Success или Error, выдавало заготовки моих html страниц под это, а не просто слова в окне браузера. И что б эти странички висели и потом редиректило на Главную.


    Начнем с того, что заголовки скорее всего не сработают, если вы перед ними уже выводили какой-то текст (для этого текста будут сгенерированы ДРУГИЕ заголовки). Поэтому ваш header('Refresh: ...') нужно перенести в начало.

    Далее, на счет "оформить визуальную часть php страницы".
    Я тут погуглил немножко, оказывается в браузерах в основном используют язык разметки html и каскадные таблицы стилей (CSS). Если вывести вместо echo "Success"; какой-то html код, типа такого
    <!DOCTYPE html>
    <html>
       <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <title>HTML Document</title>
       </head>
       <body>
          <p>
             <b>
                Этот текст будет полужирным, 
                <i>а этот - ещё и курсивным</i>
             </b>
          </p>
       </body>
    </html>

    То текст будет не просто текстом, а оформленной страницей.
    Конечно, чтобы не превращать ваш код в лапшу, лучше не писать эту простыню внутри if-а, а вынести в отдельный файл, и использовать include или require, как советует riot26.

    А когда наиграетесь, почитайте про routing в php, про модель MVC и шаблонизаторы. Поверьте, когда в проекте больше трех страниц, эти штуки уже не будут лишними.
    Ответ написан
    1 комментарий
  • Перенести в определенную часть сайта html?

    Stalker_RED
    @Stalker_RED
    <a href="#part2">перемотать к метке part2</a>
    <br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br>
    <a name="part2">
    <p>ура!</p>


    Гуглить "html якорь" или "html тег a"

    Пример: https://jsfiddle.net/85k28s9s/1/
    Ответ написан
    4 комментария
  • Существуют ли плагины, позволяющие шифровать ссылки на вложение?

    Stalker_RED
    @Stalker_RED
    задачка нетривиальна.

    Что-же в ней нетривиального? Всего две небольшие функции.

    Перед выводом ссылки в браузере генерируем какой-то случайный идентификатор (например, хеш от имени файла + идентификатор сессии + соль)
    Записываем в сессию этот хеш как ключ, и оригинальный путь к файлу как значение. Выводим ссылку примерно так: "/myFileloader.php?hash=1SD3F5G..."

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

    Всё.
    Ответ написан
  • Как написать такую функцию PHP?

    Stalker_RED
    @Stalker_RED
    Такое чувство что CURL вообще не срабатывает, просто редиректит на веб сервис и там оставляет.

    А так и есть, вы объявили функцию, но не вызывает ее.
    Еще и редирект header('location ... ') не отправляет POST данные, а просто "редиректит и там оставляет".

    Может можно как-то заставить
    Можно. Начать стоит с описания того, что вы хотите сделать, т.к. по предложенному вами коду можно только догадываться.
    Еще круче было бы начать с чтения первых глав какого-нибудь учебника, но похоже, что вы ищете "короткий путь".

    Еще было бы здорово, если бы вы нашли где у вас лог с ошибками, и посмотрели что там. Там как минимум о неопределенных переменных сообщения должны быть.
    Ответ написан
  • Возможен ли синхронный запуск скрипта?

    Stalker_RED
    @Stalker_RED
    Если хотите самодельное решение:
    1. Создается очередь (список) заданий в базе данных, например.
    2. Запускается супервизор (надсмотрщик) смотрит в эту очередь, проверяет какой статус у заданий.
    Статусы могут быть такими: "готово", "новое", "в процессе (pid, time)". Можно своих еще добавить.
    Супервизор смотрит сколько заданий "в процессе" и проверяет их - если процесс с таким pid отсутствует или висит слишком давно - его можно перезапустить.
    Если есть еще свободные слоты для запуска новых воркеров, супервизор запускает их используя fork, например.
    3. Воркер берет новое задание, пишет туда свой pid и время запуска и пытается его выполнить. Если всё получилось - отмечает как "готово" и завершается.

    Если самоделка не нужна, используйте gearman, например.
    Ответ написан
    Комментировать
  • С чего начать знакомство с ИТ?

    Stalker_RED
    @Stalker_RED
    Опишите примерно на каком уровне вы сейчас находитесь, что уже знаете.

    Вот вам обзорчик неплохих курсов: www.the-village.ru/village/business/cloud/150373-k...

    И видео-уроки сами по себе ничему не научат. Разве что могут помочь в связке с каким-то приличным обучающим курсом.
    Ответ написан
    Комментировать
  • Почему у меня не проходит регистрация?

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

    Интересно, действительно ли вы вводите строки 'php' в форму. В том блоке где Login = NO добавьте строку
    echo '<pre>' . var_export($_POST, true) . '</pre>';
    Ответ написан
  • PHP cURL. Как подменить referer-a с параметрами?

    Stalker_RED
    @Stalker_RED
    Эти слова берутся не из каких-то особых заголовков, а из referer'а
    http://www.google.ru/search?q=Как+подменить+referer-a+с+параметрами&ie=UTF-8
    Ответ написан
  • PHP как удалить письма?

    Stalker_RED
    @Stalker_RED
    Marks messages listed in msg_number for deletion. Messages marked for deletion will stay in the mailbox until either imap_expunge() is called or imap_close() is called with the optional parameter CL_EXPUNGE.

    php.net/manual/ru/function.imap-delete.php
    Ответ написан
    1 комментарий
  • Как построить таблицу из БД?

    Stalker_RED
    @Stalker_RED
    А без ООП, фреймворков, Twig и т.д. можно обойтись?

    Конечно можно обойтись. Можно взять готовое решение, например.
    Вы хотите сделать самодельный phpmyadmin? Или это очередной crud-генератор?

    Нужно исходить из задачи. Пока у вас действительно кусок "быдлокода", и не вполне понятно что это и зачем.

    Если это всё в целях обучения, то следующим шагом, похоже, будет использование html form для отправки выбранного имени таблицы.
    Потом получение этого имени из $_POST или $_GET.
    Может в процессе кто-то натолкнет вас на мысль использовать ajax, а потом кто-то продемонстрирует что такое sql-инъекции. Лучше ведь поздно, чем никогда.
    Ответ написан
    9 комментариев