像优酷(如:http://v.youku.com/v_show/id_XODM0Mzg1NzI=.html),56(http://.../v_NDI0MTM3NzU.html)那些的网站rewrite的地址,那种形式id他是存在数据库里的,还是程序即时生成即时解密调数据的?如果是即时的,那怎么生成像他们那种定长的,且绝对无重复的(因为不在库里,不能做判断是否与其他的ID生成的串重复)
还有就是如是他的密匙及加密代码一旦泄漏,他都不能改,一改整个站的地址就全得变。。很恐怖啊http://..../p-ff8080811f932a5e011f9e2a2dc366ce.html这是一个jsp的站的ID 即 ff8080811f932a5e011f9e2a2dc366ce 假设他是一个无规则的信息的标识字段。是存在表里的。用他来做索引调取信息。这样就不会存在程序加解密生成地址的那种不能改的问题了,但这样的串做索引会不会很影响效率?一般的做法是怎么样的了?

解决方案 »

  1.   

    67704239 PHP技术群,欢迎加入,共同学习
      

  2.   

    但要定长,这个我就有点胆心重复的问题了。。1,程序来加密参数,接收页解密参数再调数据.
    2,直接生成一个N位的无规则的ID号。用他来作为索引字段,以他来调取数据。
    前一种方案有点担心,但也好像是主流。如果他的密匙及加密代码一旦泄漏,他都不能改,不论改动加密代码还是密匙,他的生成结果都会变化,那他的链接地址也会变动。整个站的地址就全得变。。很恐怖啊。
    这两个方案哪个好点,一般是怎么做?
      

  3.   

    我还是想生成一个不规则的字串来做那个地址参数
    1,这样的话可以定长
    2,可以根据表里已有的做判断,不会重复。
    3,也不存在加密代码及密匙怕泄漏的问题如生成XODM0NDAzMjQ= 这样的字符存入表中,调数据时根据他来调。那我表里这个字段该怎么设计,与传统的自动统号id那种比有什么不好的地方了?好犹豫。望高手指点一下,在线等,THANKS
      

  4.   

    你想的太多了,如果说要生成一个可解密的不与数据库重复的数据,我方法多的是,一个公共的KEY即可,如果让我做,我一百年都不会生成一个相同的,优酷不会愚蠢到把这个直接存到数据库去的,我都不这么做了,何况优酷,除非youku是一群菜鸟,但是可能吗?
      

  5.   

    方法是很多的,例如生成的GUID,每次生成都是不同的,然后再配合一个用于加密的key,你觉得可能与原来的数据重复吗?
      

  6.   

    方法是很多的,例如生成的GUID,每次生成都是不同的,然后再配合一个用于加密的key,你觉得可能与原来的数据重复吗?
    如果第一种方案。你没有一个现成的可供对比。

    其次,要生成定长。重新生成的地址只要做个地址映射就可以解决,之前的连接都可以映射到新地址上,一般网站做升级都会做这一部 对于你说的用随机生成的伪地址的方式只要在文件表里多加一个存伪地址的字段就可以 
    通过伪地址来读取文件的真实地址
    伪静态没有生成的页,实际还是从数据库查。
    你想的太多了,如果说要生成一个可解密的不与数据库重复的数据,我方法多的是,一个公共的KEY即可,如果让我做,我一百年都不会生成一个相同的,优酷不会愚蠢到把这个直接存到数据库去的,我都不这么做了,何况优酷,除非youku是一群菜鸟,但是可能吗?
    你这个说法也就是我说的第一种方案。那你的加解密函数,密匙泄漏了怎么办。如果你的加密函数是这个decode(id, 密匙) 比方要对于采集方面。我直接一个for循环。
    function get_html(密匙) {
    for($id = 1....100000)
    $real_id = decode($id, 密匙); // 这是城就是1到100000的id对应你网址加密后的ID
    ...采集开始
    next
    }你的加密没有意义,直接暴了