現在我正在使用自動增量來識別我網站中的資源。用一串數字和字母自動遞增
問題是我不希望用戶知道有多少資源。
我該如何使用某種結構化的「隨機」字母和數字組合(比如說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