在URL中传递代码

时间:2012-10-17 13:28:08

标签: php mysql apache web

我在facebook,twitter和youtuBe等网站上看到过。代码正在URL中传递,如下例所示。

想知道是否有人知道它背后的完整逻辑(PHP,MYSQL)。提前谢谢。

代码:QeAuADr0yL

例如:http://instagram.com/p/QeAuADr0yL

4 个答案:

答案 0 :(得分:1)

 http://instagram.com/p/QeAuADr0yL

以上链接“QeAuADr0yL”指定基于它获取数据的唯一标识符。此标识符使用md5()或sha1()或其他来编码。

答案 1 :(得分:1)

当apache Web服务器解析请求http://instagram.com/p/QeAuADr0yL时,使用存储在.htaccess文件中的代码,它知道第一个参数值为p,第二个参数值为{{ 1}}

您的请求可能会被翻译为hdashfdsahgofosa

其中www.a.com/index.php?p1=a&p2=bp1是变量而p2a是值?

使用b$_GET['a']方法可以获得这些值;

我将为您提供htaccess文件和规则的完整示例:

$_GET['b']

上面的代码在浏览器中看起来像RewriteRule ^([a-zA-Z-]+)/(product)-([0-9]+)$ index.php?action=$1&product=$3 [NC,L]

它被翻译为:

www.a.com/aBcdE/product-1836455

第一个参数可以具有a-z和/或A-Z之间的值 参数2具有a-z A-Z 0-9 -

之间的值
$action = aBcde;

$product = 1836455;

答案 2 :(得分:0)

您指的是'GET'方法吗?

如果您看到www.someurl.com/?param=value&otherparam=othervalue等网站,则称为GET。

它创建了一个可以使用

之类的东西在PHP中访问的数组
    <?php echo $_GET["param"]; ?>

这将打印出param的值,在本例中为“value”。

答案 3 :(得分:0)

网址中传递的最常见代码是哈希值。有不同的算法,大多数人使用md5,但有更安全的算法。您可以创建哈希值,然后如果您愿意,可以说,根据哈希值是否正确限制对页面的访问,您可以检查值。

url.com?x=5273909c02b8ce7ae42a4e21542b3326

if( $_GET['x'] == md5('hashcode') ) {
   // it matches
}else{
   // it doesn't
}

还有其他的抱怨算法,here's some docs.

当通过.htaccess文件用作路径的一部分时,您可以从URL获取这些内容。

用于这些特定网站的特定算法可能是自定义的,但PHP中有许多预设功能可以让您模仿它。

要生成较短的一个,您可以使用substr()函数获取前几个所需的字符,并使用数据库确保没有冲突。创建新代码时,将其截断为所需长度并查询数据库以查看是否已使用,如果没有则插入。

或者您可以自己编写并使用与数据库相同的过程来确保没有冲突。

如果你有很多哈希值,你可能需要花一些时间制作一个包含所有字母和数字的好的随机字符串生成器,哈希越短,冲突的机会越大,池越小可能的组合。将可能的字符从15 ^(使用的字符)增加到m ^ 5到36 ^(使用的字符)将 极大 增加可能的组合池。