现在我正在使用自动增量来识别我网站中的资源。用一串数字和字母自动递增
问题是我不希望用户知道有多少资源。
我该如何使用某种结构化的“随机”字母和数字组合(比如说6位数字)来代替(或除了)自动递增主键数字。
基本上我希望用户看到
website.com/page.php?4jnd32
,而不是
website.com/page.php?13
我不知道这是什么做法称为这妨碍我寻找答案
现在我正在使用自动增量来识别我网站中的资源。用一串数字和字母自动递增
问题是我不希望用户知道有多少资源。
我该如何使用某种结构化的“随机”字母和数字组合(比如说6位数字)来代替(或除了)自动递增主键数字。
基本上我希望用户看到
website.com/page.php?4jnd32
,而不是
website.com/page.php?13
我不知道这是什么做法称为这妨碍我寻找答案
如果能力你真的想要这个,创建一个新的领域(例如:fake_id),然后使用php的uniqid函数。
你可以使用一个GUID,虽然这会比“4jnd32”长得多。 guid是全球唯一标识符。它可以唯一地识别页面,但它不会让用户知道有多少页面或给页面下了订单。
我不是PHP的专家,但快速搜索似乎表明,PHP有一个功能,生成GUIDs。
MySQL支持UUIDs。但是你会想要使用触发器来自动工作。
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;
+1。当然,这是一个简单的方法去解决问题,并且相当安全。 – 2009-12-02 19:49:31