Php 缩短URL获取选项
我有一个目录类型的应用程序,它有一系列不同的过滤选项,允许用户限制结果,例如:Php 缩短URL获取选项,php,html,mysql,url,Php,Html,Mysql,Url,我有一个目录类型的应用程序,它有一系列不同的过滤选项,允许用户限制结果,例如: <input type="checkbox" name="filters[1][]" value="4" /> Filter 1-4<br /> <input type="checkbox" name="filters[1][]" value="5" /> Filter 1-5<br /> <input type="checkbox" name="filters[
<input type="checkbox" name="filters[1][]" value="4" /> Filter 1-4<br />
<input type="checkbox" name="filters[1][]" value="5" /> Filter 1-5<br />
<input type="checkbox" name="filters[1][]" value="6" /> Filter 1-6<br />
<input type="checkbox" name="filters[1][]" value="7" /> Filter 1-7<br />
<input type="checkbox" name="filters[1][]" value="8" /> Filter 1-8<br />
<input type="checkbox" name="filters[1][]" value="9" /> Filter 1-9<br />
<input type="checkbox" name="filters[2][]" value="10" /> Filter 2-10<br />
<input type="checkbox" name="filters[2][]" value="11" /> Filter 2-11<br />
<input type="checkbox" name="filters[2][]" value="12" /> Filter 2-12<br />
<input type="checkbox" name="filters[2][]" value="13" /> Filter 2-13<br />
<input type="checkbox" name="filters[misc][]" value="1" /> Filter Misc-1<br />
<input type="checkbox" name="filters[misc][]" value="test" /> Filter Misc-test<br />
<input type="checkbox" name="filters[misc][]" value="2" /> Filter Misc-2<br />
<input type="checkbox" name="filters[misc][]" value="3" /> Filter Misc-3<br />
<input type="checkbox" name="filters[misc][]" value="4" /> Filter Misc-4<br />
<select name="select">
<option value="">All</option>
<option value="1">Filter Select-1</option>
<option value="2">Filter Select-2</option>
<option value="3">Filter Select-3</option>
</select>
过滤器1-4
过滤器1-5
过滤器1-6
过滤器1-7
过滤器1-8
过滤器1-9
过滤器2-10
过滤器2-11
过滤器2-12
过滤器2-13
过滤器Misc-1
过滤器杂项测试
过滤器Misc-2
过滤器Misc-3
过滤器Misc-4
全部的
过滤器选择-1
过滤器选择-2
过滤器选择-3
有很多这样的选择,而且随着时间的推移,选择可能会变得更大。我想知道在将这些选项发送到url时,是否有任何方法可以压缩这些选项,这样我就不会得到一个非常长且无法读取的地址
我唯一能想到的就是提前将所有可能的组合保存到数据库中,然后引用ID。。。但考虑到大量可能的组合,这可能是不现实的。有更好的选择吗
我想要的是
example.com?filters=something\u相对较短\u和\u simple
如果可能的话,您可以创建代码,将搜索参数列表(作为JSON)保存在DB表(或者缓存)中,并返回一个令牌(基于用户ID,然后是查询中新创建条目的ID
表)
然后,您可以通过调用http://who.cares/?token=0acb087454d65ca63
该表将类似于:
CREATE TABLE Queries (
`query_id` SERIAL PRIMARY KEY,
`account_id` BIGINT UNSIGNED NULL DEFAULT NULL,
`token` CHAR(32) NOT NULL ,
`created_on` INT(11) NOT NULL,
`used_on` INT(11) NULL DEFAULT NULL,
`parameters` TEXT,
KEY (`account_id`),
UNIQUE KEY (`token`),
KEY (`used_on`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
更新:
如果这些查询来自公共站点(而不是我假设的某些后端CMS/CRM),那么最好删除
account\u id
部分,而是从用户查询参数的JSON中生成hash
。因此此解决方案将保存所有可能的组合,但仅在请求时保存(而不是提前完成所有操作),对吗?这样做只会保存用户所做的任何组合。@mistermartin好吧,您也可以放弃帐户
部分,而是从用户查询的JSON中进行哈希(如果它不是我最初假设的后端系统,那么效果会更好)。