如何让注册用户保存数据?



我已经为登录系统设置了一个数据库。游客现在可以注册和登录。我使用phpMyAdmin和php文件。这工作。

但是现在我想让登录的用户保存数据。为了便于测试,假设我想让他们保存自己喜欢的颜色。我假设我需要某种表单让他们输入数据。

<form action="" method="post"> 
<label>My favorite color:</label>
<input type="text">
<input type="submit" value="Save">
</form> 

我如何确保他们保存的颜色将在数据库中保存在他们的用户名下?我很难找到这个问题的答案。

在phpMyAdmin我有一个名为'users'的表,列:id,用户名,密码和created_at。

不知道我还需要补充什么信息。如果你们需要更多信息,请告诉我。谢谢你!

编辑:

谢谢你的投入,伙计们。

@brombeer和@user3425506是的,表"users"中的列"id"是一个主键。我添加了一个名为"colors"的表。这个表有列'id'和'favorite_color'。"favorite_color"列是标准的,我没有对它做什么特别的改动。然而,在"id"的情况下,我保持它与表"用户"中的"id"相同,这是INT NOT NULL PRIMARY KEY AUTO_INCREMENT。但是我想知道这是否有必要,我也想知道这两个表现在是如何连接的。

我在html表单中添加了name="favorite-color"

在登录用户开始的页面上有以下代码:

if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
header("location: login.php");
exit;
}

在用户登录的页面上,我在以下代码下发现了'loggedin':

$_SESSION["loggedin"] = true;
$_SESSION["id"] = $id;
$_SESSION["username"] = $username;  

这是否意味着我需要在html表单下的$_SESSION['loggedin']?

给你的输入元素添加一个name属性,比如favorite-color,像这样:

<form action="" method="post"> 
<label>My favorite color:
<input type="text" name="favorite-color">
</label>
<input type="submit" value="Save">
</form>

现在,当用户提交表单时,他们输入的值将在变量$_POST['favorite-color']中可用。

如果用户登录了,他们的用户id(来自用户表)应该作为会话变量可用,例如$_SESSION['user'](您需要检查代码以查看要使用的确切名称)。

如果你在数据库中创建了一个名为colors的表,其中包含一个名为user_id的字段和一个名为favorite_color的字段,那么你应该能够使用描述的$_POST和$_SESSION变量向该表插入一行。

然后每当有人登录时,您可以通过从颜色表中选择user_id值与登录用户的$_SESSION['user']值相同的行来检索他们喜欢的颜色。

这是整个过程的概述。实现它涉及到相当多的细节。

最新更新