【问题标题】:Updating a user profile stored in $_SESSION data from an SQL database with AJAX使用 AJAX 从 SQL 数据库更新存储在 $_SESSION 数据中的用户配置文件
【发布时间】:2014-03-26 11:54:34
【问题描述】:

我目前正在创建一个网站(我对它非常陌生),并且我添加了单独的配置文件,这些配置文件存储在会话中。配置文件存储在 SQL 数据库中,一切进展顺利,直到我进入“编辑配置文件”页面。就像在大多数网站中一样,我希望拥有编辑您的个人资料信息的功能,例如一页上的用户地址。

例如,如果有人想编辑他们的电子邮件,这是我设置的表单。显示的电子邮件是通过会话 ID 的用户电子邮件,但我如何更新实际的 SQL 数据库?我在所有网页设计方面的经验都非常有限。

<label>Primary E-Mail:</label>
<span id="pemail" class="datainfo"><?php echo $_SESSION['user_email']; ?></span>
<a href="#" class="editlink">Edit Info</a>
<a class="savebtn">Save</a>

在数据库中,我要更新的字段也是 user_email,它位于与会话 user_name 对应的行中(无论谁登录)。用户电子邮件的会话信息通过以下方式获得:

$_SESSION['user_email'] = $result_row->user_email;

不确定这是否有帮助,但由于我一直在拼凑来自各地的代码并试图使其适合我的网站,我不妨也分享电子邮件的注册字段:

$user_email = $this->db_connection->real_escape_string(strip_tags($_POST['user_email'], ENT_QUOTES));

更多的注册:

$sql = "INSERT INTO users (user_name, user_password_hash, user_email, landlord, user_address, user_phone_number) VALUES ('" . $user_name . "', '" . $user_password_hash . "', '" . $user_email . "', '" . 1 . "', '" . $user_address . "', '" . $user_phone_number . "')";
$query_new_user_insert = $this->db_connection->query($sql);

// if user has been added successfully
if ($query_new_user_insert) {
$this->messages[] = '<p class="login_text">Your account has been created successfully. You can now log in.</p>';

我已经尝试制作此编辑个人资料页面很长时间了,它在纸上看起来很简单,但似乎没有任何效果。对于这个可能非常愚蠢的问题,我深表歉意。

tl;dr:如何根据我在网站上的会话登录来编辑 SQL 数据库中的值?

【问题讨论】:

  • 这个问题的答案相对容易但很长。一种方法是有一个表单,它发布 $_SESSION['ID'],然后有一个 PHP 脚本,它使用 SQL 来选择用户详细信息并在表单中显示它们。然后用户可以编辑详细信息并单击保存。保存然后将新的详细信息发布到另一个 PHP 脚本,该脚本再次使用 SQL 更新该用户的详细信息。

标签: php mysql sql session


【解决方案1】:

我通过创建一个对 PHP 的 AJAX 请求来更新数据库中的值来处理这个问题。

如果 PHP 知道您的会话,您可以同时更改会话变量,而无需重新读取数据库。

AJAX 完成后,您已确认数据库已更新。

注意不要在 AJAX 中使用 SQL,否则可能会被黑客入侵。

【讨论】:

    【解决方案2】:

    一些想法:
    我相信您的数据库中有一个唯一的 user_id,因此您只需在每次用户登录时将 user_id 存储在 $_SESSION[] 中,并在他注销时清理它。然后,当您需要用户数据时,您应该查询数据库,执行以下操作:

     SELECT user_email, other_column FROM users WHERE user_id = $_SESSION['user_id']
    

    如果你这样做,当你必须更新用户信息时,你会将当前的 user_id 存储在 $_SESSION['user_id'] 中,所以你必须在 MySQL 中做一个UPDATE。比如:

    UPDATE users SET user_email= ' The new email from php goes here '
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      相关资源
      最近更新 更多