gpt4 book ai didi

php - 通过从 URL : user/username 获取 user_name 使用 PHP 和 MYSQL 制作用户页面

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:51 25 4
gpt4 key购买 nike

我正在使用 PHP header 重定向将用户从 account/?id=$id 重定向到 user/$username

只要用户存在,它就会成功,例如 account/?id=1user/samuel。现在,这个页面 user/samuel 是空的 ( 404 )。

如何使用 isset($_GET[]) 手册让它返回 user/samuel 中的用户数据?除了当然添加 MYSQL 查询来检索具有从 URL 中提取的用户名的用户的数据,并从数据库表中获取他们的数据。我会将所有代码放在 user/index.php

只要我能让 account/?id=$id 从 URL(参数)获取 $id 并做其他数据库工作,我认为这也是可能的从 URL 获取 $username.. 即使 user/?username 可以做到,但我不想在 URL 中包含 ?..

有什么想法吗?

最佳答案

这是一个相当宽泛的主题,您需要做的是解析 url - IE 将其分成几部分,然后将 url 与一组操作相匹配。这通常称为路由。

一个简单的实现是:

$parts = explode($_SERVER['REQUEST_URI'], '/');

if ( $parts[-2] === 'user' && $parts[-1] ) {
$stmt = $pdo->prepare("SELECT * FROM 'users' WHERE username = ? OR id = ?");
$result = $stmt->execute(array($parts[-1], array($parts[-1]));
// ... do something if the user is found or not.
}

但如果 url 包含查询参数 (?foo=bar) 或散列 (#foo),这将失败。

相反,您可以使用 parse_url以确保您只使用路径。

$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$parts = null;

// Match the url with a regular expression.
preg_match(/^\/user\/(\w*)$/, $path, $parts);

if ( count($parts) == 2 ) {
$stmt = $pdo->prepare("SELECT * FROM 'users' WHERE username = ? OR id = ?");
$result = $stmt->execute(array($parts[-1], array($parts[-1]));
// ... do something if the user is found or not.
}

但最终您可能需要考虑使用微型框架,例如 Silex , Slim或使用 Routing component from Symfony2这样您就可以专注于构建您的应用程序,而不是重新发明轮子。

关于php - 通过从 URL : user/username 获取 user_name 使用 PHP 和 MYSQL 制作用户页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com