$_GET['id']
и $_GET['language']
$_GET['id']
вы лезете в БД и формируете статью для показа. Вам надо в верхней части post.php дополнительно сформировать ЧПУ-шную часть URL этой статьи (для этого и используется ваша seo_replace()), и сравнить его с $_GET['language']
. Если они совпадают - отдаёте статью, если нет - делаете одно из 2-х:header($_SERVER["SERVER_PROTOCOL"].' 301 Moved Permanently');
header("Location: $URL");
exit;
header($_SERVER["SERVER_PROTOCOL"].' 404 Not Found'); exit;
Я хочу чтобы при совпадении определённой записи в БД, он выводил ошибку. Для этого, я для столбца поставил Индекс.Поле email в БД должно быть UNIQUE INDEX, тогда при вставке дубля MySQL будет кидать ошибку, которую можно обрабатывать.
INSERT IGNORE ... ON DUPLICATE KEY
, например, чтобы вернуть ID записи с этим email. при наличии в строке ь ъ(мягкого и твердого знака) заменяется в транслите ' и '', что мне не подходит, тк я строку передаю в url и уже с этого url выдергиваю строку и обратно на русский язык перевожуПочему? Согласно RFC3986 все недопустимые в URL символы должны кодироваться, и в PHP для этого есть функции
rawurlencode()
и rawurldecode()
.есть ли возможность в случае с сессиями сохранить пользователя к примеру на месяц?Да. Ставите у сессионной куки время жизни 1 месяц, и через месяц браузер пользователя автоматически её уничтожит. После этого надо будет авторизоваться заново.
какой вариант предпочтительнеевопрос холливарный. Если есть надо мониторить пользователей (кто, когда и зашёл и что сделал) - по БД это удобнее, чем рыться руками по тысяче файлов.
"display": "standalone"
чтобы отключить UI браузера.$repeating = count($digits) - count(array_unique($digits));
function win() {
if (func_num_args() <=0 ) $digits = array(); // Нет аргументов
elseif (func_num_args() >1 ) { // > 1 аргумента
for ($i=0, $digits=array(); $i < func_num_args(); $i++)
$digits[] = func_get_arg($i);
}
else $digits = str_split( func_get_arg(0) );
// ... тут надо проверить, что $digits не более 3-х элементов
$repeating = count($digits) - count(array_unique($digits));
return $repeating ? $repeating + 1 : 0;
}
echo win().'<br>';
echo win("").'<br>';
echo win(1,4,1).'<br>';
echo win(141).'<br>';
echo win("141").'<br>';
echo win("11").'<br>';
echo win(11,11,1).'<br>';
win("§§§").'<br>';
$_SERVER['REQUEST_URI']
содержит запрошенный путь на сайте и имя файла:/ // запрос морды сайта
/config.php // запрос скрипта на сайте
/upload/get.php // запрос скрипта из папки
Зачем вы их добавляете в проверку? Они ни как не влияют на проверку доменного имени.GET /path/page.php HTTP/1.1 // относительный URL
Host: domain.ru
или:GET http://domain.ru/path/page.php HTTP/1.1 // абсолютный URL с доменом
Host: любой_текст_тут
$_SERVER['HTTP_HOST']
всегда будет содержать значение из поля Host:. А там можно прислать что угодно, если в GET передаётся абсолютный URL с доменом. Спецификация требует игнорировать заголовок Host:, если в GET содержится абсолютный url - вы уверены, что ваш веб-сервер делает это?$_SERVER['HTTP_HOST']
присылается пользователем, доверять ему нельзя. Там может быть и IP-адрес сайта - вполне легальный запрос при определённых настройках веб-сервера.$_SERVER['SERVER_NAME']
устанавливается веб сервером и содержит имя домена из конфигурации вашего веб-сервера. Ему можно доверять, но есть и грабли. Вот кусок конфига Apache:ServerName domain.com # основной домен
ServerAlias www.domain.com # домен с www
ServerAlias m.domain.com # мобильная версия сайта
И, какое из этих 3-х имён пропадёт в $_SERVER['SERVER_NAME']
?UseCanonicalName On
- в $_SERVER['SERVER_NAME']
всегда будет имя из ServerName конфига веб сервера.$_SERVER['HTTP_X_FORWARDED_FOR']
прилетает строка из нескольких IP:"223.190.123.220, 66.102.6.83"
"2402:3a80:10d3:e19f:e7e1:8c35:fb4a:b49c, 66.102.6.89"
И, похоже, Yii::$app->request->userIP не знает как с ними поступать (в строке по сути невалидный IP, и filter_var($ip, FILTER_VALIDATE_IP)
на нём обламывается).echo '<pre>'.print_r($_SERVER, true).'</pre>';
что и под какими именами прилетает, может ваш хостер использует нестандартные заголовки для передачи реального IP посетителя.$sql = "INSERT INTO `ваша_таблица` data='".mysql_real_escape_string($data)."' WHERE ваше условие вставки";
"src": '$NewFileDir',
$sql = "INSERT INTO `ваша_таблица` data='".base64_encode( gzcompress($data) )."'";
$data = gzuncompress( base64_decode( $row['data' ] ) );
mysqli_query("SET NAMES 'utf8' ");
mysqli_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci' ");