首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安全url参数

安全url参数
EN

Stack Overflow用户
提问于 2016-04-26 10:31:14
回答 2查看 69关注 0票数 0

好的,让我一步一步地向你解释,点对于这方面的发展来说是全新的。

我的cproject目录中的php文件: allproducts.php watch.php

在allproducts.php中,im显示数据库中所有可用的产品。每个产品都有自己的网址。在我的watch.php中,im根据参数显示某些数据来自allproducts.php页面。

在我的allproducts.php页面中,我有一个网址:

http://localhost/cproject/watch?v=

url看起来如下所示:

localhost/cproject/watch?v=J46TKlqSw3Gt4sk

此刻,我为make watch.php写了一个重写程序,以“观察”

现在我想要的是摆脱这个"?“将"/“和"v=”标记为“//”,因此我希望我的规则看起来像这个localhost/cproject/watch/J46TKlqSw3Gt4sk

我希望现在你能明白我到底想做什么?如果我突然向您解释我的.htaccess文件中包含了这个watch.php的内容,那么我有这行代码

RewriteRule ^观看watch.php NC,L

EN

回答 2

Stack Overflow用户

发布于 2016-04-26 10:40:38

您必须使用.htaccess来执行此操作。

.htaccess文件代码

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

对于小于5.2.6的PHP版本,请尝试如下:

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L] 

如果需要从url获取参数,请使用:

javascript

代码语言:javascript
复制
var str = "http://localhost/cproject/watch?v=J46TKlqSw3Gt4sk";
var param = str.split("=")[1];
alert(param);

结果

J46TKlqSw3Gt4sk

和新的url

代码语言:javascript
复制
var str = "http://localhost/cproject/J46TKlqSw3Gt4sk";
var param = str.split("/");
alert(param[param.length - 1]);

结果

J46TKlqSw3Gt4sk

票数 0
EN

Stack Overflow用户

发布于 2016-04-26 10:54:42

对于.htaccess文件,您可以使用这个RewriteRule,它将使用/将url转发到带有/watch?v=的url。

代码语言:javascript
复制
RewriteRule ^cproject/(.*) cproject/watch?v=$1 [NC]

例如:

启动URL http://localhost/cproject/eeeeeeeaf

端URL http://localhost/cproject/watch?v=eeeeeeeaf

但是,我想要的是像上面提到的那样获得一个url,并在另一个页面中获取参数。

通过使用/watch数组中的REQUEST_URI元素,您可以使用$_SERVER[]文件中的PHP来完成这一任务。

对于PHP代码,您可以这样做:

代码语言:javascript
复制
<?php
$request  = $_SERVER['REQUEST_URI'];
$exploded = explode("/", $request);
$id       = $exploded[4];
echo $id;
?>

关于你对问题的补充,这是很容易做到的,正如我上面所说的。与我所写的不同,你只需使用:

代码语言:javascript
复制
RewriteRule ^watch/(.*) watch.php?v=$1 [NC,L]

您可以在当前规则(最好是在后面)的同时添加此规则,并且它应该根据您的需要发挥作用。

现在我想要的是摆脱这个"?“将"/“和"v=”标记为“//”,因此我希望我的规则看起来像这个localhost/cproject/watch/J46TKlqSw3Gt4sk

我提供的URL RewriteRule将完成以下操作:)您是否实际测试了所提供的重写?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36862333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档