查询行取决于登录

时间:2013-08-27 19:02:19

标签: php mysql

我正在尝试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);
?>

1 个答案:

答案 0 :(得分: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'];
?>

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