如何在 php 中创建我的帐户页面


How to create a my account page in php

我正在尝试创建一个"我的帐户"页面,用户可以在其中查看他们在注册页面上输入到站点中的信息。 我只希望它显示当前登录的用户的信息。

这是我到目前为止所拥有的,但它不起作用

<?php
   include_once('DBconnect.php');

    $sql= "SELECT * FROM users WHERE username='".$username."'";
    $res = mysql_query($sql) or die(mysql_error());
  while ($row = mysql_fetch_assoc($res)){
      $username = $row['username'];
      $firstname = $row['first_name'];
      $lastname = $row['last_name'];
      $email = $row['email'];
      $school = $row['school'];
      $topics .= "<tr><td>username:".$username." </td><td>First name:".$firstname."</td><td>Last name:".$lastname."</td><td>email: ".$email."</td><td>school: ".$school."</td></tr>";
  echo $topics;
  } ?>
尝试将

mysql_fetch_assoc()封装在一个返回数组结果集的函数中,如下所示:

 function populate_array($res) {
  while ($row = @mysql_fetch_assoc($res) {
     $result_array[] = $row;
  }
  return $result_array;
}

然后使用 for 循环循环遍历结果集,如下所示:

$result = populate_array($res);
$sets = count($result);
for($i=0;$i<$sets;$i++) {
  $topics .= $result[$i]['username'] . $result[$i]['firstname'] . $result[$i]['lastname']; // continue
}
echo $topics;

您需要从会话中调用$username,请尝试以下代码:

<?php
   include_once('DBconnect.php');
    $username = $_SSESSION['username'];
    $sql= "SELECT * FROM users WHERE username='".$username."'";
    $res = mysql_query($sql) or die(mysql_error());
  while ($row = mysql_fetch_assoc($res)){
      $username = $row['username'];
      $firstname = $row['first_name'];
      $lastname = $row['last_name'];
      $email = $row['email'];
      $school = $row['school'];
      $topics .= "<tr><td>username:".$username." </td><td>First name:".$firstname."</td><td>Last name:".$lastname."</td><td>email: ".$email."</td><td>school: ".$school."</td></tr>";
  echo $topics;
  } ?>

你的变量$username从何而来?您的代码似乎很好。你得到任何错误吗?您可以进行的一些改进包括:

  1. 使用 Mysqli_* 扩展或 PDO 扩展,因为 mysql_* 已过时,很快就会删除
  2. 在将变量放入查询之前,请使用以下命令对其进行转义:
    • mysql_real_escape_string()
    • mysqli_real_escape_string()
    • PDO::quote()
    • 或者使用 mysqli 和 PDO 准备语句

您可以尝试添加:

if (!$res) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}
if (mysql_num_rows($result) == 0) {
    echo "No rows found";
    exit;
}

看看你是否收到错误

编辑:

您的

用户名通常来自您的表单,或者如果用户已经从$_SESSION[]全局登录。但是,如果用户已登录,则可以更好地将所有信息存储到会话中,这样您就不必一直从数据库请求该信息。

如果用户已成功登录,则必须调用$_SESSION['username'] = $username;然后在此页面中,您可以调用$username = $_SESSION['username'];

并且不要忘记在使用会话的每个页面上调用session_start();