使用PHP的不同用户的不同个人资料页面

时间:2019-07-12 16:22:36

标签: php

嘿,我是php新手,需要帮助才能为每个用户创建一个新页面。我已经有一个用户登录和注册系统。我也有一个profiles.php页面,但是,如何让网站为每个新用户创建一个自动网页。

每当我尝试通过$_GET$_POST连接它时,都会出现未定义的索引错误。

include ("includes/profiles.dbh.inc.php");

$requested_user = $_POST['mailuid'];

try{
    $stmt2 = $conn2->prepare("SELECT * FROM profile WHERE id = ?");

    $stmt2->execute(array($requested_user));

    $mydata = $stmt2->fetch();               
} catch (Exception $e) {               
    //error with mysql
    die();
}

1 个答案:

答案 0 :(得分:0)

我已经看过几次这个问题。您需要考虑的第一件事是用户如何与该页面进行交互

  1. 他们要通过链接访问它吗? http://example.com/index.php?user=1
  2. 还是他们要通过 post 提交表单? http://example.com/index.php

这个区别很重要,因为它改变了您处理他们的请求的方式。

让我们看看每个:

  1. 通过链接:http://example.com/index.php?user=1

这将向您的服务器发出一个 get 请求,因此您需要通过$_GET处理它。

if (isset($_GET['user'])) {
   $userId = $_GET['user'];

   // ... query your DB and output result
}
  1. 通过使用 post 的表单:http://example.com/index.php(包含“ user = 1”的正文)。

这将向您的服务器发出一个 post 请求,因此您需要通过$_POST

处理它
if (isset($_POST['user'])) {
   $userId = $_POST['user'];

   // ... query your DB and output result
}

请注意,很重要的一点是,HTML <form>可以提交 post get 请求。您可以通过其 method 属性对其进行控制。如果未指定method属性,则默认为 get

<form method="post">
   ...
</form>

<form method="get">
   ...
</form>

因此,回答您的问题。您可能会遇到未定义的错误,因为您尝试使用键 mailuid $_POST['mailuid'])访问帖子数组,但该错误不存在。它不存在是因为:

  • 您收到一个获取请求,并且帖子为空或
  • 您正在接收发帖请求,但其中不包含键 mailuid

要调试,请回到基础知识-使用$_GET

将代码更改为使用$_GET['mailuid'],然后确保使用相应的查询字符串-...?mailuid=1访问页面。

最后,打开错误报告-https://stackoverflow.com/a/5438125/296555。您应该始终这样做并更正所有错误和警告。