2009-12-02 69 views
0

现在我正在使用自动增量来识别我网站中的资源。用一串数字和字母自动递增

问题是我不希望用户知道有多少资源。

我该如何使用某种结构化的“随机”字母和数字组合(比如说6位数字)来代替(或除了)自动递增主键数字。

基本上我希望用户看到

website.com/page.php?4jnd32 

,而不是

website.com/page.php?13 

我不知道这是什么做法称为这妨碍我寻找答案

回答

1

如果能力你真的想要这个,创建一个新的领域(例如:fake_id),然后使用php的uniqid函数。

+0

+1。当然,这是一个简单的方法去解决问题,并且相当安全。 – 2009-12-02 19:49:31

0

你可以使用一个GUID,虽然这会比“4jnd32”长得多。 guid是全球唯一标识符。它可以唯一地识别页面,但它不会让用户知道有多少页面或给页面下了订单。

我不是PHP的专家,但快速搜索似乎表明,PHP有一个功能,生成GUIDs

0

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;