PHP
以<?php
开始,以 ?> 结束
每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。
有两种在浏览器输出文本的基础指令:echo 和 print。
PHP
变量
-
变量以 $ 符号开始,后面跟着变量的名称
-
变量名必须以字母或者下划线字符开始
-
变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
-
变量名不能包含空格
-
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
与python一样不用声明,在第一次赋值时创建
当赋一个文本值给变量时,在文本值两侧加上引号。类似字符串变量。
在函数内调用函数外定义的全局变量,需要在函数中的变量前加上 global 关键字,同时PHP
将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。
<?php $x=5; $y=10; function myTest() { global $x,$y; $y=$x+$y; } /* function myTest() { $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; } */ myTest(); echo $y; // 输出 15 ?>
Static 作用
域:
当一个函数完成时,它的所有变量通常都会被删除。有时候如果希望某个局部变量不要被删除,就在第一次声明变量时使用 static 关键字,然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。
该变量仍然是函数的局部变量。
<?php function myTest() { static $x=0; echo $x; $x++; echo PHP_EOL; // 换行符 } myTest(); myTest(); myTest(); ?>
echo与print的区别
-
echo - 可以输出一个或多个字符串
-
print - 只允许输出一个字符串,返回值总为 1
echo输出可以带括号也可以不带,输出速度快且没有返回值
可以用HTML语法输出内容
<?php echo "<h2>PHP 很有趣!</h2>"; echo "Hello world!<br>"; echo "我要学 PHP!<br>"; echo "这是一个", "字符串,", "使用了", "多个", "参数。"; ?>
换行要输出"<br>";
定界符 EOF
-
必须后接分号,否则编译通不过。
-
结束标识必须顶格独自占一行。
<?php $name="runoob"; $a= <<<EOF "abc"$name "123" EOF; // 结束需要独立一行且前后不能空格 $str2 = <<<'EOT' Hello, $name! EOT; echo $str2; // 输出:Hello, $name! //当EOT被单引号圈起来,就不转义,包括/n,/t都原样输出 echo $a; ?>
PHP
支持以下几种数据类型:
-
String(字符串)
-
Integer(整型)
-
Float(浮点型)
-
Boolean(布尔型)
-
Array(数组)
-
Object(对象)
-
NULL(空值)
-
Resource(资源类型)
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。可以通过设置变量值为 NULL 来清空变量数据。
PHP
类型比较
-
松散比较:使用两个等号 == 比较,只比较值,不比较类型。
-
严格比较:用三个等号 === 比较,除了比较值,也比较类型。
<?php if(42 == "42") { echo '1、值相等'; } //1、值相等 echo PHP_EOL; // 换行符 if(42 === "42") { echo '2、类型相等'; } else { echo '3、类型不相等'; } //3、类型不相等 ?>
"42" 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 "FALSE" 是一个字符串。
设置常量
设置常量,使用 define() 函数,函数语法如下:
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
-
name:必选参数,常量名称,即标志符。
-
value:必选参数,常量的值。
-
case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的。
<?php // 区分大小写的常量名 define("GREETING", "欢迎访问 Runoob.com"); echo GREETING; // 输出 "欢迎访问 Runoob.com" echo '<br>'; echo greeting; // 输出 "greeting",但是有警告信息,表示该常量未定义 ?>
常量是全局的
组合比较符<=>又叫太空船操作符
$c = $a <=> $b;
-
如果 $a > $b, 则 $c 的值为 1。
-
如果 $a == $b, 则 $c 的值为 0。
-
如果 $a < $b, 则 $c 的值为 -1。
面向对象
面向对象是一种编程思想和方法,它将程序中的数据和操作数据的方法封装在一起,形成"对象",并通过对象之间的交互和消息传递来完成程序的功能。面向对象编程强调数据的封装、继承、多态和动态绑定等特性.
对象的主要三个特性:
-
对象的行为:对象可以执行的操作,比如:开灯,关灯就是行为。
-
对象的形态:对对象不同的行为是如何响应的,比如:颜色,尺寸,外型。
-
对象的表示:对象的表示就相当于身份证,具体区分在相同的行为与状态下有什么不同。
面向对象编程的三个主要特性:
-
封装(Encapsulation):指将对象的属性和方法封装在一起,使得外部无法直接访问和修改对象的内部状态。通过使用访问控制修饰符(public、private、protected)来限制属性和方法的访问权限,从而实现封装。
-
继承(Inheritance):指可以创建一个新的类,该类继承了父类的属性和方法,并且可以添加自己的属性和方法。通过继承,可以避免重复编写相似的代码,并且可以实现代码的重用。
-
多态(Polymorphism):指可以使用一个父类类型的变量来引用不同子类类型的对象,从而实现对不同对象的统一操作。多态可以使得代码更加灵活,具有更好的可扩展性和可维护性。在
PHP 中
,多态可以通过实现接口(interface)和使用抽象类(abstract class)来实现。
面向对象内容
-
类 − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。
-
对象 − 是类的实例。
-
成员变量 − 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可成为对象的属性。
-
成员函数 − 定义在类的内部,可用于访问对象的数据。
-
继承 − 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
-
父类 − 一个类被其他类继承,可将该类称为父类,或基类,或超类。
-
子类 − 一个类继承其他类称为子类,也可称为派生类。
-
多态 − 多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
-
重载 − 简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
-
抽象性 − 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
-
封装 − 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。
-
构造函数 − 主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
-
析构函数 − 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后" 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
PHP
类定义
定义类通常语法格式如下:
<?php class phpClass { var $var1; var $var2 = "constant string"; function myfunc ($arg1, $arg2) { [..] } [..] } ?>
-
类使用 class 关键字后加上类名定义。
-
类名后的一对大括号({})内可以定义变量和方法。
-
类的变量使用 var 来声明, 变量也可以初始化值。
-
函数定义类似
PHP
函数的定义,但函数只能通过该类及其实例化的对象访问。
Mysql
数据库/SQL
Mysql
是什么
-
Mysql
数据库是一种开源的关系型数据库管理系统 -
它使用结构化查询语言
(SQL)
来管理和操作数据。 -
Mysql
具有高性能、可靠性和灵活性的特点 -
广泛用于Web应用程序和大型企业级系统。
-
支持多种操作系统和编程语言,并且能够处理大规模的数据存储和查询。
总的来说,
Mysql
数据库是一种强大而灵活的数据库管理系统,可以满足各种不同规模和需求的数据管理和处理
查询
查询是一种询问或请求。
通过 MySQL
,我们可以向数据库查询具体的信息,并得到返回的记录集。
请看下面的查询(使用标准SQL
):
语句 set names utf8;
用于设定数据库编码,让中文可以正常显示。
上面的查询选取了 "websites" 表中 "name" 列的所有数据。
PHP
连接Mysql
-
MySQLi extension
("i" 意为 improved) -
PDO
(PHP Data Objects
)
连接 MySQL
在我们访问 MySQL
数据库前,我们需要先连接到数据库服务器:
1:(MySQLi
- 面向对象):
<?php $servername = "localhost"; $username = "username"; $password = "password"; // 创建连接 $conn = new mysqli($servername, $username, $password); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } echo "连接成功"; ?>
(MySQLi
- 面向过程):
<?php $servername = "localhost"; $username = "username"; $password = "password"; // 创建连接 $conn = mysqli_connect($servername, $username, $password); // 检测连接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "连接成功"; ?>
(PDO
)
<?php $servername = "localhost"; $username = "username"; $password = "password"; try { $conn = new PDO("mysql:host=$servername;", $username, $password); echo "连接成功"; } catch(PDOException $e) { echo $e->getMessage(); } ?>
SQL
是什么:
-
SQL
指结构化查询语言,全称是 Structured Query Language。 -
SQL
让您可以访问和处理数据库,包括数据插入、查询、更新和删除。
可以做什么:
-
SQL
面向数据库执行查询 -
SQL
可从数据库取回数据 -
SQL
可在数据库中插入新的记录 -
SQL
可更新数据库中的数据 -
SQL
可从数据库删除记录 -
SQL
可创建新数据库 -
SQL
可在数据库中创建新表 -
SQL
可在数据库中创建存储过程 -
SQL
可在数据库中创建视图 -
SQL
可以设置表、存储过程和视图的权限
数据库表
一个数据库通常包含一个或多个表。每个表有一个名字标识(例如:"Websites"),表包含带有数据的记录(行)。
我们在 MySQL
的 RUNOOB
数据库中创建了 Websites 表,用于存储网站记录。
我们可以通过以下命令查看 "Websites" 表的数据:
-
use RUNOOB; 命令用于选择数据库。
-
set names utf8; 命令用于设置使用的字符集。
-
SELECT * FROM Websites; 读取数据表的信息。
-
上面的表包含五条记录(每一条对应一个网站信息)和5个列(
id、name、url、alexa 和country
)。
SQL
对大小写不敏感:SELECT 与 select 是相同的。
SQL
语句之后也要写分号
一些最重要的 SQL
命令
-
SELECT - 从数据库中提取数据
-
UPDATE - 更新数据库中的数据
-
DELETE - 从数据库中删除数据
-
INSERT INTO - 向数据库中插入新数据
-
CREATE DATABASE - 创建新数据库
-
ALTER DATABASE - 修改数据库
-
CREATE TABLE - 创建新表
-
ALTER TABLE - 变更(改变)数据库表
-
DROP TABLE - 删除表
-
CREATE INDEX - 创建索引(搜索键)
-
DROP INDEX - 删除索引
python小作品
import random
class fuzamima:
def __init__(self, cd=12):
self.cd = cd
self.Dzm = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
self.Xzm = "abcdefghijklmnopqrstuvwxyz"
self.shuzi = "0123456789"
self.fuhao = "!@#$%^&*()_+[]{}|;:,.<>?/="
def generate_password(self):
he = self.Dzm + self.Xzm + self.shuzi + self.fuhao
password = "".join(random.sample(he, self.cd))
return password
if __name__ == "__main__":
length = int(input("请输入密码长度:"))
generator = fuzamima(length)
password = generator.generate_password()
print(f"生成的密码为:{password}")
输入你想要的密码长度就可以得到一个该长度的随机的复杂密码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>注册登录页面</title>
<style>
/* 样式 */
body {
font-family: Arial, sans-serif;
}
.container {
max-width: 400px;
margin: 0 auto;
padding: 20px;
border: 1px solid #ccc;
border-radius: 5px;
background-color: #f4f4f4;
}
input[type="text"], input[type="password"], input[type="submit"] {
width: 100%;
padding: 10px;
margin: 5px 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
</style>
</head>
<body>
<div class="container">
<h2>用户注册</h2>
<form id="registerForm" onsubmit="return register()">
<input type="text" id="regUsername" placeholder="用户名" required>
<input type="password" id="regPassword" placeholder="密码" required>
<input type="submit" value="注册">
</form>
</div>
<div class="container" style="margin-top: 20px;">
<h2>用户登录</h2>
<form id="loginForm" onsubmit="return login()">
<input type="text" id="username" placeholder="用户名" required>
<input type="password" id="password" placeholder="密码" required>
<input type="submit" value="登录">
</form>
</div>
<div id="searchPage" style="display: none; margin-top: 20px;">
<!-- 这里放置你的搜索页面内容 -->
<head>
<title>搜索</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f2f2f2;
text-align: center;
padding-top: 50px;
}
#hezi {
max-width: 600px;
margin: 0 auto;
background-color: #fff;
padding: 20px;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
#sousuo {
width: 100%;
padding: 10px;
font-size: 16px;
margin-bottom: 10px;
border: 1px solid #ccc;
border-radius: 5px;
}
#baidu {
padding: 10px 20px;
font-size: 16px;
background-color: #3385ff;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
}
</style>
</head>
<body>
<div id="hezi">
<img src="https://www.baidu.com/img/bd_logo1.png" alt="百度logo" width="270" height="129">
<p>请输入搜索内容:</p>
<input type="text" id="sousuo" placeholder="搜索内容">
<button id="biadu">百度一下</button>
</div>
</body>
</div>
<script>
// JavaScript
// 模拟用户数据库
var users = {
"admin": "admin"
};
function register() {
var regUsername = document.getElementById("regUsername").value;
var regPassword = document.getElementById("regPassword").value;
if (regUsername in users) {
alert("用户名已存在");
return false; // 防止表单提交
} else {
users[regUsername] = regPassword;
alert("注册成功");
return false; // 防止表单提交
}
}
function login() {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
if (username in users && users[username] === password) {
document.getElementById("loginForm").style.display = "none";
document.getElementById("registerForm").style.display = "none";
document.getElementById("searchPage").style.display = "block";
// 使用fetch API 加载外部的search.html文件内容
return false; // 防止表单提交
} else {
alert("用户名或密码错误");
return false; // 防止表单提交
}
}
</script>
</body>
</html>
注册登陆界面,以及登陆后是静态百度页面