繁体   English   中英

查询行取决于登录

[英]Query Row Depending on Login

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

将您的名字放在$_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'];
?>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM