成功完成注册表后,我将用户重定向到 ccroipr-id.php?id = 63 页面。这里新值保存到数据库
ccroipr-201801101515569979
每次新注册都会更改此值。
现在,对于每个个人资料页面,我都会使用 ccroipr-id.php?id = 63 页面显示数据。
但现在我想要的网址是
ccroipr-201801101515569979.php
因此,希望可能的结果是:domain.com/ccroipr/201801101515569979
你能告诉我怎样才能实现这个目标?
注意:我正在学习PHP。
答案 0 :(得分:0)
要将URL domain.com/ccroipr/201801101515569979
用于用户个人资料,您需要执行以下两个步骤:
在您的网站上创建一个名为ccroipr.php
的php文件,其中包含分析请求网址的代码。
这可以通过在PHP中使用PHP全局$_SERVER
变量来实现。它包含一个名为'REQUEST_URI'
的字段,用于存储用于访问给定文件的路径。因此,对于网址domain.com/ccroipr/201801101515569979
,变量$_SERVER['REQUEST_URI']
包含值ccroipr/201801101515569979
。这可以用来提取suer id:
$requestParts = explode('/', strstr($_SERVER['REQUEST_URI'] . '?', '?', TRUE));
$userId = '';
if (count($requestParts) > 1) {
$userId = $requestParts[1];
}
if ($userId === '') {
// Redirect to login page, generate a new ID or show an error.
die();
}
// Call database and filter for the $userId value to retrieve all userspecific data
// Generate the specific HTML
函数strstr($path, '?', TRUE)
切断了所请求路径中的所有GET参数。您仍然可以通过$_GET
变量访问它们。在原始路径中添加了一个问号,以确保在没有提交此类参数的情况下,该功能仍然可以像预期的那样运行。
函数explode('/', $url)
然后分隔由斜杠分隔的路径的所有部分,因此可以自己分析每个部分。
如果在给定的网址中提交了用户ID的路径部分,则条件if (count($requestParts) > 1)
会检查。如果是,则将其保存在$userId
变量中。但请记住,仍然可能已经为它提交了一个空字符串。如果有人打电话给domain.com/ccroipr/
,就会发生这种情况。
条件if ($userId === '')
然后验证是否真的提交了用户ID。
修改.htaccess文件以允许省略.php结尾的请求。
在这个问题中最好地描述了实现这一目标的方法:How to execute a PHP web page without the .php extension in the URL?