alexivchenko Опубликовано 9 апреля, 2020 Жалоба Поделиться Опубликовано 9 апреля, 2020 Привет! Никак не могу понять, каким образом формируются такие url страницы товара: webshop.ru/products/5d27e2e28b2c370101cf06c9webshop.ru/products/5d7db6b428fc710101b62057 Значение 5d27e2e28b2c370101cf06c9 - имеет 24 символа. То есть это не md5 против 32 символовПервоначальное значение 5d статичное или меняется на 5a, 5b, 5c, 5d, 5eЯ так понимаю это не просто id, а возможно hash_id Подскажите как такое реализовать и как хранить в БД Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 9 апреля, 2020 Жалоба Поделиться Опубликовано 9 апреля, 2020 (изменено) очень просто. К примеру for($i = 1; $i <= 5; $i++) { $num .= rand(0, 9); } $url = 'x'$num; результатом буде $url =x00000 где 0 - рандомная цифра от 0 до 9 изменить $url в ProductAdmin.php можно использовать md5 и обрезать лишнее Изменено 9 апреля, 2020 пользователем shooroop Цитата Ссылка на сообщение Поделиться на другие сайты
alexivchenko Опубликовано 20 апреля, 2020 Автор Жалоба Поделиться Опубликовано 20 апреля, 2020 очень просто. К примеру for($i = 1; $i <= 5; $i++) { $num .= rand(0, 9); } $url = 'x'$num; результатом буде $url =x00000 где 0 - рандомная цифра от 0 до 9 изменить $url в ProductAdmin.php можно использовать md5 и обрезать лишнее Привет! Спасибо за вариант, я решил вопрос иначеЗаменил в simpla/ProductAdmin.php $product->url = trim($this->request->post('url', 'string')); на $product->url = uniqid('') . substr(md5(time()), 0, 11); //генерация url товара Так же убрал транслит url и само поле url из шаблона. Теперь не могу понять, при каждом редактировании товара меняется и url. Как сделать проверку, если в базе поле url заполнено тогда оставить, если нет сгенерировать. Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 20 апреля, 2020 Жалоба Поделиться Опубликовано 20 апреля, 2020 (изменено) Привет! Спасибо за вариант, я решил вопрос иначеЗаменил в simpla/ProductAdmin.php $product->url = trim($this->request->post('url', 'string')); на $product->url = uniqid('') . substr(md5(time()), 0, 11); //генерация url товара Так же убрал транслит url и само поле url из шаблона. Теперь не могу понять, при каждом редактировании товара меняется и url. Как сделать проверку, если в базе поле url заполнено тогда оставить, если нет сгенерировать. в одном из файлов уже есть решение осталось немного подумать public function add_product($product) { $product = (array) $product; if(empty($product['url'])) { $product['url'] = preg_replace("/[\s]+/ui", '-', $product['name']); $product['url'] = strtolower(preg_replace("/[^0-9a-zа-я\-]+/ui", '', $product['url'])); } // Если есть товар с таким URL, добавляем к нему число while($this->get_product((string)$product['url'])) { if(preg_match('/(.+)_([0-9]+)$/', $product['url'], $parts)) $product['url'] = $parts[1].'_'.($parts[2]+1); else $product['url'] = $product['url'].'_2'; } if($this->db->query("INSERT INTO __products SET ?%", $product)) { $id = $this->db->insert_id(); $this->db->query("UPDATE __products SET position=id WHERE id=?", $id); return $id; } else return false; } Изменено 20 апреля, 2020 пользователем shooroop Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 19 мая, 2020 Жалоба Поделиться Опубликовано 19 мая, 2020 (изменено) uniqid с 2м параметром в true - даст 23 символа. Останется доклеить только 5 echo '5' . uniqid('', true); Но в указанном примере скорее всего идет замена . (точки) что дает uniqid - на какое то число. Либо какой то кастомный генератор Изменено 19 мая, 2020 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.