php - 如何使用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)。
感谢您的时间 。
解决方案
我建议您查看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>
推荐阅读
- python - 在多索引数据框和fillna中创建新列
- php - PHP网页连接MYSql数据库失败
- ios - 需要本地化 IOS 权限模式 - 这是如何完成的?
- racket - 如何匹配球拍中的语法?
- ubuntu - Vim 复制到系统剪贴板有效,但不能粘贴到同一终端
- python - Scikit-learn 均值插补在插补后给出不同的均值
- scala - 如何将 Vec(n,Bool()) 转换为 UInt 值
- java - 试图与 web3j (Android) 取得平衡,得到空指针异常
- video - 如何让 2 个浏览器同步视频?
- atom-editor - 如何在 Atom 的 platformio-ide-terminal 中插入多行突出显示的文本?