如何将链接显示为md5而不是普通链接

时间:2011-07-13 02:15:31

标签: php mysql

我的数据库中有一堆链接,我使用$ row ['url']来显示它们,但我想做的不是显示网址,而是显示类似的内容 http://mywebsite.com/3e8aa15443dcce0b886af4616a1c1645我有数据库中可用的每个链接的md5,并且可以使用$ row ['md5']显示md5但是如何让网址显示我上面发布的内容并且在点击时仍然转到正确的链接?任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:5)

您想创建一个存储给定URL的md5sum的新列(或您喜欢的表)。您将在输入网址数据的同时输入此md5sum。

然后你的.htacess文件中会有RewriteRule ([a-z0-9]+) lookup.php?md5=$1

然后在lookup.php中,您将创建一个使用传入的md5sum总和的查询。像select url from sometable where md5 = '$escapedMD5' limit 1这样的东西。请确保使用db的相应转义函数(mysql_real_escape_string等)转义在url上传入的md5sum。

从结果中取回url后,您将在lookup.php中找到最后一行代码header( 'Location: ' . $urlFromDB ) ;

至少这是一般性的想法,希望你能从这里开始。

答案 1 :(得分:2)

您可以预先计算每个链接的md5并将其存储在数据库中。当您收到网址请求时,请对预先计算的哈希值进行查找并重定向。

答案 2 :(得分:0)

如果MD5值是唯一的,那么您可以创建一个给定MD5返回相应页面的页面。你使用任何PHP框架吗?

答案 3 :(得分:0)

你可以通过apache mod重写规则来实现映射

我建议使用像这样的规则

http://example.com/link/etghfcvfdfgfgjjijhgyhgc.php

要捕获上述链接,您可以使用此重写规则

RewriteRule ^ / link /(.*).php/link.php?linkHash=$1

我没有检查上述规则但是给你一个想法

请参考apache mod_rewrite文档。