我已经为登录系统设置了一个数据库。游客现在可以注册和登录。我使用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']值相同的行来检索他们喜欢的颜色。
这是整个过程的概述。实现它涉及到相当多的细节。