首页 > 解决方案 > 如何使用php将用户数据保存在不同的页面中

问题描述

我有 3 页,我正在尝试使用 session 创建一个简单的会员登录系统。

在我的第一页(index.php)中,我有数据库连接、会话设置和以下登录:

<form action="index.php" method="POST">
  <table>
    <tr>
        <td><label>Username</label></td>
        <td><input type="text" name="username" /></td>
    </tr>

    <tr>
        <td><label>Password</label></td>
        <td><input type="password" name="password" /></td>
    </tr>

    <tr>
        <td></td>
        <td><input type="submit" name="submitbtn" value="Login" /></td>
    </tr>

  </table>
</form>

在会员的个人资料页面(member.php)中,我有一个表格可以从登录的特定会员的数据库中获取数据:

<table>
  <?php $members=getMember(); ?>

  <?php  while($member = $members->fetch_assoc()) : ?>

  <tr><td><label>Name</label></td><td><?php echo $member['name'];?></td></tr>
  <tr><td><label>Age</label></td><td><?php echo $member['age'];?></td></tr>

  <?php endwhile; ?>
</table> 

在 dbconnection.php 页面我有这个功能:

<?php

function getMember(){
  $db_conn = getConnection();

  $username = isset($_POST['username']) ? $_POST['username'] : '';
  $password = isset($_POST['password']) ? $_POST['password'] : '';  

  if(!$db_conn) return false;

  $sql = "SELECT * FROM member WHERE username ='$username' AND password='$password'";

  $result = $db_conn->query($sql);

  $db_conn->close();

  return $result;
}

会话设置的代码是:

<?php 
$username="";
$password="";
$success=true;

$_SESSION['username']=$username;

if(isset($_POST['username']) && isset($_POST['password']))
{
    $username=$_POST['username'];
    $password=$_POST['password'];       

    if(check_in_db($username,$password)){
        $_SESSION['logged_in']=1;
        $_SESSION['username']=$username;
        header("Location: adminPanel.php");
    }
    else{
        $success=false;
    }
}   

?>

但是当我登录时,数据(姓名和年龄)没有在 member.php 页面中获取(显示)(我无法添加图像,因为我的声誉低于 10)。

感谢您的时间 。

标签: phpmysqlsession

解决方案


我建议您查看php 类型比较以了解其isset()工作原理。为了让您了解 php session 的工作原理以及用户如何在不同的页面中持续存在,您必须深入了解 php session。我建议您在处理用户数据时使用PDO及其准备方法。在这里你会得到一个非常简单的例子

以下代码正在运行。所以请看一下它们是如何构造的:

数据库连接.php

<?php

function getConnection() {

    $servername = "localhost";
    $username = "root";
    $password = "12345";
    $dbname = "db_test";

    $conn = new mysqli($servername, $username, $password, $dbname);

    if ($conn->connect_error) {
          die("Connection failed: " . $conn->connect_error);
    }

    return $conn;
}

function check_in_db($username, $password) {
  $db_conn = getConnection();

  if (!$db_conn) {
    return false;
  }

  $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
  $result = $db_conn->query($sql);

  return $result->num_rows > 0;
}

function getMember($username, $password) {
  $db_conn = getConnection();

  if (!$db_conn) {
    return false;
  }

  $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
    $result = $db_conn->query($sql);

  return $result;
}

索引.php

<?php

session_start();

require_once('./dbconnection.php');

$success = true;

if(isset($_POST['username']) && isset($_POST['password'])) {
  $username = $_POST['username'];
  $password = $_POST['password'];

  if(check_in_db($username, $password)) {
    $_SESSION['logged_in'] = 1;
    $_SESSION['username'] = $username;
    $_SESSION['password'] = $password;
    header("Location: adminPanel.php");
  }
  else{
      $success=false;
  }
}
?>

<form action="index.php" method="POST">
  <table>
    <tr>
        <td><label>Username</label></td>
        <td><input type="text" name="username" /></td>
    </tr>

    <tr>
        <td><label>Password</label></td>
        <td><input type="password" name="password" /></td>
    </tr>

    <tr>
        <td></td>
        <td><input type="submit" name="submitbtn" value="Login" /></td>
    </tr>

  </table>
</form>

和 member.php

<?php 
    session_start();

    require_once('./dbconnection.php');

    $username = $_SESSION['username'];      
    $password = $_SESSION['password'];
    $members = getMember($username, $password);     

?>

<table>
  <?php  while($member = $members->fetch_assoc()) : ?>
        <tr><td><label>Name</label></td><td><?php echo $member['name'];?></td></tr>
        <tr><td><label>Age</label></td><td><?php echo $member['age'];?></td></tr>
  <?php endwhile; ?>
</table> 

推荐阅读