2009-12-02 68 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;