• PHP学习笔记(一往无前)


    前言

    欢迎来到PHP学习的第一篇文章(一往无前):一直往前,无所阻挡。勇猛无畏地前进,接下来的PHP文章会不断更新相关学习笔记,期待和各位共同学习、交流!

    简单了解

    在这里插入图片描述

    PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言,吸纳Java和Perl多个语言的特色发展出自己的特色语法,并根据它们的长项持续改进提升自己,例如java的面向对象编程,该语言当初创建的主要目标是让开发人员快速编写出优质的web网站。 PHP同时支持面向对象和面向过程的开发,使用上非常灵活。

    环境搭建

    我们可以在官网上找到xampp(建站集成软件包)进行下载:
    在这里插入图片描述或者点击进入打开上传好的资源

    然后按照步骤打开:
    在这里插入图片描述
    然后点击next进行安装:
    在这里插入图片描述
    这里看个人的需求可以选择性的进行勾选:
    在这里插入图片描述
    当我们选择安装路径的时候最好不要选择过深路径,并且是不允许出现中文名称的:
    在这里插入图片描述
    选择好路径后next:

    在这里插入图片描述

    如果出现类似于以下这张图片的话,关掉即可:

    在这里插入图片描述
    接下来开始安装:

    在这里插入图片描述
    等待片刻:
    在这里插入图片描述
    出现弹窗,允许访问即可:
    在这里插入图片描述
    点击finish:

    在这里插入图片描述
    设置语言,单机save:

    点击start开启服务:第一个是阿帕奇服务器,第二个是数据库:
    在这里插入图片描述
    当出现绿色高光时,就表示启动正常:

    在这里插入图片描述
    【启动过程中遇到的问题解决方法】
    1、 apache无法启动:单击apach后的config按钮,打开带ssl的那个配置文件,把443改成444,一般进行至这一步就可以启动了。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    【如果到这里还是无法启动,请尝试下面的操作】

    2、单击config,选择不带ssl的httpd配置文件,找到Listen 80,将其改成Listen 8080,再重新启动服务
    在这里插入图片描述
    3、测试服务器是否安装成功:在地址栏输入:http://localhost:8080 回车,(如果端口号没有改,那么在浏览器地址栏中输入:http://localhost:80)出现以下界面证明安装成功:
    在这里插入图片描述

    在编写程序前需要注意的是,因为使用的这个服务器是阿帕奇的服务器,在使用hbuilder进行编写时,我们编写的所有PHP程序都需要在htdocs目录下才能正常运行。
    在这里插入图片描述

    程序编写

    1.PHP的书写方式以及注意事项

    是PHP的标记对,之间用来存放PHP代码;

    再就是PHP中变量的命名规范:

    以$开头,后面跟标识符; 变量名需要区分大小写; 变量名遵循驼峰标记法或者是下划线标记法,比如:first_name; 大驼峰:FirstName;小驼峰firstName; 变量名的命名要简单明了,方便识记

    2.echo和输出语句

    PHP里的echo是一种输出字符串的语法或函数,当后面直接跟随空格和字符串时是语法,起到输出作用:

    
    echo 'hello world';
    //这时我们打开浏览器,解析运行出结果为 hello world
    ?>
    
    • 1
    • 2
    • 3
    • 4

    当然也可以通过将一个字符串赋给一个变量,通过输出变量($str)的值来输出字符串:

    
    $str='hello world';
    //输出hello world
    echo $str;
    
    • 1
    • 2
    • 3
    • 4

    也可以输出包含html的标签;

    
    echo 'hello 
    world'
    ; ?>
    • 1
    • 2
    • 3

    在这里插入图片描述

    输出多个参数:

    
    echo 'This ','string ','was ','made ','with multiple parameters.';
    //需要注意的是在PHP中单引号和双引号是有区别的:单引号将输出变量名称,而不是值
    ?> 
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    关于引号,就比如:

    
    	$a='world';
    	echo "hello $a";//输出hello world
    	echo "
    "
    ;//换行 echo 'hello $a';//输出hello $a ?>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    双引号能够解析其中的变量,单引号不能解析,只能原样输出;
    如果希望在双引号输出的时候,直接将字符输出,需要使用到转义字符;
    在实际应用中国尽量使用单引号,因为单引号不需要解析,速度比较快。

    还可以更改字符串并输出:

    
    	$a='hello';
    	echo $a{1};
    	echo "
    "
    ; $a{4}='w'; echo $a; echo "
    "
    ; $a{5}='!'; echo $a; echo "
    "
    ; ?>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    输出结果:

    在这里插入图片描述

    输出连接的字符:

    
    	$a='hello';
    	$b='world';
    	echo $a." " .$b;
    ?>
    //在PHP中连接符是.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    如果要输出一个含有单引号的字符串,这个时候可以借助转义字符:

    
    echo 'hello \'world \'';
    //注意这里全部都是单引号
    //输出hello'world'
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    另外在php中还有一些转义字符

    PHP中的转义字符有:

    " \n" 换行

    "\r"回车

    "\t"水平制表符

    "\"反斜杠

    “$” 美元符号

    " 英文斜杠’ "单引号

    " 英文斜杠" " 双引号

    PHP中的输出语法还有:

    echo可以输出一个或多个字符串
    print只能输出简单类型变量的值,如int,string
    print_r可以输出复杂类型变量的值,以更容易理解的形式展示。如数组,对象
    printf函数用于格式化输出字符串,主要用于字符串中以%开头的格式字符串替换
    sprintf函数也用做字符串格式化。该函数与 printf 函数基本相同, 但它可以将转换后的结果保存到一个字符串变量中,而不是直接输出
    var_dump打印变量的相关信息,包括表达式的类型与值,通过缩进显示其结构

    实现一下:

    
    print "hello world";
    //输出hello world
    ?>
    
    • 1
    • 2
    • 3
    • 4
    
    $a=array('a' => 'apple', 'b' => 'banana', 'c' => array ('x','y','z'));
    print_r ($a);
    
    • 1
    • 2
    • 3

    输出结果:

    在这里插入图片描述

    $number = 1;
    $str = "hello world!";
    printf("今天是星期%u ,看见纸上写着 %s.",$number,$str);
    
    • 1
    • 2
    • 3

    输出结果:
    在这里插入图片描述

    
    <?php
    $number = 1;
    $str = "hello world!";
    $txt = sprintf("今天是星期%u,看见纸上写着%s", $number, $str);
    echo $txt;
    ?>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    输出结果:
    在这里插入图片描述

    
    <?php
    $a = array(1, 2, array("a", "b", "c"));
    var_dump($a);
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出结果:

    在这里插入图片描述

    提示:echo输出的速度比print快,echo是PHP语句,没有返回值,print和print_r是PHP函数,函数有返回值。

    print返回值为1(int类型),print_r返回值为true(bool类型)。

    3.数据类型

    在这里插入图片描述
    有关数据类型我们可以用 var_dump来表示出来:

    	$a=5;
    	var_dump($a);
    	echo "
    "
    ; $b="hello world"; var_dump($b); echo "
    "
    ; $c=3.14; var_dump($c); echo "
    "
    ; $d=true; var_dump($d);
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    输出结果:
    在这里插入图片描述
    或者是使用php的检查数据类型的函数来进行数据类型的判断:
    在这里插入图片描述
    可以实现一下:

    $a=5;
    $b="hello world!";
    $c=3.14;
    $d=314;
    if(is_int($a)){
    	echo "$a"."是int型数据"."
    "
    ; }else{ echo "$a"."的数据类型是:".is_int($a); } if(is_string($b)){ echo "$b"."是string型数据"."
    "
    ; }else{ echo "$b"."的数据类型是:" .is_string($b); } if(is_float($c)){ echo "$c"."是float型数据" ."
    "
    ; }else{ echo "$c"."的数据类型是".is_float($c); } if(is_float($d)){ echo "$d"."是float型数据" ."
    "
    ; }else{ echo "$d"."的数据类型是:"; var_dump($d); }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    来看一下结果:
    在这里插入图片描述

    4.值传递和引用传递

    php默认的一般情况下,都使用的是值传递

    值传递

    指将一个变量的数据值(数据内容)复制一份,然后赋值给另一个变量,就是变量之间进行普通赋值。

    		$a=1;
    		$b=$a;
    		$b++;
    		//b的值是2,a的值是1
    		echo "a的值是$a"."
    "
    ."b的值是$b";
    • 1
    • 2
    • 3
    • 4
    • 5
    引用传递

    PHP中引用传递就是在变量前面加上 & ,引用传递中改动新的变量将影响到原始变量。

    		$a=1;
    		$b=2;
    		echo "传递前a的值是:".$a."
    "
    ; echo "传递前b的值是:".$b."
    "
    ; $b=&$a; echo "传递后a的值是:" . $a."
    "
    ; echo "传递后b的值是:" . $b."
    "
    ;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    		$a=1;
    		$b=&$a;
    		$b=2;
    		echo "a的值是$a"."
    "
    ."b的值是$b";
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    表单传值

    在PHP中进行表单传值的方式有两种,post和get;先举几个例子看看两者的区别~

    1.post

    第一个页面用于展现给用户,收集用户的信息:

    <!DOCTYPE html>
    <html lang="zh">
    <head>
    	<meta charset="UTF-8">
    	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>Document</title>
    </head>
    
    <body>
    		<form action="postdo.php" method="post">
    		用户名:<input type="text" name="id">
    		密码:<input type="password" name="pas1">
    		邮箱:<input type="email" name="emai1">
    		<input type="submit" value="提交">
    		</form>
    </body>
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述
    收集完成后,显示给后台:

    
    //用于接收从post页面传递过来的用户信息,并显示出来
    $name=$_POST['id'];
    $pass=$_POST['pas1'];
    $email=$_POST['emai1'];
    echo $name;
    echo "
    "
    ; echo $pass; echo "
    "
    ; echo $email; ?>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    2.get

    			<form action="getdo1.php" method="get">
    			用户名:<input type="text" name="id">
    			密码:<input type="password" name="pas1">
    			邮箱:<input type="email" name="emai1">
    			<input type="submit" value="提交">
    			</form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    
    	$name=$_get['id'];
    	$pass=$_get['pass'];
    	$emai=$_get['email'];
    	echo $name . "
    "
    ; echo $pass ."
    "
    ; echo $email ."
    "
    ; ?>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述另外利用get进行超链接传输:

    <a href="getdo.php? id=1">第一篇文章</a>
    	<a href="getdo.php? id=2">第二篇文章</a>
    	<a href="getdo.php? id=3">第三篇文章</a>
    
    • 1
    • 2
    • 3
    
    $id=$_GET['id'];
    echo "您单击了第".$id."篇文章";
    ?>
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    简单总结

    从安全性上来讲,get提交的数据在url栏可以看见,而post提交的数据是不可见的,因此post更安全。

    从提交原理上讲, get提交是参数一个一个的提交,post提交是所有参数作为一个整体一起提交。

    从提交数据的大小上来讲, get提交一般不超过255个字节,post提交的大小取决于服务器。

    从灵活性上讲,get很灵活,只要有页面的跳转就可以传递参数,post不灵活,post提交需要有表单的参与。

    有关问题的解决

    在进行表单传值时,发现了有关单选和复选出现的问题:
    在这里插入图片描述查找资料后发现原因是:
    因为单选框名字都一致,而我们需要获取相应选项的value值,这时需要手动在HTML页面中添加value,用value值的不同来判断所选的选项:

    					//将单选框的value值继续修改
    					<input type="radio" name="sex" value="女"><input type="radio" name="sex" value="男">
    • 1
    • 2
    • 3

    运行:
    在这里插入图片描述同样的,对于复选框来说,它可以同时选多个选项,而接收页面使用$_POST接收时只有一个变量(一个变量只有一个值),因此会出现后选的选项会覆盖先选的选项,这个问题可以用数组来解决。

    //信息收集页面
    				   <input type="checkbox" name="hobby[]" value="书法">书法
    				   <input type="checkbox" name="hobby[]" value="绘画">绘画
    				   <input type="checkbox" name="hobby[]" value="演讲">演讲
    
    • 1
    • 2
    • 3
    • 4
    //显示页面
                       var_dump($hobby)."
    "
    ;
    • 1
    • 2

    在这里插入图片描述另一种解决方法是利用 isset()函数来输出复选框的选择情况:

    <form action="checkdo1.php" method="post">
    	        <h3>复选框的演示</h3>
    	        <input type="checkbox" name="check_a" value="a">摄影<br>//设置不同value值,当被勾选时相应值就会被进行post传递,用于后台收集
    	        <input type="checkbox" name="check_b" value="b">书法<br>
    			<input type="checkbox" name="check_c" value="c">绘画<br>
    	        <br>
    	        <input type="submit" value="提交">
    	    </form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    
     if(isset($_POST))//使用isset函数判断变量被定义的方式
        {
            if(isset($_POST['check_a']))
            {
                $check_a = $_POST['check_a'];
            }
            if(isset($_POST['check_b']))
            {
                $check_b = $_POST['check_b'];
            }
            if(isset($_POST['check_c']))
            {
                $check_c = $_POST['check_c'];
            }
            echo "
    "
    ; if(isset($check_a) && $check_a == 'a') { echo "摄影
    "
    ; } if(isset($check_b) && $check_b == 'b') { echo "书法。
    "
    ; } if(isset($check_c) && $check_c == 'c') { echo "绘画。
    "
    ; } } ?>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    在这里插入图片描述

    总结

    人生就像一场马拉松,能让你走得更久、更远的,是你的韧性。愿你一往无前,所向披靡!

    在这里插入图片描述
    如有错误,还请前辈们多多指点,感谢万分!

  • 相关阅读:
    string类型数据的基本操作
    Nuttx系统学习笔记(三)——使用Nuttx操作STM32F429外设
    基于MUSIC算法的二维超声波成像matlab仿真
    vulhub中Aapache Tomcat AJP 文件包含漏洞复现(CVE-2020-1938)
    学生HTML个人网页作业作品 简单的IT技术个人简历模板html下载 简单个人网页设计作业 静态HTML个人博客主页
    刷题记录:牛客NC19975[HAOI2008]移动玩具
    Python之数据库(MYSQL)连接
    微信小程序之会议OA系统首页布局搭建与Mock数据交互
    2015-2020年全国地区生产总值及一二三产构成数据总览,shp/excel格式
    前端监控 SDK 开发分享
  • 原文地址:https://blog.csdn.net/weixin_64122448/article/details/126752444