说明:
- 本方法只是进行基本的原理讲解,并不可用做实际项目运用。
- 在阅读本方法前应阅读:PHP:注册信息存储/登录信息验证基本原理,一些重复操作将不再注明。
- 系统运行环境应已调试完毕,可进行数据库操作。
一. 注册功能
1. HTML(register.html)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Register</title>
</head>
<body>
<form action="registerHandler.php" method="post">
注册用户:<input type="text" name="user"/><br>
注册密码:<input type="text" name="pass"/><br>
<input type="submit" value="注册"/>
</form>
</body>
</html>
2. php(registerHandler.php)
首先应进行数据库的创建,下面代码在创建完成后删除即可,否则反复创建,会反复提示创建失败,影像使用效果。
<?php
$result = mysql_query("create database `sqlTest` character set 'utf8' collate 'utf8_general_ci' ");
if ($result) echo "创建成功";
else echo "创建失败" . $result;
?>
<?php
header("Content-type:text/html;charset=utf-8");
$user = $_POST["user"];
$pass = $_POST["pass"];
$link = mysql_connect("localhost", "root");
// 先选择了这个数据库进行操作
mysql_select_db("N_&_P", $link);
// 创建表
$result = mysql_query("create table if not exists `N_&_P` (username varchar(255) primary key, password text) default charset=utf8", $link);
mysql_query("set names utf8", $link);
if ($result) {
echo "成功";
$r = mysql_query("insert into `N_&_P` values ('{$user}', '{$pass}')");
if ($r) echo "成功" . "<hr>";
else echo "失败" . "<hr>";
}
?>
二. 登录功能
1. HTML(login.html)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Register</title>
</head>
<body>
<form action="loginHandler.php" method="post">
登录用户:<input type="text" name="user"/><br>
登录密码:<input type="text" name="pass"/><br>
<input type="submit" value="登录"/>
</form>
</body>
</html>
2. php(loginHandler.php)
<?php
header("Content-type:text/html;charset=utf-8");
$user = $_POST["user"];
$pass = $_POST["pass"];
$link = mysql_connect("localhost", "root");
mysql_select_db("N_&_P", $link);
$re = mysql_query("select * from `N_&_P` where username = '{$user}' and password = '{$pass}'");
$obj = mysql_fetch_object($re);
if ($obj) echo "登录成功了!";
else echo "登录失败了!";
?>
三. 代码解释
在这里放一整段 php 与 SQL 协同对数据库操作的代码,包含用到的代码解释。与上文无直接关系。
<?php
header("Content-type:text/html;charset=utf-8");
// 数据库操作
// 1. 打开数据库,进行数据库链接
// 参数1: 数据库的位置:localhost
// 参数2:默认的用户名:root 还有密码,因为是默认的,所以没有密码
$link = mysql_connect("localhost", "root");
//
// 2. 创建数据库
// 使用 SQL 语句,进行创建数据库sqlTest,并且选取了不能出现乱码的字符集
// 只有第一次创建是成功的,再刷新就是失败的,因为已经有重名数据库了
// 已经创建完了,就给注了,不然来会提示创建失败也是很烦人的
//$result = mysql_query("create database `sqlTest` character set 'utf8' collate 'utf8_general_ci' ");
//if ($result) {
// echo "创建成功";
//} else {
// echo "创建失败" . $result;
//}
//
//
// 选择数据库
// 不填也可以,语句会选最近的进行选择,但是不推荐
mysql_select_db("sqlTest", $link);
// 创建表 text不可以设置为主键
// 在数据库中,执行 sql 语句,创建表
$result = mysql_query("create table if not exists `AAA` (id integer primary key,name text) default charset=utf8", $link);
// 将所有列和内容的字符集设置为 utf8
mysql_query("set names utf8", $link);
if ($result) {
echo "成功";
$r = mysql_query("insert into `AAA` values (1, 'aa')");
if ($r) {
echo "成功" . "<hr>";
} else {
echo "失败" . "<hr>";
}
// 查询语句(select)
$re = mysql_query("select * from `AAA`");
// mysql_fetch_object($result); // 每次都从结果中取出一条数据(对象的形式)
// mysql_fetch_array($result); // 以数组的形式(索引和关联)
while ($obj = mysql_fetch_object($re)) {
// 每次取出一个对象
var_dump($obj);
echo '<hr>';
}
} else {
echo "失败";
}
// 如果要让文本类型当主键,必须要指定文本的长度
// 推荐适用类型:vasrchar
// sql 举例:
// create table xxx(username varchar(255) primary key);
?>