у меня знакомый так сделал, но что то через пол года работы с кодом ушёл обратно, правда нашёл не совсем то, но тоже код
RewriteCond %{THE_REQUEST} /web/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!web/).*)$ web/$1 [L,NC]
RewriteCond %{THE_REQUEST} /web/([^\s?]*) [NC]
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/ ... тоже не сработал :) ) 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>';
RewriteRule ^([a-zA-Z0-9]+)$ /app/controllers/redirect.php?key=$1
RewriteRule ^/web/([a-zA-Z0-9]+)$ /app/controllers/redirect.php?key=$1
Options All -Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} /web/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!web/).*)$ web/$1 [L,NC]
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>
RewriteRule ^([a-zA-Z0-9]+)$ /app/controllers/redirect.php?key=$1
и так RewriteRule ^([a-zA-Z0-9]+)$ /redirect.php?key=$1
. Без разницы, не получилось ли из-за того что index.php убрали из корня нужно переписать правило это? RewriteRule
. Сама структура выглядит так:ну это включает и отключает конверт типов
Строгая типизация
....
Для включения режима строгой типизации используется выражение declare в объявлении strict_types
declare(strict_types=1);
.../// if (array_shift($db_check)) { что это вообще? =)
->fetchColumn
указал ->fetch
. Поэтому пришлось извлекать первый элемент массива.<?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>
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;
}
$string .= $letters[array_rand($letters)];
или может такой вариант (мне он больше нравиться :) ):if (array_shift($db_check)) {
$string = uniqid();
$string = substr($string, 0, $len);
}
Ещё заметил одну тенденцию интересную. На стажировку попал, после месяца попрощались. Суть была в следующем "помощник WP" компания занимается создание плагинов и нужен человек на должности "принеси подай..." с перспективой роста.
Ну ок думаю, WP знаю хорошо (даже свой плагин написал и в репе разместил), тестовое – написать просто плагин, который выводит (по шорткоду) определенное сообщение в зависимости от числа, которое ты в самом шорткоде напишешь.
Написал, начинаю работать. Задача: есть микросервис (PHPMailer, Lumen) нужно настроить отправку писем в зависимости от евента. Плюс настроить кэширование изображений в отдаваемых письмах :))))
Ну часть я решил, застрял на настройке кэширование. После этого с опаской отношусь к названию вакансии...к тестовому заданию...и что фактически предстоит делать :)))