автоинкремент со строкой цифр и букв

0

Теперь я использую автоинкремент, чтобы идентифицировать ресурсы на моем веб-сайте.

Проблема в том, что я не хочу, чтобы пользователи знали, сколько ресурсов существует.

Как я мог вместо этого использовать какую-то структурированную "случайную" комбинацию букв и цифр (например, 6 цифр), которые я мог бы использовать вместо (или в дополнение к) номерам с добавочным номером автоматического увеличения.

В основном я хочу, чтобы пользователи увидели

website.com/page.php?4jnd32

вместо

website.com/page.php?13

Я даже не знаю, что называется этой практикой, которая препятствует моей способности искать ответ

Теги:

3 ответа

1

Если вы действительно этого хотите, создайте новое поле (например, fake_id), затем используйте функцию php uniqid.

  • 0
    +1. Конечно, это простой способ сделать что-то достаточно безопасное.
0

Вы можете использовать GUID, хотя это будет значительно длиннее, чем "4jnd32". Гид является глобально уникальным идентификатором. Он будет идентифицировать страницы однозначно, но это не даст пользователю понять, сколько страниц есть или дать заказ на страницу.

Я не эксперт по PHP, но быстрый поиск показывает, что php имеет функцию генерации GUID.

0

MySQL поддерживает UUID. Но вы хотите использовать триггер, чтобы автоматически работать.

CREATE TABLE `tester` (
  `tester_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `uuid` VARCHAR(64),
  `foo` VARCHAR(45),
  PRIMARY KEY (`tester_id`),
  INDEX `index_uuid`(`uuid`)
)
ENGINE = InnoDB;

delimiter |
CREATE TRIGGER tester_uuid BEFORE INSERT ON `tester`
FOR EACH ROW BEGIN
  SET NEW.uuid = UUID();
END;
|
delimiter;

INSERT INTO tester (foo) VALUES('bar'), ('baz');

SELECT * FROM tester;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню