php 基础知识

php 简介

  1. php 被译为个人主页:超文本预处理器。它是一种运行在服务器端的脚本语言,必须在服务器环境下才能运行。

php 运行环境配置

  1. 搭建方式
    1. 一键搭建
    2. 手动搭建
  2. 修改 php 配置文件(php.ini)
    1. 将时区修改为系统时区:date.timezone = PRC

基本语法

  1. 第一个 php 程序

    <?php
        echo "我是一朵小红花!";
        ?>
    
    • 解决 php 程序中文汉字乱码问题

      在 php 的代码首行加入如下代码

      <?php
          header('Content-Type: text/html; charset="utf8"');
          ?>
      
  2. php 注释

    • 单行注释

      <?php
          // 此处为单行注释
          # 此处也为单行注释
          ?>
      
    • 多行注释

      <?php
          /*
          	此处为多行注释
          */
          ?>
      
  3. 常量

    • 使用 define() 函数定义:define(name, value, case_insensitive);
    • CONST 关键字定义:CONST PI = 3.14125926;
    • 常量输出方式
      • echo PI;
      • echo constant("PI");
  4. 变量

    1. 使用 $ 符号定义:$elem = "value";
    2. 输出:echo $elem;
  5. 运算符

    1. 算术运算符:+,-,*,/,%,++,--
    2. 赋值运算符:=,+=,-=,*=,/=,%=,.=
    3. 比较运算符:==,===,!=,!==,>,<,>=,<=
    4. 逻辑运算符:&&,||,!
    5. 字符串连接运算符:.
  6. 输出:echo "输出内容"

  7. 日期和时间

    • 格式化

      Y:	4位数字年份
      y:	2位数字年份
      m:	前导 0 月份
      n:	无前导 0 月份
      d:	前导 0 日期值
      j:	无前导 0 日期值
      D:	前三字母星期数
      w:	0~6星期数,0 为星期日
      M:	前三字母星期数
      H:	24 小时制时值
      h:	12 小时制时值
      i:	分钟值
      s:	秒值
      
    • 获取当前时间戳函数:$time = strtotime('2022-12-12');

  8. 流程控制语言

    • 分支语句

      • if

      • if-else

      • if-else if-else

      • switch:switch(表达式){case 值1: {语句块;bread;}...[default:{语句块;}]}

    • 循环语句

      • for:for(表达式1; 循环条件; 迭代器){代码块}
      • while:while(循环条件){代码块}
      • do…while():do{代码块}while(循环条件)
  9. 数组

    • 定义:$arrName = array(...);

    • 获取数组长度:$len = count($arrName);

    • 数组类型

      • 索引数组:array('a', 'b','c');
      • 关联数组:array("index1"=>"value1", "index2"=>"value2");
      • 混合数组:array('index1'=>'value',2,3)
      • 多维数组:array(0 => ('NO'=>'202212110','name'=>'zs'),1 => ('NO'=>'202212111', 'name'=>'ls'));
    • 数组遍历

      • 循环遍历

        <?php
            $arr = array(1,2,3,4);
        	for ($i = 0; $i < count($arr); $i++) {
                echo $arr[$i];
            }
            ?>
        
      • each() 函数遍历

        <?php
            $stu = array('No'=>'20221212110','name'=>'zs');
        	for ($i = 0; $i < count($stu); $++) {
                $print = each($stu);
                echo "$print[key]=>$print[value]";
            }
            ?>
        
      • foreach() 遍历

        <?php
            $stu = array('No'=>'20221212110','name'=>'zs');
        	foreach ($stu on $key => $value) {
                echo "$key => $value";
            }
            ?>
        

表单数据提交

  1. 基本数据提交
<html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>表单数据提交</title>
    </head>
    <body>
        <form method="post" action="up.php">
            用户名:<input type="text" name="uname" id="uname"><br />
            性别:<input type="radio" name="sex" id="radio1" value="男">
            <!-- 单选按钮 -->
            <input type="radio" name="sex" id="radio2" value="女"><br />
            爱好:<input type="checkbox" name="like[]" value="0">看球
          
            <!-- 多选框 -->  
            <input type="checkbox" name="like[]" value="1">看书
            <input type="checkbox" name="like[]" value="2">跑步<br />
            
            <!-- 下拉框 -->
            下拉框:<select name="slt" id="slt">
            	<option selected="selected">请选择城市</option>
            	<option>南昌</option>
            	<option>北京</option>
            </select><br />
            
            文本域:<textarea name="tarea" id="tarea"></textarea><br />
            
            <!-- 文件 -->
            单文件:<input type="file" name="file1" id="file1"><br />
            <input type="submit" value="提交">&nbsp;&nbsp;<input type="reset" value="重置">
        </form>
        
        <!-- php处理程序 -->
        <?php
			// 使用系统数组:$_POST[] 和 $_GET[]获取前端表单提交的数据
			header("Content-Type: text/html; charset=utf8");
			// 用户名
			$uname = $_POST['uname'];
			// 单选按钮
			// 使用 isset(elem) 函数判断是否设值(单选框或复选框)
			$sex = '';
			if (isset($_POST['sex'])) {
				$sex = $_POST['sex'];
			}
			// 复选框
			$likes = [];
			if (isset($_POST['like'])) {
				// 使用 implode(tag,elem) 函数,将数组转为字符串
				$likes = implode($_POST[" ",'like'])
			}
			// 下拉框
			$city = $_POST['slt'];
			// 文本域
			$tarea = $_POST['tarea'];
			// 文件
			echo $_FILES['file1']['name'].$_FILES['files']['type'].$_POST['file1']['rount($_POST['files']['size']/1024, 2)'].$_FILES['files']['tmp_name']
		?>
    </body>
</html>
  1. 简单文件上传:form 添加:enctype="multipart/form-data"
<html>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>简单文件上传</title>
    <body>
        <!-- enctype="multipart/form-data":设置MIME编码,实现文件上传-->
        <form action="up.php" method="post" enctype="multipart/form-data">
            <p>
            	上传文件:<input type="file" name="file1" id="file1" />
        	</p>
            <p>
                <input type="submit" value="上传" />
                <input type="reset" value="重置" />
            </p>
        </form>
    </body>
</html>

<?php
	// 设置字符集
	header("Content-Type: text/html; charset=uft8");
	// 获取文件的相关信息
	$name = $_FILES['file1']['name'];
	$type = $_FILES['file1']['type'];
	$size = $_FILES['file1']['size'];
	$size = round($size/1024, 2)."kB";
	// 获取上传文件临时存储信息
	$tmpname = $_FILES['file1']['tmp_name'];
	// 使用 iconv("UFT-8", "GB2312",filename) 函数,将 filename 的中汉字编码由 UTF-8 转为 GB2312
	$name = iconv("UTF-8", "GB2312", $name);
	// 将上传的文件保存到指定的文件夹 upload(file,url) 中
	move_uploaded_file($tmpname, "upload/$name");
?>
  1. 多文件上传:将文件域元素的 name 属性的值由 file1 改为 file[]
<html>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>简单文件上传</title>
    <body>
        <!-- enctype="multipart/form-data":设置MIME编码,实现文件上传-->
        <form action="up.php" method="post" enctype="multipart/form-data">
            <p>
            	上传文件:<input type="file" name="file1" id="file1" />
        	</p>
            <p>
                <input type="submit" value="上传" />
                <input type="reset" value="重置" />
            </p>
        </form>
    </body>
</html>

<?php
	header("Content-Type: text/html; charset=utf8");
	// 获取所有文件名
	$filenameGrp = $_FILES['file']['name'];
	// 获取所有文件临时上传的信息
	$tmpnameGrp = $_FILES['file']['tmp_name'];
	// 计算文件的数量
	$fcount = count($filenameGrp);
	for ($i = 0; $i <= $fcount; $i++) {
        // 将文件名的中汉字编码改为 “GB2312”
        $fname = iconv("UTF-8", "GB2312", $filenameGrp[$i]);
        move_uploaded_file($tmpnameGrp[$i], "upload/$fname");
    }
?>
  1. 大文件上传
/* 
	1.修改 php.ini 的配置文件
		1.1 设置允许上传文件大小的最大值:upload_max_filesize = 20MB;
		1.2 设置允许 POST 方法提交数据的最大数据量:post_max-size = 50MB;
	2.编写 html 和 php 文件。
*/
  1. php 图片处理相关函数

    • 创建一幅真彩色图像:imagecreatetruecolor(int width, int height);
    • 新建一个基于调色板的图像:imagecreate(int width, int height);
    • 为一幅图像分配颜色:imagecolorallocate(image, int red, int green, int blue);
    • 使用指定颜色填充指定区域:imagefill(resource image, int top_x, int left_y, int color);
    • 设置一个单一像素的颜色:imagesetpixel(resource image, int x1, int y1, int x2, int y2, int color);
    • 在指定图像中输出任意字符:imagettftext(resource image, int fontsize, int angle, int x, int y, int color, string fontType, string text);
    • 以 png 格式将图像输出到浏览器或文件:imagepng(resource image[,string filename]);
    • 销毁一幅图像:imagedestroy(resource iamge);
  2. 注册功能实现

    1. 设计注册界面
      • 编写注册 html 页面
    2. 设计图片验证码
      • 创建图片验证码
      • 图片验证码的插入和刷新
      • 使用 SESSION 机制实现数据的传输
    3. 连接数据库
      • 进行相关验证
    // 1.注册界面
    <html>
        <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
        <head>
            <title>注册功能</title>
        </head>
        <body>
            <form method="post" action="zc.php">
                <table>
                    <thead>
                    	<th>注册</th>
                    </thead>
                    <tbody>
                    	<tr>
                        	<td>邮箱:</td>
                            <td><input type="text" name="email" id="email"></td>
                        </tr>
                        <tr>
                        	<td>昵称:</td>
                            <td><input type="text" name="uname" id="uname"></td>
                        </tr>
                        <tr>
                        	<td>密码:</td>
                            <td><input type="password" name="psd" id="psd"></td>
                        </tr>
                        <tr>
                        	<td>验证码:</td>
                            <td><input type="text" name="yzm" id="yzm">
                                <img sre="yzm.php" name="yzm" id="yzm"></td>
                        </tr>
                        <tr>
                        	<td><input type="submit" value="注册"></td>
                            <td><input type="reset" value="重置"></td>
                        </tr>
                    </tbody>
                </table>
            </form>
        </body>
    </html>
    
    // 2.生产图片验证码 php
    <?php
    	session_start();
    	// 设置内容类型
    	header("Content-Type: image/png");
    	// 图片大小
    	$image_weight = 100;
    	$image_height = 25;
    	/* 
    		获取以字母和数字组成的字符串:
    			使用 range(low, high, step) 函数创建一个包含指定范围的元素的数组。
    			low(必选):最低值(必选),high:最高值,step(可选):步数
    		合并数组:array_merge(array $array1[, $array2...])
    	*/
    	$numberArray = range(1, 9);
    	$characterArray = range("A", "Z");
    	$resultArray = array_merge($numberArray, $characterArray);
    	$len = count($resultArray);
    	$string = "";
    	for ($i = 0; $i < 4; $i++) {
            // 使用 rand() 函数生成指定范围内的随机整数:rand(min, max)
            $index = rand(0, $len - 1);
            $string = $string.$resultArray[$index];
        }
    
    	/*
    		php 画图步骤:
    			1.创建画布
    			2.定义颜色
    			3.填充颜色/文字信息
    			4.生成图片
    			5.销毁图片
    	*/
    	// 1.创建画布
    	$image = imagecreatetruecolor($image_weight, $image_height);
    	// 2.定义颜色
    	$white = imagecolorallocate($image, 255, 255, 255);
    	$black = imagecolorallocate($image, 0, 0, 0);
    	// 3.填充颜色
    	imagefill($image, 0, 0, $white);
    	// 字体
    	$fontType = "times.ttf";
    	for ($i = 0; $i < 100; $i++) {
            // 设置单一像素
            imagesetpixel($image, mt_rand(0, $image_weight), mt_rand(0, $image_height),mt_rand(0, $image_weight), mt_rand(0, $image_height), $black)
        }
    	// 画线段
    	for ($i = 0; $i < 2; $i++) {
            imageline($image, mt_rand(0, $image_weight), mt_rand(0, $image_height),$black)
        }
    	
    
    	// 4.生成图片
    	imagepng($image);
    	// 存储数据
    	$_SESSION['elemName', $string]
    	// 5.销毁图片 
    	imagedestroy($image);
    ?>
    
    // 3.使用 session 机制
    <?php
    	// 开启 session 机制
    	session_start();
    	$elemName = $_SESSION['elemName'];
    ?>
    
    // 4.连接数据库操作
    <?php
    	$conn = mysqli_connect('localhost', 'root', 'password', 'databaseName', '3307');
    	if ($conn) {
            echo "连接数据库成功!";
            $sql = "select * from student where id = '1'";
            $result = mysqli_query($conn, $sql);
            $num = mysqli_num_rows($result);
            if ($num) {
                echo "$result";
            } else {
                echo "未查到任何内容!";
            }
        } else {
            echo "连接数据库失败!";
        }
    ?>
    
  3. php 常用方法

    • 小写字母转为大写:strtoupper(string);
    • 大写字母转为小写:strtolower(string);
  4. php 操作数据库

    • 常用方法
      • 连接 MySQL 数据库服务器:mysqli_connect('localhost','root','password'[,'databaseName','port','socket']);
      • 选择打开指定的数据库或更改已选择的数据库:mysqli_select_db(connection, databaseName);
      • 执行 SQL 语句:mysqli_query(connection, SQL);
      • 获取返回结果集中的记录的记录数:mysqli_num_rows(resultSet);
      • 关闭指定数据库的连接:mysqli_close(connection);

复习题

选择题

  1. 统计数组元素个数的函数:count()

  2. 修改服务器允许上传文件的最大值,需要修改 php.ini 文件中的:upload_max_filesize 属性,允许表单的POST 提交方式能够提交的最大值,需要修改 php.ini 文件中的:post_max_size 属性,并且 post_max_size 必须大于 upload_max_filesize

  3. 下面代码输出的结果是:学习编程贵在坚持!

    注意感叹号

    <?php
        echo "学习编程贵在坚持!";
        ?>
    
  4. 日期时间函数 date() 的格式:

    Y: 4 位数字的年份
    y: 2 位数字的年份
    m: 2 位数字的月份(有前导 0)
    n: 无前导 0 的月份
    d: 有前导 0 的日期值
    j: 无前导 0 的日期值
    D: 返回 前三字母的星期格式
    w: 返回数字型的星期,0 表示星期天
    M: 返回前三字母的月份值
    H: 返回 24 小时制的时值
    h: 返回 12 小时制的时值
    i: 返回含前导 0 的分钟值
    s: 返回含前导 0 的秒钟值
    
  5. 连接 mysql 数据库的方法:mysqli_connect('localhost','root','password','mysqlname'),选择并打开指定 MySQL 数据库的方法:mysqli_select_db($conn,'mysqlname'),执行 sql 语句的方法:mysqli_query($conn, $sql)

  6. 下面代码输出的结果:2

    <?php
        $arr = array(0=>1, 1=>2, 'hi'=>'hello');
    	echo $arr[1];
        ?>
    
  7. 语句 for($i = 0; $i == 1; $i++)for($i = 0; $i = 1; $i++) 执行的次数分别是:0 和 无限

  8. php 中将大写字母转为小写字母的函数:strtolower(),将小写转为大写的函数是:strtoupper()

  9. php 中如何声明变量:以$开头。

  10. 下面代码运行之后,$b的值为:10

    <?php
        $a = 8;
    	$a++;
    	$b = ++$a;
    	echo $b;
        ?>
    
  11. php 中实现文件上传功能,需要使用哪个全局变量:$_FILES[]

  12. 获取当前运行脚本所在的文档根目录:$_SERVER['DOCUMENT_ROOT']

  13. 访问 MySQL 数据库库时,从查询记录结果中,获取记录数的方法:mysqli_num_rows()

  14. 删除数组中的某个元素的方法:unset()

判断题

  1. php 和 html 可以混合编程。(
  2. php 的配置文件是 php.ini。(
  3. php 的普通变量,由 ‘ $’ 符号与变量名组成,其中变量名的命名规则和标识符的命名规则一致。(
  4. 在 php 中获取表单提交数据的全局变量:$_GET[] 和 $_POST[]。(
  5. session 必须先启用才能使用,使用 php 的内置函数 session_start() 来开启 session。(
  6. php 中的键名可以重复,但值不能重复。(
  7. 在 php 中通常用单引号、双引号和界定符表示字符串。(
  8. php 中的数组元素类型必须相同,且只能是基本数据类型。(
  9. php 属性强类型语言,变量需要先声明再使用,且必须指定数据类型。(
  10. php 标识符由字母、数字或下划线组成,以字母或下划线开头。(
  11. 函数is_array()用于测试变量是否为数组。(
  12. implode() 函数将字符串转为数组,exploade() 将数组转为字符串。(
  13. php中,当include语句包含的文件不存在时,会产生一个致命错误,脚本仍然会被执行。(
  14. while、do⋯while、for、foreach都是PHP循环语句。(

填空题

  1. 假设生成图片验证码的PHP文件是yzm. php,在表单界面文件中加载验证码的代码是: <img src="yzm.php">
  2. MySQL数据库的根用户是:root
  3. php 中获取系统当前日期时间的函数是:getdate() 或 date()
  4. 假设页面中某个元素的ID是psd,获取该页面元素的脚本代码是:document.getElementById('psd')
  5. 使用脚本设置验证码文本框中的文本为红色,需要的代码是:document.getElementById('useryzm').style.color = '#f00'
  6. 能够在同一网站不同页面之间传递数据的机制是:session,在程序代码开始处启用该机制时需要使用的代码是:session_start()
  7. 如果今天是星期四,要获取到日期中的信息“Thu”,需要使用的代码是:date('D')
  8. 函数 rand(0,20)的作用是:产生 0 到 20 之间的随机数
  9. round(20/3,2)的结果是:6.67,round(20/3,2)的结果是:6.00
  10. 浏览器向某个服务器发出页面请求时,无论请求的是静态页面还是动态页面,该请求一定要通过:http 协议发送出去。
  11. 合并一个数组各个元素值,使用的函数是:implode()
  12. 表单提交数据时,若method取值为get,则数据保存到系统数组:$_GET里面。

简答题

  1. 代码如下:

    为手机号文本框设置属性pattern="1[3|5|7|8][0-9]{9}",的作用是什么?

    设置手机号码的合法格式:第一位是 1,第二位是 3、5、7、8中的一个,第三位到第十一位是 9 个随意组合的数子。

    何时对手机号的合法性进行验证?

    用户输入手机号后,在点击“提交” 按钮时进行合法验证。

  2. 代码及说明如下:

    //$uname是服务器端的变量,存放着用户名称
    
    //uname是文本框的id
    
    include’zhuce. html;
    
    echo"<script>";
    
    echo"document.getElementById("uname’). value=’$uname’;";
    
    echo"</script>";
    

    代码的作用是:

    在服务器导入zhuce.html 文件,并输出脚本语句,将变量 $uname 的内容传递给文本框元素 uname

  3. 代码如下:

    $arr=array("I","am","a","student");
    
    $ whole= implode('_',$ arr);
    
    echo$whole;
    

    代码输出的结果是:

    I_am_a_student

  4. 代码如下

    $color=imagecolorallocate($img, 0,0,255);
    

    代码实现的功能:

    为 $img 指定的图像分配颜色,并且为蓝色。

  5. 创建表单和表单元素的代码如下,可以通过哪种方式访问表单元素user 的值?

    <form name="forml″ method="post" action="#″>
    
    用户名:<input name="user"type="text" size="12">
    
    <input type="submit"name="submit" value="提交">
    
    </form>
    

    $_POST[‘user’]

  6. 代码如下:

    if(document.getElementById('rdiv'). style. display="none")
    
    {document.getElementById('rdiv'). style. display=="block";}
    
    else
    
    {document.getElementById('rdiv'). style. display="none"; }
    

    代码中存在什么错误?

    在进行条件判断时,应该使用双等号 ‘== ’,在条件成立时,改变 ‘rdiv’ 元素的显示状态,应该用赋值号 ‘=’ 赋值。

  7. 为何不能将yzm. php文件中存放验证码字符的变量$string直接应用到zhuce, php文件中?

    因为变量具有生命周期,$string 变量只能在文件 yzm.php 起作用,一旦离开该文件,原来存放的所有内容都将消失,变量变成未定义状态。

  8. 写出以下代码返回的结果:

    <? pha
    
    function p()
    
    return 1;
    
    )
    
    if(p())
    
    echo"false";
    
    }else{
    
    echo"true";
    
    ?>
    

    false

编程题

  1. 创建包含所有大写字母以及数字字符的数组,从该数组中随机产生4个字符,保存在变量$str中并输出;

    <?php
        $number = range(0,9);
    	$character = range("Z","A");
    	$result = array_merge($number, $character);
    	$string = "";
    	$len = count($result);
    	for ($i = 0; $i < 4; $i++) {
            $index = rand(0,$len - 1);
            $string = $string.$result[$index];
        }
        ?>
    
  2. 连接打开MySQL数据库,判断:若连接成功,则打开其中数据库student,查询数据表stullse中性别(列名sex)为男(列值为m)的记录,获取查询结果中的记录数,判断记录数若为0,则输出“该班没有男生”,否则输出“男生人数是…人”;若连接为成功,输出“本次连接数据库失败”。

    <?php
        $conn = mysqli_connect('localhost', 'root','password','3307');
    	if ($conn) {
            if (mysqli_select_db($conn, 'student')) {
                $sql = "select * from stullse where sex ='男'";
                $result = mysqli_query($conn, $sql);
                $ rows = mysqli_num_row($result);
                if (rows == 0) {
                    echo "该班没有男生";
                } else {
                    echo "男生人数是". $rows ."人";
                }
            }
        } else {
            echo "本次连接数据库失败";
        }
        ?>
    
  3. 编写代码,设计下图界面

    image-20221208195301869

    <html>
        <head>
            <meta http-equiv="Conten-Type" content="text/html; charset=utf-8">
        	<title>文件上传</title>
        </head>
        <body>
            <form action="up.php" method="post" enctype="multipart/form-data">
                <p>
                    文件上传地址<input type="file" name="file1" id="file1" />浏览
                </p><br />
                <p>
                    <input type="submit" value="上传" />
                    <input type="reset" value="重置" />
                </p>
            </form>
        </body>
    </html>
    
  4. 编写代码,接收上传文件信息,将文件保存在up文件夹中,并输出如下内容

    image-20221208195945881

    <?php
        header("Conten-Type: text/html; charset=uft8");
    	$name = $_FILES['file1']['name'];
    	$type = $_FILES['file1']['type'];
    	$size = round($_FILES['file1']['size']/1024, 2). "kB";
    	$tmpname = $_FILES['file1']['tmp_name'];
    	echo "上传文件的名称是:" .$name. "<br />";
        echo "上传文件的类型是: " .$type. "<br />";
        echo "上传文件的大小是: " .$size. "<br />";
        echo "临时位置临时名称信息是:" .$name. "<br />";
        ?>
    
版权声明:本文为feibinstudy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/feibinstudy/p/16971683.html