演示页面: 帐户登录保护个人核心信息
本实验是在上个实验的基础上的改进。
我们要访问的存储关键个人信息的页面文件名为 093.php,登录页面名为 091.php,注销页面名为 092.php。
存储关键个人信息的页面文件的功能:首先检测用户是否登录,如果未登录,则跳转到登录页面 091.php,登录成功后再跳转会093.php页面。登录后,显示用户名和关键信息,并显示“注销”链接。
用户点击“注销”后,销毁Session内的数据。
从数据库中通过学号获得用户信息,文件名命名为 090.php,演示页面: 获得用户信息
建议将从数据库中读取信息写出单独的功能模块:函数。
function get_student($sid, $conn) { $sql = "select * from student where student_id='$sid'"; $result= mysqli_query($conn, $sql); $student = mysqli_fetch_array($result); return $student; }
学生表的结构
CREATE TABLE IF NOT EXISTS `student` ( `student_id` varchar(30) NOT NULL, `password` varchar(32) NOT NULL, `name` varchar(50) NOT NULL, `sex` varchar(8) DEFAULT NULL, `phone1` varchar(20) DEFAULT NULL, `phone2` varchar(20) DEFAULT NULL, `dorm` varchar(40) DEFAULT NULL, `note` varchar(255) DEFAULT NULL, `banji_id` smallint(5) unsigned NOT NULL, `banji_name` varchar(50) NOT NULL, `hidden` int(11) NOT NULL DEFAULT '0', `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`student_id`), KEY `idx_fk_banji_id` (`banji_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
参考答案
function get_student($sid, $conn) { $sql = "select * from student where student_id='$sid'"; // echo $sql; $result= mysqli_query($conn, $sql); $student = mysqli_fetch_array($result); return $student; } require_once 'db_config.php'; header("Content-type:text/html;charset=utf-8"); $conn = mysqli_connect($host, $user, $pass, $db); if (!$conn) die("Connection failed: " . mysqli_connect_error()); mysqli_set_charset($conn, "utf8"); ob_start(); session_start(); $msg = ''; if (isset($_POST['login']) && !empty($_POST['username']) && !empty($_POST['password'])) { $student = get_student($_POST['username'], $conn); var_dump($student); echo md5($_POST['password']); if ($student && $_POST['username'] == $student['student_id'] && md5($_POST['password']) == $student['password']) { $_SESSION['valid'] = true; $_SESSION['timeout'] = time(); $_SESSION['username'] = $_POST['username']; $_SESSION['student'] = $student; $msg = '你已经成功登陆!'; if (isset($_SESSION['url'])) header("location: ".$_SESSION['url']); } else { $msg = '错误的用户名或者密码,请重新输入'; } } ?>