到目前为止,你已经了解了足够多的PHP了。该写个小程序练手了。
用户注册系统
仍然是 @lvye (Green_leaves)出的题:
- 写一个index.php页面,有用户名和密码表单,post提交到check.php,输出用户名和"用户名+密码"的md5值
- 本地建立一个mysql数据库,名叫segmentfault,建立一个表user,字段username password将上题check.php接收到的内容存入
我们先完成HTML部分:
<!DOCTYPE HTML>
<html>
<head>
<title>注册</title>
</head>
<body>
<h1>注册</h1>
<form action="check.php" enctype="application/x-www-form+xml" method="post">
<p>
<label for="name">邮箱</label>
<input name="name" required type="email" placeholder="请填写有效邮箱"></input>
</p>
<p>
<label for="passphrase">密码</label>
<input name="passphrase" required type="passphrase"></input>
</p>
<p>
<input type="submit" value="提交"></input>
</form>
</body>
</html>
注意,HTML5对表单的支持比以往版本的HTML好很多,可以直接指明各种type
。比如制定了type="email"
,会检验用户提交的邮件地址是否合法。
然后是check.php
。
<!DOCTYPE>
<html>
<head>
<title> 注册成功!</title>
</head>
<body>
<h1> 哇咔咔,你已经注册成功啦!</h1>
<p>呃……不过注册成功了好像也没什么用,因为本网站除了注册以外好像没有其他功能。</p>
<p>那么,作为补偿,我会告诉你,你的“邮箱+密码”的md5值。</p>
<p>你的邮箱是:
下面是PHP部分,直接嵌入HTML,这是PHP的优势:
<?php
$username = htmlspecialchars($_POST["name"]);
echo $username;
?>
</p>
<p>你的“邮箱+密码”的md5值是:
<?php
$passphrase = htmlspecialchars($_POST["passphrase"]);
$md5sum = md5($username . $passphrase);
echo $md5sum;
注意我们用了htmlspecialchars
,避免用户填入奇怪的东西。
然后是数据库操作,我们使用mysqli
,(mysql
已经废弃了,现在推荐用 mysqli
,当然你也可以用 PDO。)
首先我们指明数据库的一些信息:
$db_server = "localhost";
$db_user = "db_user";
$db_pass = "password";
$db_name = "segmentfault";
连接到数据库,并且确保连接正常:
$conn = new mysqli($db_server, $db_user, $db_pass, $db_name);
if (mysqli_connect_errno()) {
trigger_error("Database connection failed: " . mysqli_connect_error(), E_USER_ERROR);
}
使用SQL语句创建表
$sql = "CREATE TABLE user(username CHAR(140), password CHAR(140))";
添加记录
mysqli_query($conn, "INSERT INTO user (username, password) VALUES ($username, $md5sum)");
手写SQL不太爽,实际应用中,框架会为你提供各种方便。
关闭数据库:
mysqli_close($conn);
?>
</p>
</body>
</html>
好了,我们已经成功地写好了一个小应用,也顺带学习了如何访问 MySQL 数据库。今天就到这里了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。