0

我正在尝试echo从仅与登录的人相关的表中获取一些数据。例如,如果我有一个表:ID-username-password-avatar并且我想为登录的人显示头像,我该怎么做? 到目前为止,echo无论谁登录,我都已成功进入第一行的第一个头像。

这是我的会话代码:

<?php
session_start();
if (!isset($_SESSION['myusername']))
{
  header('Location:login.php');
}

这是我尝试根据连接的用户来获取行

  FROM login WHERE username='$name'"

  $conn = new PDO("mysql:host=MYHOST;dbname=MYDBNAME", "NAME", "PASSWORD");
  $name =  "demo"; $stmt = $conn->query("SELECT * FROM login WHERE username='$name'");
  $stmt->execute();
  $row = $stmt->fetch(PDO::FETCH_OBJ);
  $wm = array('avatar' => $row->avatar);
?>
4

1 回答 1

2

把你的名字放在$_SESSION['myusername']超全球。然后您可以从任何页面获取它,直到会话被销毁。

在您的代码中:

$_SESSION['myusername'] = $name;

与此类似,您也可以放置图像路径并显示头像。

编辑

为了进一步改进我的答案,我将为您提供登录表单的完整示例。

假设我们有一个类似以下代码的 (X)HTML 表单,您可以将其命名为“login.php”:

<form action="login.php" method="post">
  <dl>
    <dt>Username:</dt>
      <dd><input type="text" name="username"/></dd>
    <dt>Password:</dt>
      <dd><input type="text" name="password"/></dd>
    <dt><input type="submit"/></dt>
  </dl>
</form>

现在,当您拥有 (X)HTML 代码时,您可以添加必要的 PHP 代码:

<?php

if( isset($_POST["username"]) )
{
  $username = $_POST["username"];
  $password = $_POST["password"];
  $connection = new mysqli("host", "name", "password", "dbname");
  $connection->set_charset("utf8");
  $username = $connection->real_escape_string($username); //Security
  $password = $connection->real_escape_string($password); //Security
  $result = $connection->query("SELECT * FROM login WHERE username LIKE BINARY '$username' AND password LIKE BINARY '$password'");
  if($result->num_rows==1)
  {
    $_SESSION['myusername'] = $username;
    $row = $result->fetch_assoc();
    $_SESSION['myavatar'] = $row["avatar"];
  }
  $connection->close();
}

?>

<form action="login.php" method="post">
  <dl>
    <dt>Username:</dt>
      <dd><input type="text" name="username"/></dd>
    <dt>Password:</dt>
      <dd><input type="text" name="password"/></dd>
    <dt><input type="submit"/></dt>
  </dl>
</form>

现在您打开一个要使用用户名和密码保护的页面,然后输入类似于以下内容的 PHP 代码。您可以在任何具有会话代码的页面上对您的头像做任何您想做的事情。

<?php
  session_start();
  if ( !isset($_SESSION['myusername']) )
  {
    header("Location:login.php");
  }

  echo $_SESSION['myavatar'];
?>

根据登录的用户,将显示不同的头像。

于 2013-08-27T19:13:44.983 回答