Задать вопрос
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, ну вот тестовое задание делаю))) застрял на настройке htaccess :)))

    Ещё заметил одну тенденцию интересную. На стажировку попал, после месяца попрощались. Суть была в следующем "помощник WP" компания занимается создание плагинов и нужен человек на должности "принеси подай..." с перспективой роста.

    Ну ок думаю, WP знаю хорошо (даже свой плагин написал и в репе разместил), тестовое – написать просто плагин, который выводит (по шорткоду) определенное сообщение в зависимости от числа, которое ты в самом шорткоде напишешь.

    Написал, начинаю работать. Задача: есть микросервис (PHPMailer, Lumen) нужно настроить отправку писем в зависимости от евента. Плюс настроить кэширование изображений в отдаваемых письмах :))))
    Ну часть я решил, застрял на настройке кэширование. После этого с опаской отношусь к названию вакансии...к тестовому заданию...и что фактически предстоит делать :)))
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, мой круг, hh
    остальное тухло. Мой мир последнее время совсем все грустно, на hh появляются чаще, но требования – мой почтение. Вот неделю назад снова открыл резюме по контент менеджера, сейчас вот в двух направления смотрю. Че-т без работы не вариант сидет :)
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, вакансий вагон, но требования порой удивляют. Я не горю уже про джуна (хотя сначала именно на него метил) интерном хрен устроишься (имею ввиду с оплатой, на бесплатную стажировку мне уже возраст не позволяет, все таки 30 не 18 :) ).

    у меня знакомый так сделал, но что то через пол года работы с кодом ушёл обратно, правда нашёл не совсем то, но тоже код

    Я тоже предчувствую такое развитие ибо уже месяц с лишним долблю куда только можно – выхлопа ноль.
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, Коптелова, PHP7 в подлиннике (правда последние 3-4 главы все осилить не могу). Грокаем алгоритмы вот начал. Из ресурсов, не считая php.net, то code.mu и периодически на метанит(metanit) заглядываю.

    Правда сейчас помимо чтива больший упор делаю на поиск работы :) а то, как бы не получилось вернуться обратно в ту сферу откуда свалил и есть шанс растерять те навыки, которые сейчас получил))
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, 3-4 назад, но прям плотненько сел пару месяцев. Как ушел с работы, так что совсем совсем недавно.
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, тут, если я правильно понимаю, не в экранирование дело. Ведь если я ставлю директорию отличную от web/ то получаю вот это:
    5d9da6bd569bf210074755.png
    Получается он упирается в правило из этих правил
    RewriteCond %{THE_REQUEST} /web/([^\s?]*) [NC]
    RewriteRule ^ %1 [L,NE,R=302]
    RewriteRule ^((?!web/).*)$ web/$1 [L,NC]


    В это (если я правильно понял)
    RewriteCond %{THE_REQUEST} /web/([^\s?]*) [NC]

    А как его переопределить или вообще сделать отдельное правило для редиректа ХЗ. Сейчас курю различные вариации .htaccess правил, но пока ничего похожего даже в помине нету.
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, ага))
    ХЗ помогут или нет. Пока решил вопрос вот так. RewriteRule для редиректа изменил на
    RewriteRule ^web/([a-zA-Z0-9]+)$ /redirect.php?key=$1
    и файл redirect.php переместил в web/.

    Если написать
    RewriteRule ^app/controllers/([a-zA-Z0-9]+)$ /redirect.php?key=$1
    , то появляется вышеупомянутая 404, так как он корневой директорией считает теперь web/. ХЗ как побороть это на уровне htaccess (вариант /../app/controllers/ ... тоже не сработал :) )
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, эх, тогда пожалуй спрошу под соответствующим тегом :)
    Не ожидал такой "свиньи" с утра по раньше, думал уже ajax буду заниматься и формировать интерфейс, а тут хрен(

    P.S. тоже хочу один раз настроить и забыть :))
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, пробовал различные варианты.
    1. Переместить redirect.php в web/ (понимаю, что так делать нельзя, но в качестве теста).
    2. Корректировал путь формирования короткой ссылки с:
    echo '<li><strong>Сокращенная ссылка</strong>: <a href="//' . $_SERVER['HTTP_HOST'] . '/' . $existLink['short_key'] . '" target="_blank">http://' . $_SERVER['HTTP_HOST'] . '/' . $existLink['short_key'] . '</a></li>';

    на
    echo '<li><strong>Сокращенная ссылка</strong>: <a href="//' . $_SERVER['HTTP_HOST'] . '/web/' . $existLink['short_key'] . '" target="_blank">http://' . $_SERVER['HTTP_HOST'] . '/web/' . $existLink['short_key'] . '</a></li>';

    и соответственно в htaccess корректировал правило с:
    RewriteRule ^([a-zA-Z0-9]+)$ /app/controllers/redirect.php?key=$1

    на
    RewriteRule ^/web/([a-zA-Z0-9]+)$ /app/controllers/redirect.php?key=$1


    Безрезультатно :(
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, хотя я ошибался :( видимо забыл почистить куки и кэш. Сейчас через инкогнито пытаюсь перейти по сокращенной ссылки. Вот такая картина:
    5d9d93d02ad59141644931.png

    Правила написанные в .htaccess

    RewriteEngine On
    RewriteBase /
    RewriteCond %{THE_REQUEST} /web/([^\s?]*) [NC]
    RewriteRule ^ %1 [L,NE,R=302]
    RewriteRule ^((?!web/).*)$ web/$1 [L,NC]
    RewriteRule ^([a-zA-Z0-9]+)$ /app/controllers/redirect.php?key=$1


    Не подскажите, как скорректировать?
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, спасибо большое :)
    Ваш вариант как нельзя кстати. Теперь и ридерект работает и переадресация
    Options All -Indexes
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{THE_REQUEST} /web/([^\s?]*) [NC]
    RewriteRule ^ %1 [L,NE,R=302]
    
    RewriteRule ^((?!web/).*)$ web/$1 [L,NC]


    Вы бы хотя бы в ответы написали, я бы решением ответил :)) здорово помогли))
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий,
    а что такое хитачи? htaccess :) Правило по перенаправлению нашел, спасибо тостеру :). Теперь htaccess выглядит так:

    DirectoryIndex index.php
    Options All -Indexes
    php_flag register_globals off
    
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule   ^$ web/    [L]
        RewriteRule   ((?s).*) web/index.php [L]
    </IfModule>
    
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^([a-zA-Z0-9]+)$ /app/controllers/redirect.php?key=$1
    </IfModule>


    Появилась проблема с ридеректом. Любая сокращенная ссылка ведет ls.alexanderyurchenko.ru. Пробовал и так
    RewriteRule ^([a-zA-Z0-9]+)$ /app/controllers/redirect.php?key=$1
    и так RewriteRule ^([a-zA-Z0-9]+)$ /redirect.php?key=$1. Без разницы, не получилось ли из-за того что index.php убрали из корня нужно переписать правило это?
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, PSR1/PSR2 выставил и плагин добавил – вроде как было все так и осталось, видимо не все так плохо :)

    так 403 исправил, подскажите как сделать редирект с ls.alexanderyurchenko.ru/web/index.php на ls.alexanderyurchenko.ru/index.php (в идеале без index.php). Гуглю везде предлагается убрать index.php, с html на php.
    Но вариантов что индекс лежит в папке не могу найти.
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, :)) ну нужно брать хорошие практики, в подобных вопросах "велосипедить" не вижу смысла)
    А на хостинге такая же ситуация блин – 403ls.alexanderyurchenko.ru, нужно допиливать htaccess? Только в отличие от локальной версии, я тут не могу задать путь :(

    Сделал структуру, весь проект сломался :)

    инклюды я планирую на namespace перевести, правда этот проект наверное на процедурном выполню, а вот последующие уже на ооп. Насчет хэлперов спасибо. почитаю, не слышал про них.
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, появился небольшой вопрос по корректировки .htaccess, сейчас сформировал структуру проекта. И не могу сообразить, как скорректировать RewriteRule. Сама структура выглядит так:
    5d9d7c091b932477678496.png

    В настройках phpstorm выставил у wev/index.php абсолютный путь /index.php.
    5d9d7c8dae1fe441208409.png

    На данный момент при попытке открыть приложение 403 ошибка
    5d9d7cc83c9c2195759346.png

    Подключаю include_once пути везде скорректировал, получается загвоздка htaccess??
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, прикольно :) надо попробовать везде указывать декларейт. Когда первый раз ошибку словлю 100% въеду))
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий,
    ну это включает и отключает конверт типов

    Это как?)
    Снова залез в документацию и снова не совсем понял:

    Строгая типизация
    ....
    Для включения режима строгой типизации используется выражение declare в объявлении strict_types

    Но ведь типизация и без объявления деклайрейт прекрасно работает (имею ввиду выбрасывается исключение Type Error)...
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, ага, как-то сразу понравилась строгая типизация. Её увидел, когда начал ковыряться с ООП, ну а если её можно и на процедурке реализовать, то почему бы и нет :).

    Единственное, что я до конца и не понял – вверху скрипта, где планируется использовать строгую типизацию нужно прописывать declare(strict_types=1);...
    Видел и с объявление declare и без :\
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, Дмитрий,
    /// if (array_shift($db_check)) { что это вообще? =)

    Эт я тупанул :) и вместо ->fetchColumn указал ->fetch. Поэтому пришлось извлекать первый элемент массива.

    Вроде бы все разбил на логические составляющие. Есть ещё какие-то косяки? :)
    Генерация уникального id

    <?php
    function generateId(string $string = '', int $len = 8): string
    {
        $letters = array_merge(range('a', 'z'), range('A', 'Z'), range(0, 9));
        $x = 0;
        while ($x < $len) {
            $string .= $letters[array_rand($letters)];
            $x++;
        }
        return $string;
    }
    
    function checkingCreatedId(string $string): bool
    {
        $db_check = db_query("select count(*) from short where short_key = '$string'")->fetchColumn();
        if ($db_check) {
            return true;
        }
        return false;
    }
    
    function getIdShortLink(int $id_length): string
    {
        $getId = generateId('', $id_length);
        if (checkingCreatedId($getId)) {
            getIdShortLink($id_length);
        }
        return $getId;
    }
    </spoiler>
  • Как реализовать ajax запрос к БД?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, ваша функция норм :)
    По генерации id у меня последний вопрос остался. Получилась функция:
    function generateId($string = '', $len = 8)
    {
        $letters = array_merge(range('a', 'z'), range('A', 'Z'), range(0, 9));
        $x = 0;
        while ($x < $len) {
            $string .= $letters[array_rand($letters)];
            $x++;
        }
        $db_check = db_query("select count(*) from short where short_key = '$string'")->fetch();
        if (array_shift($db_check)) {
            exit('Повтор ID');
        }
        return $string;
    }


    Вы совершенно верно заметили, что в идеале нужно не грохать скрипт, а перегенерировать. Я не совсем понял как...
    вместо exit, добавить: $string .= $letters[array_rand($letters)]; или может такой вариант (мне он больше нравиться :) ):
    if (array_shift($db_check)) {
            $string = uniqid();
            $string = substr($string, 0, $len);
        }