PHP 是一种创建动态交互性站点的强大的服务器端脚本语言。PHP 是 "PHP Hypertext Preprocessor" 的首字母缩略词,是一种被广泛使用的开源脚本语言,PHP 脚本在服务器上执行。开源,可供免费下载和使用。PHP 文件能够包含文本、HTML、CSS 以及 PHP 代码,代码在服务器上执行,而结果以纯文本返回浏览器。PHP作为后台语言,能够创建、打开、读取、写入、删除以及关闭服务器上的文件,和前端的交互通过能够接收表单数据并返回处理结果体现。能够发送并取回 cookies,能够添加、删除、修改数据库中的数据。这里将简单了解一下PHP基本语法,它是如何和HTML结合使用、如何与前台表单交互、以及如何与后台数据库交互。
通过一对标签<?php ?>将PHP代码包含在HTML中。当然,包含了PHP代码的页面后缀应该是.php。
<!DOCTYPE html>
<html>
<body>
<?php
echo "my first PHP script";
//phpinfo();
?>
</body>
</html>
有意思的是,这段代码如果是.php后缀,那么使用浏览器打开时会显示源代码;如果是html后缀,直接用浏览器打开时,Chrome会自动给php代码加上注释:

换言之,PHP是后台开发语言,浏览器没有足够的解释能力来分析它。
PHP与表单的交互
PHP使用超全局变量 $_GET 、$_POST 或者$_REQUEST用于收集表单数据。下面的代码中,通过$_GET方法可以得到form通过GET方法提交的name="lastname"的数据。$_GET和$_POST 分别接受通过GET和POST方法提交的数据,而$_REQUEST则可以同时接收通过两者方法提交的数据。
显示给客户端的html页面如下:
<form method="get" action="http://localhost/welcome.php">
<input type=text name=lastname />
<input type=submit>
</form>
服务器端的php页面如下:
<html>
<body>
<h1>
Welcome
<?php
echo $_GET["lastname"];
?>
</h1>
<br>
</body>
</html>
MySQL的使用
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。
很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家(点击→)我的官方群677079770
1、MySQL常用命令
create database name; 创建数据库
use databasename; 选择数据库
drop database name 直接删除数据库,不提醒
show tables; 显示表
describe tablename; 表的详细描述
首先打开数据库。

接下来我们创建新的数据库。

我们选择一个数据库,在其中建表。
首先使用:

选择数据库,然后建表:

建好表之后便可以插入数据:

有了数据之后便可以查询:

还可以看一下数据库主键(primary key)的特点:

因为StudentID是主键,所以不允许有重复的;名字和profile无所谓。
作者:ustcsse308
链接:https://zhuanlan.zhihu.com/p/83863449
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
接下来看一下数据库和PHP的交互。
PHP通过mysqli_connect连接到数据库;然后接收用户前台发来的数据,构造查询语句,从数据库中获得结果,并返回到页面上。
<?php
$mysql = mysqli_connect("localhost","root","root","websecurity");
$sid = $_GET['id'];
$query = "select Name,Profile from Student where StudentID=$sid";
$rs = $mysql->query($query);
while($result = mysqli_fetch_array($rs))
printf($result["Name"],$result["Profile"]);
?>
完整代码如下:
<form action="query.php" method=get>
User id:<br/>
<input type='text' name='id' />
</form>
<?php
$mysql = mysqli_connect("localhost","root","root","Student");
$sid = $_GET['id'];
$query = "select Name,Profile from Student where StudentID=$sid";
$rs = $mysql->query($query);
while($result = mysqli_fetch_array($rs))
printf("<b>%s</b>'s profile is <b>%s</b><br/>",$result["Name"],$result["Profile"]);
?>
最后我们来做一个注册和登录页面。
注册的话,本质上就是朝数据库里添加一些用户信息。因此,首先我们要创建一个表,用于存储用户信息。
CREATE TABLE users (
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
username varchar(100) NOT NULL,
email varchar(100) NOT NULL,
password varchar(100) NOT NULL
);
然后开始写注册页面,注册页面中主要就是一个form,表单;让用户输入自己的信息,并且将用户的输入提交到后台:
<?php include('server.php') ?>
<!DOCTYPE html>
<html>
<head>
<title>Registration system PHP and MySQL</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="header">
<h2>Register</h2>
</div>
<form method="post" action="register.php">
<?php include('errors.php'); ?>
<div class="input-group">
<label>Username</label>
<input type="text" name="username" value="<?php echo $username; ?>">
</div>
<div class="input-group">
<label>Email</label>
<input type="email" name="email" value="<?php echo $email; ?>">
</div>
<div class="input-group">
<label>Password</label>
<input type="password" name="password_1">
</div>
<div class="input-group">
<label>Confirm password</label>
<input type="password" name="password_2">
</div>
<div class="input-group">
<button type="submit" class="btn" name="reg_user">Register</button>
</div>
<p>
Already a member? <a href="login.php">Sign in</a>
</p>
</form>
</body>
</html>
这里之所以使用了PHP,主要是为了在用户输入了一些信息的情况下,可以进一步保留和显示信息。
然后使用CSS来美化页面,命名为style.css;和上面的代码保持一致:
* {
margin: 0px;
padding: 0px;
}
body {
font-size: 120%;
background: #F8F8FF;
}
.header {
width: 30%;
margin: 50px auto 0px;
color: white;
background: #5F9EA0;
text-align: center;
border: 1px solid #B0C4DE;
border-bottom: none;
border-radius: 10px 10px 0px 0px;
padding: 20px;
}
form, .content {
width: 30%;
margin: 0px auto;
padding: 20px;
border: 1px solid #B0C4DE;
background: white;
border-radius: 0px 0px 10px 10px;
}
.input-group {
margin: 10px 0px 10px 0px;
}
.input-group label {
display: block;
text-align: left;
margin: 3px;
}
.input-group input {
height: 30px;
width: 93%;
padding: 5px 10px;
font-size: 16px;
border-radius: 5px;
border: 1px solid gray;
}
.btn {
padding: 10px;
font-size: 15px;
color: white;
background: #5F9EA0;
border: none;
border-radius: 5px;
}
.error {
width: 92%;
margin: 0px auto;
padding: 10px;
border: 1px solid #a94442;
color: #a94442;
background: #f2dede;
border-radius: 5px;
text-align: left;
}
.success {
color: #3c763d;
background: #dff0d8;
border: 1px solid #3c763d;
margin-bottom: 20px;
}
在服务器端,必须有PHP代码来处理用户提交的请求:
<?php
session_start();
// initializing variables
$username = "";
$email = "";
$errors = array();
// connect to the database
$db = mysqli_connect('localhost', 'root', 'root', 'Student');
// REGISTER USER
if (isset($_POST['reg_user'])) {
// receive all input values from the form
$username = mysqli_real_escape_string($db, $_POST['username']);
$email = mysqli_real_escape_string($db, $_POST['email']);
$password_1 = mysqli_real_escape_string($db, $_POST['password_1']);
$password_2 = mysqli_real_escape_string($db, $_POST['password_2']);
// form validation: ensure that the form is correctly filled ...
// by adding (array_push()) corresponding error unto $errors array
if (empty($username)) { array_push($errors, "Username is required"); }
if (empty($email)) { array_push($errors, "Email is required"); }
if (empty($password_1)) { array_push($errors, "Password is required"); }
if ($password_1 != $password_2) {
array_push($errors, "The two passwords do not match");
}
// first check the database to make sure
// a user does not already exist with the same username and/or email
$user_check_query = "SELECT * FROM users WHERE username='$username' OR email='$email' LIMIT 1";
$result = mysqli_query($db, $user_check_query);
$user = mysqli_fetch_assoc($result);
if ($user) { // if user exists
if ($user['username'] === $username) {
array_push($errors, "Username already exists");
}
if ($user['email'] === $email) {
array_push($errors, "email already exists");
}
}
// Finally, register user if there are no errors in the form
if (count($errors) == 0) {
$password = md5($password_1);//encrypt the password before saving in the database
$query = "INSERT INTO users (username, email, password)
VALUES('$username', '$email', '$password')";
mysqli_query($db, $query);
$_SESSION['username'] = $username;
$_SESSION['success'] = "You are now logged in";
header('location: index.php');
}
}
注册页面:

在通过页面注册了一个用户之后,查看数据库,其中已经有了内容:
接下来,做一下登录页面:
<?php include('server.php') ?>
<!DOCTYPE html>
<html>
<head>
<title>Registration system PHP and MySQL</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="header">
<h2>Login</h2>
</div>
<form method="post" action="login.php">
<?php include('errors.php'); ?>
<div class="input-group">
<label>Username</label>
<input type="text" name="username" >
</div>
<div class="input-group">
<label>Password</label>
<input type="password" name="password">
</div>
<div class="input-group">
<button type="submit" class="btn" name="login_user">Login</button>
</div>
<p>
Not yet a member? <a href="register.php">Sign up</a>
</p>
</form>
</body>
</html>
处理Login的代码同样写在server.php中,添加代码如下:
if (isset($_POST['login_user'])) {
$username = mysqli_real_escape_string($db, $_POST['username']);
$password = mysqli_real_escape_string($db, $_POST['password']);
if (empty($username)) {
array_push($errors, "Username is required");
}
if (empty($password)) {
array_push($errors, "Password is required");
}
if (count($errors) == 0) {
$password = md5($password);
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$results = mysqli_query($db, $query);
if (mysqli_num_rows($results) == 1) {
$_SESSION['username'] = $username;
$_SESSION['success'] = "You are now logged in";
header('location: index.php');
}else {
array_push($errors, "Wrong username/password combination");
}
}
}
我们需要errors.php帮助我们打印出一些错误信息:
<?php if (count($errors) > 0) : ?>
<div class="error">
<?php foreach ($errors as $error) : ?>
<p><?php echo $error ?></p>
<?php endforeach ?>
</div>
<?php endif ?>
然后,再写一个index.php
<?php
session_start();
if (!isset($_SESSION['username'])) {
$_SESSION['msg'] = "You must log in first";
header('location: login.php');
}
if (isset($_GET['logout'])) {
session_destroy();
unset($_SESSION['username']);
header("location: login.php");
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Home</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="header">
<h2>Home Page</h2>
</div>
<div class="content">
<!-- notification message -->
<?php if (isset($_SESSION['success'])) : ?>
<div class="error success" >
<h3>
<?php
echo $_SESSION['success'];
unset($_SESSION['success']);
?>
</h3>
</div>
<?php endif ?>
<!-- logged in user information -->
<?php if (isset($_SESSION['username'])) : ?>
<p>Welcome <strong><?php echo $_SESSION['username']; ?></strong></p>
<p> <a href="index.php?logout='1'" style="color: red;">logout</a> </p>
<?php endif ?>
</div>
</body>
</html>
tieyixia
<?php
session_start();
// initializing variables
$username = "";
$email = "";
$errors = array();
// connect to the database
$db = mysqli_connect('localhost', 'root', 'root', 'Student');
// REGISTER USER
if (isset($_POST['reg_user'])) {
// receive all input values from the form
$username = mysqli_real_escape_string($db, $_POST['username']);
$email = mysqli_real_escape_string($db, $_POST['email']);
$password_1 = mysqli_real_escape_string($db, $_POST['password_1']);
$password_2 = mysqli_real_escape_string($db, $_POST['password_2']);
// form validation: ensure that the form is correctly filled // by adding (array_push()) corresponding error unto $errors array
if (empty($username)) { array_push($errors, "Username is required"); }
if (empty($email)) { array_push($errors, "Email is required"); }
if (empty($password_1)) { array_push($errors, "Password is required"); }
if ($password_1 != $password_2) {
array_push($errors, "The two passwords do not match");
}
// first check the database to make sure
// a user does not already exist with the same username and/or email
$user_check_query = "SELECT * FROM users WHERE username='$username' OR email='$email' LIMIT 1";
$result = mysqli_query($db, $user_check_query);
$user = mysqli_fetch_assoc($result);
if ($user) { // if user exists
if ($user['username'] === $username) {
array_push($errors, "Username already exists");
}
if ($user['email'] === $email) {
array_push($errors, "email already exists");
}
}
// Finally, register user if there are no errors in the form
if (count($errors) == 0) {
$password = md5($password_1);//encrypt the password before saving in the database
$query = "INSERT INTO users (username, email, password)
VALUES('$username', '$email', '$password')";
mysqli_query($db, $query);
$_SESSION['username'] = $username;
$_SESSION['success'] = "You are now logged in";
header('location: index.php');
}
}
if (isset($_POST['login_user'])) {
$username = mysqli_real_escape_string($db, $_POST['username']);
$password = mysqli_real_escape_string($db, $_POST['password']);
if (empty($username)) {
array_push($errors, "Username is required");
}
if (empty($password)) {
array_push($errors, "Password is required");
}
echo "hello";
if (count($errors) == 0) {
$password = md5($password);
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$results = mysqli_query($db, $query);
if (mysqli_num_rows($results) == 1) {
$_SESSION['username'] = $username;
$_SESSION['success'] = "You are now logged in";
header('location: index.php');
}else {
array_push($errors, "Wrong username/password combination");
}
}
}
?>
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家(点击→)我的官方群677079770
本文介绍了PHP的基本语法和与HTML的结合使用,阐述了PHP如何处理表单数据,以及如何与MySQL数据库进行交互。通过示例代码展示了创建数据库、表,以及执行增删查改操作。此外,还提供了注册和登录页面的实现,帮助读者理解PHP在实际应用中的作用。
326

被折叠的 条评论
为什么被折叠?



