PHP 使用 /profile/name 模板的配置文件

PHP Profiles using template of /profile/name

我正在制作一个需要配置文件系统的网站。

目前我已经设置好了,所以你去 /profile/namehere 并且配置文件将动态显示信息,但当然你必须手动复制粘贴这些配置文件并更改名称才能工作。

我想要它,以便在这种情况下提交表单时输入名称并按提交,它们将被添加到我自己已经完成的数据库中,并且会自动创建配置文件。

我对此进行了一些研究,发现我需要制作一个控制器或配置文件模板来调用信息,但我已经这样做了,只是我不确定并且无法在线找到任何关于如何使用 /profile/namehere/

进行操作的文档

非常感谢任何帮助或代码示例,非常感谢!

我正在使用的数据库是MYSQL,虽然我会在使用它时迁移到 PDO,但是现在的配置文件可以在 MYSQL 中。我当前的页面代码如下所示:

标题和元标记通过配置文件显示/api。 对于从数据库中选择的内容回显页面内容我正在使用 $row['var'];select 语句来访问数据库。

在当前状态下,复制并粘贴了一个配置文件,并将名称更改为用户名,这就是完成的配置文件,我想要它,所以当您提交表单以创建用户名时,它会自动创建配置文件,可以在 /profile/namehere/ 访问,而不是手动创建。

结论

本质上, - 提交表格 - 用户访问 /profile/name - 抓取模板并从数据库中动态调用信息。 *

你的问题有点笼统。所以我会尽我所能回答。

  1. 要访问 /profile/user,您必须使用 URL-rewriting。您必须启用 Apache 的 mod_rewrite(如果它是您的网络服务器)。然后你必须在 .htaccess 文件中定义规则。

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^profile/(\w+)$ profile.php?user=
    </IfModule>
    

    因此,浏览到 http://host/profile/namehere 将使用 profile.php,而 $_GET['user'] 将使用 "namehere" 定义。

  2. profile/namehere 页面中显示信息(profile.php 未测试):

    <?php
    if (!isset($_GET['user']))
    {
        // Error: Fall in error 404, or display error, or ...
        header("HTTP/1.1 404 Not Found");
        exit(0);
    }
    
    $username = $_GET['user'];
    
    // connect database using PDO
    $pdo = new PDO('mysql:dbname=DBNAME;host=localhost' , 'DBUSER', 'DBPASS') ;
    
    $sth = $pdo->prepare("select * from profile_table where username=:username") ;
    if (!$sth) { /* Error */ die ; }
    $sth->execute([':username' => $username]) ;
    $result = $sth->fetch(PDO::FETCH_OBJ) ;
    if (!$result) { /* Error */ die ; }
    
    // display informations using template
    header("Content-Type: text/html; charset=utf-8") ;
    include("template.php") ;
    exit();
    
  3. 模板示例:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title><?php echo $result->name ?></title>
    </head>
    <body>
        <p><?php echo $result->info1 ?></p>
        <p><?php echo $result->info2 ?></p>
        <p><?php echo $result->info3 ?></p>
    </body>
    </html>