后端php
我们来个登录页面,简单感受一下前后端的交互。
checklogin.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>论坛</title>
</head>
<body>
<?php
$uname = $_GET['username'];
$pwd = $_GET['password'];
if ($uname == 'jaden'){
echo "<h1>欢迎 $uname 回来</h1>";
echo "<h2>您的密码为: $pwd</h2>";
}else {
echo "<h1>sorry,用户名或者密码不正确!</h1>";
};
?>
</body>
</html>login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>kaku小站</title>
</head>
<body>
<form action='checklogin.php' method='get'>
用户名: <input type='text' name='username'>
密码: <input type='password' name='password'>
<input type='submit'>
</form>
</body>
</html>
php简介
#PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。
#定义一个变量,前面不加$符号,那么就是普通字符
$num = 3.1415;
$a = 5;
$b = 6;
echo $a + $b;
$hello world
# 定义常量:
# 常量的名一般都是大写字母
方式1:define('常量名', '常量值'); 例如:define('WebSite', 'php中文网');
方式2:const 常量名 = 常量值; 例如:const FOO = 'BAR';
方式2不能用在if判断中。变量的命名规则
1.一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。
2.变量名不能以数字开头
3.变量名不要出现中文
4.变量名不要出现非下划线的其他特殊符号
5.变量名建议使用小写字母不带符号,单引号,双引号的区别
<?php
header("Content-Type: text/html; charset=utf-8"); // 在响应头中添加了content-type: utf-8,header()是php提供的加工响应头键值对的
// header("jaden: 666");
$name = 'kobe';
echo $name;
echo '最喜欢的NBA球星是'.$name.'<br>'; //变量不加符号,遇到字符串拼接,需要加.连接
echo '最喜欢的NBA球星是$name<br>'; //单引号,不解析变量,原样输出
echo "最喜欢的NBA球星是$name<br>"; //双引号,解析变量
?>php的数据结构
◾布尔类型 0 非0 |false true # 判断条件的结果都是布尔值
◾整型 整数 -99999 +99999
◾浮点型 小数 -1.9 3.25 3.00005
◾字符串 'hello' "hello"
◾数组 array, 例如:$d = array('a', 1,'c',array(1,2,3)); #数组是容器类型的数据,可以
存放各种类型的基础数据
$d = array('a', 1,'c',array(1,2,3));
echo $d; # 会报错,因为echo是用来输出字符串类型数据的。
echo $d[0]; # 数组类型是可以通过索引取值的,索引是从0开始的。
◾对象 object # 这个需要学到类之后才能看到
◾资源类型 Resource # 文件等资源数据
◾NULL 空 # $a = null; 提前定义,但是不想赋值的时候就可以这样用
查看变量对应值的类型:
1.使用“gettype(传入一个变量var)”来显示变量var的类型; 只会显示类型
2.使用“var_dump(传入一个变量var)”来显示变量var的类型; 会显示具体内容
打印array:
$a = array(1,2,3);
print_r($a);php的运算符
算术运算符
| 运算符 | 名称 | 描述 | 示例 | 结果 |
|---|---|---|---|---|
| x+y | 加 | x和y的和 | 2+2 | 4 |
| x-y | 减 | x和y的差 | 5-2 | 3 |
| x*y | 乘 | x和y的积 | 5*2 | 10 |
| x/y | 除 | x和y的商 | 15/5 | 3 |
| x%y | 模 | x除以y的余数 | 5 % 2 10 % 8 10 % 2 | 1 2 0 |
| -x | 负数 | x取负数 | -2 | |
| a.b | 并置 | 连续两个字符串 | ”Hi” . “Ha” | HiHa |
存在优先级 (乘除 > 加减),提升优先级就加括号。
自增自减
| 运算符 | 名称 | 描述 |
|---|---|---|
| ++$x | 预递增 | x 加 1,然后返回 x |
| $x++ | 后递减 | 返回 x,然后 x 加 1 |
| —$x | 预递减 | x 减 1,然后返回 x |
| $x— | 后递减 | 返回 x,然后 x 减 1 |
比较运算符


逻辑运算符

三元运算符
判断条件?真的处理:假的处理
判断如果为true,那么执行真处理,也就是:冒号前面的代码会执行,否则:冒号后面的执行,和if..else差
不多,不过更简洁一些,但是不能执行多条件判断<?php
$x = true;
$x ? $y = 5 : $y = 6;
//输出5
echo $y;
?>php流程控制
if else
<?php
// A B C 其他
$jixiao='F';
if ($jixiao == 'A'){
echo "发放1.2倍薪资";
} elseif ( $jixiao =='B'){
echo "正常发放薪资";
}else if($jixiao == 'C'){
echo "发放90%薪资";
}else {
echo "发放80%薪资";
}
?>while
条件不成立,一次都不执行
<?php
$i = 1;
while ($i <= 10) {
$i++;
echo '哈哈'.$i.'次';
}
?>do while
条件不成立,也会执行一次
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>for
有限循环
#$i=1初始值,$i<=10 条件,$i++每次加1
for ($i = 1; $i <= 10; $i++) {
echo $i;
}foreach
遍历数组
# 数组的索引默认是从0开始的数字,也可以自行指定索引
$cars=array("特等奖"=>"布加迪","一等奖"=>"捷豹" ,"二等奖"=>"法拉利" ,"三等奖"=>"玛莎拉
蒂");
foreach ($cars as $key => $value) {
echo "<tr><td>$key</td><td>$value</td></tr>";
}break打断
打断循环;结束循环
$cars=array("特等奖"=>"布加迪","一等奖"=>"捷豹" ,"二等奖"=>"法拉利" ,"三等奖"=>"玛莎拉蒂"
,"四等奖"=>"迈凯伦");
foreach ($cars as $key => $value) {
if ( $key == '三等奖' ){
break;
} else {
echo $key."是".$value."<br>";
}
}continue继续
跳出本轮,开始下一轮
$cars=array("特等奖"=>"布加迪","一等奖"=>"捷豹" ,"二等奖"=>"法拉利" ,"三等奖"=>"玛莎拉蒂"
,"四等奖"=>"迈凯伦");
foreach ($cars as $key => $value) {
if ( $key == '三等奖' ){
continue;
} else {
echo $key."是".$value."<br>";
}
}switch
条件判断
$a=5;
$b=10;
$c=4;
//
switch ($c) {
case 1:
echo "$a + $b = ".($a+$b)."<br>";
break;
case 2:
echo "$a - $b = ".($a-$b)."<br>";
break;
case 3:
echo "$a * $b = ".($a*$b)."<br>";
break;
case 4:
echo "$a / $b = ".($a/$b)."<br>";
break;
default: // 条件都不成立时执行
echo '原来啥也不是';
break;
}php的函数
语法
//不支持传参的函数
function welcom(){
echo "欢迎光临!";
}
//调用函数
welcom();
<?php
header("Content-Type: text/html; charset=utf-8"); // 在响应头中添加了content-type: utf-8,header()是php提供的加工响应头键值对的
echo '做一下加法计算!'.'<br>';
// 函数声明,提前定义了两个形式参数:$a, $b
function add($a, $b){
//$a = 2;
//$b = 3;
$c = $a + $b;
echo '加法计算结果为:'.$c.'<br>';
}
// 函数调用: 3,4实际参数
add(3,4);
echo '计算结束..'.'<br>';
?>
//返回值
// 函数声明,提前定义了两个形式参数:$a, $b
function add($a, $b){
//$a = 2;
//$b = 3;
$c = $a + $b;
// echo '加法计算结果为:'.$c.'<br>';
return $c;
}
// 函数调用: 3,4实际参数
$ret = add(3,4);
echo $ret.'<br>';
echo '计算结束..'.'<br>';内置函数
文件包含函数
| 函数 | 包含失败 | 特点 |
|---|---|---|
| include | 返回一条警告 | 文件继续向下执行。通常用于动态包含 |
| require | 一个致命错误 | 代码就不会继续向下执行。通常包含极为重要的文件 |
| include_once(pass) | 返回一条警告 | 如果文件曾经已经被被包含过,不再包含 |
| require_once(pass) | 一个致命错误 | 除了原的功能一外,会做一次once检测,防止文件反复被包含 |
数学常用函数
| 函数名 | 描述 | 示例 |
|---|---|---|
| abs() | 求绝对值 | $abs = abs(-4.2);//4.2 |
| ceil() | 进一法取整 | echo ceil(9.001); // 10 |
| floor() | 舍去法取整 | echo floor(9.999); // 9 |
| fmod() | 浮点数取余 | ;5.7 1.3);// 0.5 |
| pow() | 返回数的n次方 | echo pow(-1, 20); // 1 |
| round() | 浮点数四舍五入 | echo round(1.95583, 2);// 1.96 |
| sqrt() | 求平方根 | echo sqrt(9); //3 |
| max() | 求最大值 | echo max(1, 3, 5, 6, 7); // 7 |
| mt_rand() | 更好的随机数 | echo mt_rand(0,9);//n |
| rand() | 随机数 | echo rand() |
| pi() | 获取圆周率 | echo pi(); // 3.1415926535898 |
字符串常用函数
echo __FILE__; 打印当前文件的绝对路径。


时间日期函数
中国的时区在东八区。时间相关函数:date()、getdate()、time(),我们就说一下这三个吧。
// 时区的报错,修改php.ini,date.timezone = Asia/Shanghai
$d = date('Ymd H:i:s'); # 格式化时间日期的。
$d = date('Ymd H:i:s', 1661910865); # 通过某个时间戳来格式化时间
$t = time(); # 当前时间戳
<?php
$mytime = getdate(); // 得到当前时间日期的一个属组
// $mytime = getdate(1661910865);
echo "年 :".$mytime['year']."<br>";
echo "月 :".$mytime['mon']."<br>";
echo "日 :".$mytime['mday']."<br>";
echo "时 :".$mytime['hours']."<br>";
echo "分 :".$mytime['minutes']."<br>";
echo "秒 :".$mytime['seconds']."<br>";
echo "一个小时中的第几钟 :".$mytime['minutes']."<br>";
echo "这是一分钟的第几秒 :".$mytime['seconds']."<br>";
echo "星期名称 :".$mytime['weekday']."<br>";
echo "月份名称 :".$mytime['month']."<br>";
echo "时间戳 :".$mytime[0]."<br>";
?>数组常用函数
主要是数组元素的增删改查操作
<?php
header("Content-Type: text/html; charset=utf-8"); // 在响应头中添加了content-type: utf-8,header()是php提供的加工响应头键值对的
$a = array('aa', 'bb', 33, 55);
echo $a[0].'<br>';
echo var_dump($a).'<br>';
$a[5] = 'kk';
echo var_dump($a).'<br>';
$a[1] = 'cc';
echo var_dump($a).'<br>';
//unset()删除
unset($a[1]);
echo var_dump($a).'<br>';
?>其他数组常用函数:
| 函数名 | 功能 | |
|---|---|---|
| unset() | 删除数组中某个元素 | unset($a[‘jaden’]); |
| in_array() | 判断某个元素是否在数组中 | in_array(元素, 数组); |
| range() | 创建并返回一个包含指定范围的元素的数组。 |


php文件和目录操作
readfile() //读取文件内容,并返回文件的长度,这个没啥用
file_get_contents('文件路径') //读取文件,支持本地文件和远程文件url
file_put_contents('文件路径', '内容') //保存文件
// readfile会自动打印文件内容,
$a = readfile('1.txt');
echo '<br>';
echo $a; //文件长度
// 写入数据
$a = 'aabbkkdd';
file_put_contents('1.txt', $a); // 没有文件会自动创建
$b = 'ooooo';
file_put_contents('1.txt', $b); // 每次写入新数据都会先清空原文件数据
//读取文件内容
$a = file_get_contents('1.txt');
$a = file_get_contents('http://www.baidu.com/img/flexible/logo/pc/result.png');
//直接请求https的网址会报错,休要修改配置,1.windows下的PHP,只需要到php.ini中把
extension=php_openssl.dll前面的;删掉,重启服务就可以了。2.linux下的PHP,就必须安装
openssl模块,安装好了以后就可以访问了。
// file_put_contents('1.txt', $a) # 直接将读取的文件输入写入到本地文件中
echo $a;
# 注意:文件读写的内容都是字符串数据格式。fopen
fopen、fread、fwrite、fclose操作读取文件。
resource fopen ( string $文件名, string 模式)
string fread ( resource $操作资源(也就是文件路径), int 读取长度)
bool fclose ( resource $操作资源 )
注:resource 、string、bool表示的是方法的返回值 。
fopen的模式有下面几个,我们来讲一下fopen的模式:
| 模式 | 说明 |
|---|---|
| r | 只读方式打开,将文件指针指向文件头。 重点 |
| r+ | 读写方式打开,将文件指针指向文件头。 |
| w | 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建。 |
| w+ | 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建 |
| a | 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建 ,称之为追加。 |
| a+ | 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之 |
| x | 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建 。 |
| x+ | 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建 |
示例:
$a = fopen('1.txt', 'r')
#$b = fread($a,18);
$b = fgets($a);
echo $b."<br>";
while(!feof($a)){ // !feof($a)表示如果读到文件最后了。
$b = fgets($a);
echo $b."<br>";
}
$b = fwrite($a, 'aaaaa'); //失败返回false,成功就返回写入的字符个数
echo $b."<br>";
if ($b == false){ // r模式打开的文件不能写入,r+模式可以写,但是会从文件内容开头覆盖原有内容
echo '写入失败';
}
#fclose($a);