php REQUEST_URI

7gs2gvoe  于 2023-03-28  发布在  PHP
关注(0)|答案(6)|浏览(139)

我有以下php脚本来读取URL中的请求:

$id = '/' != ($_SERVER['REQUEST_URI']) ? 
    str_replace('/?id=' ,"", $_SERVER['REQUEST_URI']) : 0;

当URL为http://www.testing.com/?id=123时使用
但是现在我想在url字符串http://www.testing.com/?id=123&othervar=123中传递1个变量
我应该如何改变上面的代码来检索这两个变量?

yx2lnoni

yx2lnoni1#

您可以使用regex,也可以继续使用str_replace
例如:

$url = parse_url($_SERVER['REQUEST_URI']);

if ($url != '/') {
    parse_str($url['query']);
    echo $id;
    echo $othervar;
}

输出将为:http://www.testing.com/123/123

jq6vz3qz

jq6vz3qz2#

我认为parse_str是你要找的,像这样的东西应该为你做的伎俩:

parse_str($_SERVER['QUERY_STRING'], $vars);

然后$vars数组将保存所有传递的参数。

vbopmzt1

vbopmzt13#

也许

$id = isset($_GET['id'])?$_GET['id']:null;

$other_var = isset($_GET['othervar'])?$_GET['othervar']:null;
vohkndzv

vohkndzv4#

如果你知道othervar的名字,你可以简单地使用$_GET。如果你想安全起见,使用if (isset ($_GET ['varname']))来测试是否存在。

mwkjh3gx

mwkjh3gx5#

由于通过url传递的vars是$_GET vars,因此可以使用filter_input()函数:

$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT);
$othervar = filter_input(INPUT_GET, 'othervar', FILTER_SANITIZE_FULL_SPECIAL_CHARS);

它将存储每个var的值,并对它们进行消毒/验证。

shstlldc

shstlldc6#

$uri = urldecode(
    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
);

相关问题