как сделать, чтобы Post id
выводился не test.ru/city/28
, хотелось бы test.ru/city/cgthjkgf-28
, как перед id
сгенерировать случайно буквы и цифры?
class Secury
{
/**
* Возвращает случайный набор байтов заданной длины
*
* @param int $len
*
* @throws \RuntimeException
*
* @return string
*/
public function randomKey($len)
{
$key = '';
if (function_exists('random_bytes')) {
$key .= (string) random_bytes($len);
}
if (strlen($key) < $len && function_exists('mcrypt_create_iv')) {
$key .= (string) mcrypt_create_iv($len, MCRYPT_DEV_URANDOM);
}
if (strlen($key) < $len && function_exists('openssl_random_pseudo_bytes')) {
$tmp = (string) openssl_random_pseudo_bytes($len, $strong);
if ($strong) {
$key .= $tmp;
}
}
if (strlen($key) < $len) {
throw new \RuntimeException('Could not gather sufficient random data');
}
return $key;
}
/**
* Возвращает случайную строку заданной длины состоящую из цифр, латиницы,
* знака минус и символа подчеркивания
*
* @param int $len
*
* @return string
*/
public function randomStr($len)
{
$key = $this->randomKey($len);
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
$result = '';
for ($i = 0; $i < $len; ++$i) {
$result .= substr($chars, (ord($key[$i]) % strlen($chars)), 1);
}
return $result;
}
}
$s = new Secury;
$randomString = $s->randomStr(10);
var_dump($randomString);
Результат записываете вместе с id в базу. Если id числовое поле в бд, то заводите отдельное поле для случайно строки.
Код работает на php 5.6+.
Тест http://sandbox.onlinephpfunctions.com/code/b02f85276148967e778f20ecf1a5dd9d70fe1b2c
ЗдравствуйтеСделала http аутентификациюю Она работает, но почему-то при переходе на url другого вида выбивается ошибка о том, что $_SERVER['PHP_AUTH_USER']...
Доброго времени сутокПишу свой класс, наследуюсь от класса mysqli с целью прикрутить метод query() с автоматическим переподключением к базе, если...