• Как отслеживать прокрутку вверх и вниз по отдельности?

    @wildsnail
    Вот маленькая библиотека, которая решит твою проблему. Подключаешь ее и по скроллу вверх/вниз будешь получать направление скроллинга, из плюсов, то что твой колбек будет выполняться именно на новую прокрутку, а не на каждое событие скролл
    Ответ написан
    Комментировать
  • Как настроить кодировку в phpmailer?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    А в phpmailer-то стоит кодировка?

    $mail->CharSet = "utf-8";
    Ответ написан
    2 комментария
  • Зачем нужен nodejs если есть fetch?

    RAFAILgaley
    @RAFAILgaley
    лучше начать с пхп
    и если его не хватит то использовать nodejs
    nodejs нужен например для сервера который выполняя кучу запросов клиентов еще паралельно делает сложные вычисления например для многопользовательской игры

    начни с простого сервера на котором простое api которое записывает в файлы читает и отдает json
    без ничего, без фреймворков и готовых субд
    просто шобы понять клиент-серверную архитектуру и как работать с данными

    и чтобы защитить файлы на сервере настрой файл htaccess

    расскажу подробнее, спрашивай
    Ответ написан
    8 комментариев
  • Помогите разобраться с Action в form?

    @victimofbrainlessness
    Помоему автор не совсем удачно задал вопрос.

    Для любого программиста замена action и «не перенаправлять авторизацию в другой файл, а обработать ее в index.php» означает: вместо запроса к login.php сделать запрос к index.php и внутри него подгрузить модуль авторизации.
    В этом случае ответ DevMan вполне себе приемлемое решение.

    Но наличие onsubmit=«check_dataLogin()» настораживает и наводит на мысль, что автор все таки хочет прикрутить авторизацию через ajax.

    Конкретные примеры кода приводить не буду, ибо вы не указали пользуетесь каким либо JS фреймворком или пишите все от руки в ноутпэде.

    Могу только обратить внимание на несколько подводных камней.
    1. ваша функуция check_dataLogin() должна всегда возвращать false, в противном случае после того как она отработает бразуер пошлет стандартный post запрос на сервер (не ajax)
    2. оставьте form action=login.php. это ваш fallback на случай если в браузере отключен JavaScript.
    3. результат у login.php должен личный для обыного post запроса и для ajax: может быть редирект на index.php, либо снова форма логина ( если пароль не верный), или же json для вашего ajax запроса (а может и не json, как реализуете так и будет)

    П.С. Я человек новый на хабре и не совсем уверен что в Q&A это у местно, но в мирей айти есть некая этика как задавать вопросы. Практически на всех irc каналах или maillist, в которых я учавствую, подобный вопрос могут проигнорирывать или заклевать вас за «отсутсвие культуры общения». Если повезет с вами сыграют в 10 вопросов, пытаясь выяснить чего же вы все таки добиваетесь.
    Для того чтобы вам помогали, ответы были развернутые и быстрые, научитесь формулирывать вопросы в понятной для других форме. Ведь не даром говорят что правильно поставленный вопрос содержит в себе половину ответа.

    может это поможет вам goo.gl/EiskH
    и еще (без перевода прадва) whathaveyoutried.com
    Ответ написан
  • Помогите разобраться с Action в form?

    @Tramvai
    Делайте как и делали. Внутри индекс проверяете, если это пост запрос, валидируете данные из формы. Если форма валидная, то логините пользователя. После успешного логина, нужно делать редирект, куда вам нужно, хоть это даже тот самый файл.
    Фишка в том, что после «сохранения» форм, нужно делать редиректы. Иначе, если пользователь обновит страницу, она снова будет отправлять порс запросы скрипту. Так всегда нужно делать.
    Если форма не валидная, заполняете ее сообщениями об ошибках и введенными данными, и опять показываете пользователю.
    Когда освоите такие подходы, тогда и смотрите в сторону Ajax. Если а form action ничего не укажите или укажите index.php ничего не измениться, по умолчанию должен отработать index.php, но это зависит от настроек на сервере. Лучше указывать action конкретно и проблем никогда не будет.
    Ответ написан
    Комментировать
  • Как запустить 1 node.js приложение на нескольких поддоменах?

    Вы можете все поддомены и домены настроить на один свой сервер, а в коде приложения через req.host смотреть с какого домена/поддомена идет запрос, и отдавать нужный контент.
    Ответ написан
    3 комментария
  • Почему не работает addEventListener 'resize'?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Во-первых - вы пытаетесь установить в качестве обработчика resize не метод, а результат его выполнения. Во-вторых - честно говоря, затрудняюсь понять, на что вы рассчитывали, как бы вы ни дёргали метод расчёта высоты, что от этого измениться для computed? Да ничего. Класть результат в data вам уже советовали, и даже показали рабочий пример - тут я ничего добавлять не буду (кроме того, что лично я - всё-таки результат в data бы положил). Если вам кровь из носу надо без хранения результата, то... ну, вот говнокод:

    <div id="app">
      <h1>{{ h() }}</h1>
    </div>

    new Vue({
      el: '#app',
      methods: {
        h() {
          return Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
        },
      },
      created() {
        window.addEventListener('resize', () => this.$forceUpdate());
      },
    });
    Ответ написан
    3 комментария
  • Как добавлять и удалять файлы в input type="file"?

    и так:
    1)
    <input onchange="handleChange" type="file" />
    
    <!-- как-то циклом выводи Store.files -->
    <span>file 1</span>
    <button onclick="(e) => removeFile(0)">remove file</button>
    
    <span>file 2</span>
    <button onclick="(e) => removeFile(1)">remove file</button>

    2)
    const Store = {
      files: [], // какое-то хранищие файлов, для примера так
    }
    
    // при выборе файлов, мы будем их добавлять
    function handleChange(e) {
      // если не выбрали файл и нажали отмену, то ничего не делать
      if (!e.target.files.length) {
        return;
      }
    
      // создаем новый массив с нашими файлами
      const files = Object.keys(e.target.files).map((i) => e.target.files[i]);
    
      addFiles(files); добавляем файлы в хранилище
      
      // очищаем input, т.к. файл мы сохранили
       e.target.value = '';
    }
    
    function addFiles(files) {
      // добавляем файлы в общую кучу
      Store.files = Store.files.concat(files);
    }
    
    // удалить файл из хранилища, например по индексу в массиве
    function removeFile(index) {
      // удаляем файл по индексу
      Store.files.splice(index, 1);
    }
    
    // если надо послать файлы на сервер, формируем FormData с файлами
    // const formData = getFilesFormData(Store.files);
    function getFilesFormData(files) {
        const formData = new FormData();
    
        files.map((file, index) => {
            formData.append(`file${index + 1}`, file);
        });
    
        return formData;
    }


    ну вот как-то так
    Ответ написан
    4 комментария