PHP从入门到精通

article/2025/10/24 9:48:05

【原】PHP从入门到精通2小时【图文并茂】

主要内容:

  1. 搭建PHP开发环境
  2. 第一个helloworld程序
  3. 变量
  4. 全局变量
  5. 循环结构
  6. 函数
  7. 数组
  8. 面向对象编程
  9. 继承
  10. 接口
  11. 多态
  12. 日志
  13. 文件的读写
  14. 时间格式和时区
  15. 创建图形
  16. 从远程获取图形
  17. 生成二维码
  18. php与数据库mysql的连接
  19. mysql数据库面向对象编程
  20. cookie技术
  21. 查看cookie
  22. session技术
  23. 查看session
  24. 文件上传

 

PHP(Hypertext Preprocessor)PHP超文本预处理程序,是一种嵌入HTML的脚本语言,运行在服务器。

如果有一定的编程基础,1小时之内看完so easy!

搭建PHP开发环境

PHP开发环境主要3部分:服务器Apache,编程语言PHP,数据库MySQL。搭建开发环境,直接使用XAMPP集成安装就可以。

XAMPP=Apache+MySQL+PHP+Perl,X表示的是跨平台。

官网下载安装即可:https://www.apachefriends.org/zh_cn/index.html

 

( 安装太简单了,没有什么可说的,不过如果以前安装过tomcat,apache,MySQL等,xampp的部分功能可能不能使用,解决办法网上很多,不再赘言)

第一个helloworld程序

php可以使用note++进行编辑。

helloworld.php

?
1
2
3
<?php
     echo "hello world!" ;
?>

  

然后运行XAMPP的控制面板,点击Apache的start,绿色就是正常运行了。

然后将helloworld.php文件放在路径:C:\xampp\htdocs

浏览器输入:http://localhost/helloworld.php

ok,我们的第一个PHP程序就完成了。

 

ps:以后我们将php文件放在一个单独的文件夹basic中,便于管理

变量

变量,存储数据的容器,在php中,使用$(美元符号)开头的就是变量,可以给变量赋值,或者输出变量的值。

另外,php语句以;(英文状态半角的分号)结束。

?
1
2
3
4
5
6
7
8
<?php
     
     //$定义变量
         $text= 'this is a text' ;
     //输出变量
         echo $text;
?>

  

全局变量

全局变量就是在所有的php文件范围内都可以使用的变量(变量的概念,存储数据的容器)

最常用的全局变量有$_GLOBAL,$_SERVER,$COOKIE,$_SESSION,__FILE__(注意是2个下划线),__LINE__

php文件是嵌入到html、的一种语言,运行在服务器端,可以和html语言混合书写。

这里的.(点号)表示拼接字符串,echo可以输出字符串。

global.php

?
1
2
3
4
5
6
7
8
9
10
11
<?php
     echo '当前执行脚本文件名:' .$_SERVER[ 'PHP_SELF' ]. '<br/>' ;
     echo '当前执行脚本根目录:' .$_SERVER[ 'DOCUMENT_ROOT' ]. '<br/>' ;
     //单行注释
     echo '当前执行脚本绝对路径:' .$_SERVER[ 'SCRIPT_FILENAME' ]. '<br/>' ;
     //print_r($_SERVER);
     
     //返回当前文件名,行号
     echo '当前文件名称:<strong>' .__FILE__. '</strong><br/>' ;
     echo '当前行号:<strong>' .__LINE__. '</strong><br/>' ;
?>

打开浏览器,输入:http://localhost/basic/global.php

 

 循环结构

循环主要就是for循环,和while循环,可以重复执行某一个动作,直到满足条件

for(初始化计数值; 满足条件就继续执行 ; 执行后的操作,将计数值+1){ 执行的代码; }

while( 满足条件就继续执行){ 执行的代码;  将计数值+1 ;  }

for_while.php

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
     //for循环
     for ($i=0;$i<10;$i++){
         echo 'good!  ' ;
     }
     
     echo '<br/>' ;
     
     //while循环
     $j=0;
     while ($j<5){
         echo 'do...   ' ;
         $j++;
     }
?>

打开浏览器,输入:http://localhost/basic/for_while.php

 

函数

这是任何一种语言的重点,包括php

func.php

?
1
2
3
4
5
6
7
8
9
10
<?php
     
     sum(1,3);
     //定义求和函数,带2个参数
     function sum($a,$b){
         echo "$a+$b=" .($a+$b); //双引号会输出变量,单引号输出字符串
         echo '<br/>' ;
         echo '$a+$b=' .($a+$b);
     }
?>
?
1
?>

打开浏览器,输入:http://localhost/basic/func.php

 

 数组

数组分为索引数组,关联数组,使用print_r(数组)来输出数组内容

var_dump(数组)查看详细信息

可以使用foreach(数组 as 键 = > 值){  } 来循环输出数组

array.php

?
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
31
32
33
<?php
     //索引数组
     $arr=array( '小李' , '25' , '男' , '开发工程师' );
     print_r($arr);
     //Array ( [0] => 小李 [1] => 25 [2] => 男 [3] => 开发工程师 )
     
     //关联数组
     $array=array( '姓名' => '小明' , '年龄' => '25' , '性别' => '男' , '职业' => '开发工程师' );
     print_r($array);
     //Array ( [姓名] => 小明 [年龄] => 25 [性别] => 男 [职业] => 开发工程师 )
     
     echo '<br/>' ;
     //输出详细信息
     var_dump($arr);
     /*array(4) {
         [0]=> string(6) "小李"
         [1]=> string(2) "25"
         [2]=> string(3) "男"
         [3]=> string(15) "开发工程师"
     }*/
     
     echo '<br/>' ;
     //循环输出数组
     foreach ($array as $k=>$v){
         echo "键值对:$k --> $v" . '<br/>' ;
     }
     /**
         键值对:姓名 --> 小明
         键值对:年龄 --> 25
         键值对:性别 --> 男
         键值对:职业 --> 开发工程师
     */
?>

  

 

以下内容就是编程技术的分水岭,面向对象编程


 

 

 面向对象编程

在面向对象编程的思想中,有最重要的2句话:

  1. 类用来封装代码
  2. 对象用来封装数据

首先来学习怎么样定义一个类:

类名前+class,类中有public的属性,如$name,$sex,$age,还有public的方法say()

在类中,只要new一个对象,就自动会执行__construct构造方法

一个类被销毁,或者程序执行完毕,自动执行__destruct()解构方法

类的属性和方法,通过对象->指针符号调用

$this 表示当前对象。

classMehtod.php

?
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
31
32
33
34
35
<?php
     //定义一个类
     class ren{
         public $name;
         public $sex;
         public $age;
         //成员方法
         public function say(){
             echo '我的名字是' .$ this ->name. ',性别是' .$ this ->sex. ',' .$ this ->age. '岁了<br/>' ;
         }
         
         //构造方法,只要new 就会执行
         function __construct($name,$sex,$age){
             $ this ->name=$name;
             $ this ->sex=$sex;
             $ this ->age=$age;
             echo '构造对象' .$ this ->name. '<br/>' ;
         }
         
         //解构方法,程序结束,对象销毁时执行
         function __destruct(){
             echo '解构对象' .$ this ->name. '<br/>' ;
         }
     }
     
     
     //实例化对象
     $xiaoli= new ren( '小李' , '男' , '25' );
     $xiaoli->say();
     /*输出:
         构造对象小李
         我的名字是小李,性别是男,25岁了
         解构对象小李
     */
?>

  

 

 继承

面向对象编程思想中,有3个核心概念:

  1. 封装
  2. 继承
  3. 多态

封装其实就是类,定义类就是将代码封装起来了。

其次就是继承!

继承的关键字:extends

$this 表示当前对象。

一个B类继承另外一个类A,B会自动拥有A的所有的属性和方法,而不用再书写一遍(继承的思想,程序员懒惰的直接体现,要是程序员也有一个有钱的爹可以继承财富该多好。。。)

inherit.php

?
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
<?php
     //申明tool类
     class tool{
         function on (){
             echo '<br/>启动<br/>' ;
         }
         function run(){
             echo '<br/>运行<br/>' ;
         }
         function off(){
             echo '<br/>关闭<br/>' ;
         }
     }
     
     //继承inherit
     class fan extends tool{
         function app(){
             $ this -> on ();
             $ this ->run();
             $ this ->off();
         }
     }
     
     //简化使用
     $haierFan= new fan();
     $haierFan->app();
?>

  

 

 接口

接口是一种更加高级的继承方法

定义接口的关键字:interface

实现(继承)接口的关键字:implements

接口中的所有的方法都是默认public的,而且只要定义,不用实现(在实现类中实现具体方法)

interface.php

?
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
     //申明接口
     interface tool{
         function on ();
         function run();
         function off();
     }
     
     //实现接口
     class fan implements tool{
         public $name;
         function on (){
             echo '<br/>' .$ this ->name. '风扇启动<br/>' ;
         }
         function run(){
             echo '<br/>' .$ this ->name. '风扇运行<br/>' ;
         }
         function off(){
             echo '<br/>' .$ this ->name. '风扇关闭<br/>' ;
         }
         
         function __construct($name){
             $ this ->name=$name;
         }
     }
     
     //继承inherit
     class haierfan extends fan{
         function app(){
             $ this -> on ();
             $ this ->run();
             $ this ->off();
         }
     }
     
     //实例化
     $fan= new fan( '美的 ' );
     $fan-> on ();
     $fan->run();
     $fan->off();
     
     echo '<br/> ------------分割线------------ <br/>' ;
     
     //实例化
     $haierfan= new haierfan( '海尔 ' );
     $haierfan->app();
     
     
     
?>

  

 

多态

作为面向对象编程的3大思想之一,多态也是一种高级技能

多态一般都是通过接口来实现的

就是调用同一个方法,执行得到的结果却不同!!!

通过输入参数的不同,执行结果不同,这就是多态

polymorphism.php

?
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
     //申明接口
     interface tool{
         function on ();
         function run();
         function off();    
     }
     
     //实现接口
     class fan implements tool{
         public $name;
         
         function on (){
             echo '<br/>' .$ this ->name. '风扇启动<br/>' ;
         }
         function run(){
             echo '<br/>' .$ this ->name. '风扇运行<br/>' ;
         }
         function off(){
             echo '<br/>' .$ this ->name. '风扇关闭<br/>' ;
         }
         function __construct($name){
             $ this ->name=$name;
         }
     }
     //实现接口
     class engine implements tool{
         public $name;
         
         function on (){
             echo '<br/>' .$ this ->name. '发动机启动<br/>' ;
         }
         function run(){
             echo '<br/>' .$ this ->name. '发动机运行<br/>' ;
         }
         function off(){
             echo '<br/>' .$ this ->name. '发动机关闭<br/>' ;
         }
         function __construct($name){
             $ this ->name=$name;
         }
     }
     
     
     //状态类
     class toolStatus{
         function ts($tool){
             $tool-> on ();
             $tool->run();
             $tool->off();
         }
     }
     
     //应用多态polymorphism
     $fan= new fan( '海尔 ' );
     $engine= new engine( '奥迪 ' );
     $toolStatus= new toolStatus();
     
     $toolStatus->ts($fan);
     $toolStatus->ts($engine);
?>

  

 


 

这又是一条牛逼的分割线,php基本功能就是以上的内容,下面是一些更加高阶玩法。

 

日志

log.php

?
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
31
32
33
34
35
36
37
38
39
40
41
<?php
     /*
         1、设置php.ini文件
         2、日志分类
         3、查看日志
     */
     
     //生成运行日志
     error_log( "FORM " .__FILE__. " ERROR LINE:" .__LINE__);
     /*需要设置正确的日志路径,确保路径存在
         [15-Sep-2018 09:31:45 Europe/Berlin]
         这是来自C:/xampp/htdocs/basic/log.php 的一段自定义的报错日志信息
     */
     
     //生成系统日志
     openlog( 'PHP7' ,LOG_PID,LOG_USER);
     syslog(LOG_WARNING, '向syslog发送自定义信息' );
     closelog();
     
  
     try {
         $a=10;
         if (isset($b)){
             echo "程序正常执行" ;
         } else {
             throw new Exception();
         }     
     } catch (Exception $e){
         ERROR_LOG( "错误代码所在路径:" .$e->getFile());
         ERROR_LOG( "错误代码所在行号:" .$e->getLine());
     }
     echo "<br/>程序执行完毕<br/>" ;
     /*
     [15-Sep-2018 09:44:41 Europe/Berlin] 错误代码所在路径:C:\xampp\htdocs\basic\log.php
     [15-Sep-2018 09:44:41 Europe/Berlin] 错误代码所在行号:26
     */
     
     //输出日志 依赖于文件的读写操作,后续将会学习
     
?>

  

 

查看运行日志

 

 

 查看系统日志

显示乱码主要是编码字符集的问题,将log.php文件保存为ANSI格式即可看到中文正常显示,解决方法网上很多。

 

 文件的读写

fileIO.php

?
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
31
32
33
<?php
     //读取文件
     //readfile('./test.txt');
     
     
     //访问远程文件,需要设置php.ini的 allow_fopen=On
     $html=file_get_contents( 'http://www.baidu.com' );
     //输出html页面
     //echo $html;
     
     //设置时区
     //可以在文件开头位置设置默认配置的时区,也可以在php.ini中进行设置
     ini_set( 'date.timezone' , 'Asia/Shanghai' );
     //date_default_timezone_set('asia/shanghai');
     
     //向文件中写入内容
     /*
         1、打开文件
         2、写入数据
         3、关闭文件
     */
     //$file=fopen('./test.txt','a+');//追加模式
     //$file=fopen('./test.txt','r+');//半覆盖(数据多少覆盖多少)   
     $file=fopen( './test.txt' , 'w+' ); //全覆盖
     if ($file){
         fwrite($file, '写数据123!\r\n换行了吗?\r\n' ); //单引号不会换行
         
         fwrite($file, "写数据123!\r\n换行了吗?\r\n" ); //双引号换行
         echo date( "Y-m-d H:i:s" ). '写入数据成功' .date( "Ymd His" );
         fclose($file);
     }
     
?>

  

 

 

 

 时间格式和时区

time.php

?
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
<?php
     //设置时区
     echo '<br/>默认时区时间:' .date( "Y-m-d H:i:s" ). '<br/>' ;
     
     //可以在文件开头位置设置默认配置的时区
     //也可以在php.ini中进行设置date.timezone(所有文件生效)
     ini_set( 'date.timezone' , 'Asia/Shanghai' );
     
     echo '<br/>上海时区时间:' .date( "Y-m-d H:i:s" ). '<br/>' ;
     
     //或者直接设置时间格式
     date_default_timezone_set( 'asia/tokyo' );
     echo '<br/>东京时区时间:' .date( "Y-m-d H:i:s" ). '<br/>' ;
     
     echo '<br/>格式化时间:' .date( "YmdHis" ). '<br/>' ;
     /*
         默认时区时间:2018-09-15 10:44:03
         上海时区时间:2018-09-15 16:44:03
         东京时区时间:2018-09-15 17:44:03
         格式化时间:20180915174403
     */
     
?>

  

 

创建图形

image.php

?
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
<?php
     //创建画布
     $img=imagecreate(500,500);
     
     //设置颜色
     //背景色
     $white=imagecolorallocate($img,255,255,255);
     
     
     //画笔
     $black=imagecolorallocate($img,0,0,0);
     
     
     //矩形
     imagerectangle($img,100,100,300,300,$black);
     
     //输出图像前清理输出缓冲
     ob_clean();
     //解决chrome兼容性问题
     header( "Content-type:image/jpeg" );
     //输出图像到浏览器
     imagejpeg($img) or die( "创建图像失败<br/>" );
     
     //释放资源
     imagedestroy($img);
     
?>

  

 

 

从远程获取图形

imageUrl.php

?
1
2
3
4
5
6
7
8
9
<?php
     $img=imagecreatefromjpeg( 'https://b-ssl.duitang.com/uploads/item/201607/04/20160704052649_WLyfB.jpeg' );
     
     ob_clean();
     header( 'Content-type:image/jpeg' );
     imagejpeg($img) or die( '创建图形失败' );
     imagedestroy($img);
     
?>

  

 

 

生成二维码

vcode.php

?
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
     vcode(150,100);
     
     //生成验证码
     function vcode($width,$high){
         //创建画布
         $img=imagecreate($width,$high);
         
         //设置背景色 黑色
         $black=imagecolorallocate($img,0,0,0);
         //设置画笔 白色
         $white=imagecolorallocate($img,255,255,255);
         
         //产生随机干扰线条
         for ($i=0;$i<$width/20;$i++){
             imageline($img,rand(0,$width),rand(0,$high),rand(0,$width),rand(0,$high),$white);
         }
         
         //产生随机干扰点
         for ($i=0;$i<$width;$i++){
             imagesetpixel($img,rand(0,$width),rand(0,$high),$white);
         }
         
         //产生4个随机字母,数字
         $data= '' ;
         for ($i=0;$i<4;$i++){
             switch (rand(1,3)){
                 case '1' :$ch=rand(0,9); break ;
                 case '2' :$ch=sprintf( '%c' ,rand(65,90)); break ;
                 case '3' :$ch=sprintf( '%c' ,rand(97,122)); break ;
             }
             $data=$data.$ch;
         }
         
         //绘制truetype文字
         imagettftext($img,$high/3,rand(1,15),$width*0.1,$high*0.7,$white, 'C:/Windows/Fonts/Arial.ttf' ,$data);
         
         
         //清理缓存
         ob_clean();
         //解决chrome兼容性问题
         header( 'Content-type:image/jpeg' );
         //输出到浏览器
         imagejpeg($img) or die( '创建画布失败' );
         imagedestroy($img);
     }
     
     
?>

  

 

 php与数据库mysql的连接

mysql.php

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
     //连接数据库
     $host= 'localhost' ;
     $username= 'root' ;
     $password= '' ;
     $database= 'my_db' ;
     $conn=mysqli_connect($host,$username,$password,$database) or die( '数据库连接失败!' );
     //echo '数据库连接成功!';
     
     //操作数据库
     $sql= 'select * from cartoon' ;
     $result=mysqli_query($conn,$sql);
     
     
     //读取返回信息
     while ($obj=mysqli_fetch_assoc($result)){
         echo $obj[ 'name' ]. '现在' .$obj[ 'age' ]. '岁了。<br/>' ;
     }
     
     //关闭数据库连接
     mysqli_close($conn);
     
?>

  

 

MySQL数据库面向对象编程

mysql_obj.php

?
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
31
32
33
34
<?php   
     // 创建连接
     $conn = new mysqli( 'localhost' , 'root' , '' , 'my_db' )or die( "连接失败: " . $conn->connect_error);
     if ($conn){
         echo "数据库连接<br/>" ;
     }
      
     //操作数据库
     $sql = "SELECT * FROM cartoon;" ;
     $result=$conn->query($sql);
     while ($row=$result->fetch_assoc()){
         echo "name:" .$row[ 'name' ]. "-country:" .$row[ 'country' ]. "<br/>" ;
     }
     /*
         name:校长-country:中国
         name:西门庆-country:中国
         name:武大郎-country:中国
         name:武松-country:中国 
     */
      
     //关闭连接
     //$conn->close();
     
     //$conn2=new mysqli('localhost','root','','my_db') or die('连接失败:'.$conn2->connect_error);
     $sql2= "SELECT * FROM cartoon;" ; //sql语句一定要用双引号!!!
     $result2=$conn->query($sql2);
     //print_r($conn2->query($sql2));
     
     while ($row2=$result2->fetch_assoc()){
         echo 'name:' .$row2[ 'name' ]. ',sex:' .$row2[ 'sex' ]. '<br/>' ;
     }
     $conn->close();
     echo "数据库关闭<br/>" ;
?>

  

 

cookie技术

cookie.php

cookie可以用于页面之间传值,没有设置有效时间,那么默认为浏览器关闭失效

这就是会话cookie,保存在内存中
(关闭页面不会失效,关闭浏览器才会失效)

cookie.php

?
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
31
32
33
34
35
36
<?php
     //访问时间
     echo '访问时间<br/>' ;
     if (isset($_COOKIE[ 'visittime' ])){
         echo '您上一次访问本网站是在:' .$_COOKIE[ 'visittime' ]. '<br/>' ;
         echo '本次访问时间是:' .date( 'Y-m-d H:i:s' ). '<br/>' ;
         setcookie( 'visittime' ,date( 'Y-m-d H:i:s' ));
     } else {
         setcookie( 'visittime' ,date( 'Y-m-d H:i:s' ));
         echo '这是您第一次访问本网站<br/>' ;
     }
     
     //访问次数
     echo '访问次数<br/>' ;
     if (isset($_COOKIE[ 'num' ])){
         setcookie( 'num' ,$_COOKIE[ 'num' ]+1);
         echo '这是您第' .$_COOKIE[ 'num' ]. '次访问本网站<br/>' ;       
     } else {
         setcookie( 'num' ,1+1);
         echo '欢迎您首次访问本网站<br/>' ;
     }
     
     /*
     访问时间
     您上一次访问本网站是在:2018-09-16 05:09:22
     本次访问时间是:2018-09-16 05:09:32
     访问次数
     这是您第2次访问本网站
     */
     
     //删除cookie,有效时候为过去时间即可,time()-1
     setcookie( 'num' ,1,time()-1);
     echo '$_COOKIE[num]已被注销<br/>' ;
     print_r($_COOKIE); //再一次刷新页面时才会生效!!!
?>

  

 

查看cookie

 testcookie.php

?
1
2
3
4
5
6
7
8
<?php
      
     //创建cookie
     $sta=setcookie( 'testcookiename' , 'testvalue' ,time()+60*60);
     if ($sta){
         echo 'Cookie设置成功!' ;
     }
?>

  

chrome浏览器查看cookie

打开浏览器的设置》高级设置》

隐私设置/内容设置》所有cookie和网站数据

》找到你的网站名,以及cookie的名字,点击打开即可看到保存到cookie的内容。

 

 session技术

session存储在服务器,更安全,没有长度限制
而cookie存储在客户机,客户可以禁用cookie
session可以用于跨页面请求,有一个随机生成的唯一的session_id
典型的应用就是购物车

session.php

?
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
31
32
33
34
<?php
     /*
         session技术
         session存储在服务器,更安全,没有长度限制
         而cookie存储在客户机,客户可以禁用cookie
         session可以用于跨页面请求,有一个随机生成的唯一的session_id
         典型的应用就是购物车
         
     */
     
     //准备工作,设置php.ini的session.save_path="C:\xampp\tmp"
     //启动会话
     session_start();
     
     //设置session
     $_SESSION[ 'name' ]= 'Peter' ;
     $_SESSION[ 'password' ]= '12345' ;
     
     echo 'Session 创建成功!<br/>' ;
     /*打开服务器的session文件查看
         name|s:5:"Peter";password|s:5:"12345";
     */
     
     print_r($_SESSION);
     //清空session,session文件只是清空
     $_SESSION=array();
     echo '<br/>注销当前回话session<br/>' ;
     print_r($_SESSION);
     
      //销毁session文件,session文件会被删掉
     session_destroy();
     echo '<br/>session已经彻底销毁<br/>' ;
     print_r($_SESSION);
?>

  

 

 查看session

 

如果销毁了session

 

文件上传

file_upload.php

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<html>
     <form method= 'post' enctype= 'multipart/form-data' >
         <input type= 'file' name= 'upfile' />
         <input type= 'submit' value= '上传' />
     </form>
</html>
<?php
     if (!empty($_FILES)){
         print_r($_FILES);
         $tmpname=$_FILES[ 'upfile' ][ 'tmp_name' ]; //文件临时名
         $name=$_FILES[ 'upfile' ][ 'name' ]; //文件原名
         
         //文件会上传到与该页面文件同一个目录
         move_uploaded_file($tmpname,$name) or die( '文件上传失败,程序退出!' );
         echo '<br/>文件上传成功!<br/>' ;
     } else {
         echo '<br/>没有上传文件<br/>' ;
     }
?>

  

 

 

 

 

 ok,基本上php的内容学到这里,就可以了。

 

分类: PHP, 总结
标签: php技术, 数据库技术, 数据库编码, 原创内容

http://chatgpt.dhexx.cn/article/dtqA2MT9.shtml

相关文章

Rust 从入门到精通10-所有权

在介绍rust 所有权时&#xff0c;我们先介绍内存管理的一些基础概念。 1、堆和栈 一个进程在执行的时候&#xff0c;它所占用的内存虚拟空间一般被分割为好几个区域&#xff0c;我们称为”段“&#xff08;Segment&#xff09;。常见的几个段如下&#xff1a; ①、代码段&am…

Elasticsearch从入门到精通

1、Elasticsearch简介 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎&#xff0c;无论在开源还是专有领域&#xff0c;Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 但是&#xff0c;Lucene只是一个库。想要发挥其强大的作用&#xff0…

Scala 从入门到精通

Scala 从入门到精通 scala风格与java风格 public class JavaDemo01 {public static void main(String[] args) {System.out.println("我爱你中国");} }object ScalaDemo01 {def main(args: Array[String]): Unit {println("我爱你中国")} }javac JavaDe…

尚硅谷Redis6从入门到精通

本博客为尚硅谷课程笔记&#xff0c;课程来源&#xff1a;【尚硅谷】Redis 6 入门到精通 超详细 教程_哔哩哔哩_bilibili 本博客参考内容&#xff1a; https://blog.csdn.net/weixin_47872288/article/details/118410080 https://zhangc233.github.io/2021/05/02/Redis/#Hyper…

Maven从入门到精通

文章目录 企业级架构框架图 Maven 项目构建工具概述为何需要maven&#xff1f; 四大特征仓库 repository依赖 dependency坐标 coordinate命令 mvn cmd小结 安装官网安装 配置 settings.xml配置文件设置镜像仓库改变仓库位置 eclipse 集成 maven配置 eclipse创建Maven项目创建ma…

PS从入门到精通第4节——祖传抠图技法

本结内容&#xff1a; 文末有本节内容总结 练习作业&#xff1a;素材包已上传&#xff0c;可免费下载&#xff0c;文末有练习的具体做法 背景素材直接打开为背景 本章知识重点在于对PS不同抠图工具的学习和使用选择合适的抠图工具去进行作业的制作抠图物体边缘无黑边排版比例大…

Docker从入门到精通

目录 一、初识 Docker 1、Docker概念 2、安装Docker&#xff08;CentOS系统&#xff09; 3、Docker的架构 4、阿里云镜像加速 5、Docker容器虚拟化 与 传统虚拟机比较 二、Docker 服务相关命令 1、启动docker 服务&#xff1a; 2、停止docker 服务&#xff1a; 3、重…

Midjourney从入门到精通

前言 什么是AI绘画 AI 绘画&#xff0c;顾名思义就是利用人工智能进行绘画&#xff0c;是人工智能生成内容&#xff08;AIGC&#xff09;的一个应用场景。其主要原理就是收集大量已有作品数据&#xff0c;通过算法对它们进行解析&#xff0c;最后再生成新作品&#xff0c;而算…

Jenkins从入门到精通

Jenkins从入门到精通 Jenkins简介Jenkins的特征Jenkins安装和持续集成环境配置Gitlab代码托管服务器安装Gitlab安装Gitlab添加组、创建用户、创建项目持续集成环境(1)-Jenkins安装持续集成环境(2)-Jenkins插件管理持续集成环境(3)-Jenkins用户权限管理持续集成环境(4)-Jenkins凭…

PS从入门到精通第2节——揭开PS的神秘面纱

本节内容 博客底部有内容小结&#xff08;本届内容快捷键&#xff09; 课后练习&#xff1a;&#xff08;素材包已上传&#xff0c;可免费下载&#xff09; 下面开始今天的课程 新建画布后拖拽素材进入 1. 勾选自动选择后可随意选择画布中的素材拖动 2. CTRLT调出定界框 …

PS从入门到精通

系列教程分为三个阶段 A功能精通阶段目录 红色是比较重要的课程&#xff0c;除了1和14节没有练习素材&#xff0c;其他部分都上传了案例相关的素材和高清笔记 第1节 用双手成就你的梦想 本节内容 关于版本 软件安装包可以搜索以下微信公众号或者官网下载&#xff0c;附件 …

UI自动化中断言的使用

在自动化编写脚本时&#xff0c;需要通过断言的方法来判断测试用例是否执行成功。检查点有两个&#xff0c;第一个是页面级别的检查&#xff0c;包括网页的标题和网址&#xff0c;第二个是页面元素级别的检查&#xff0c;包括元素的文本和元素的某个属性。 例子&#xff0c;下面…

UI自动化

UI自动化 本地搭建Javall商城项目maven环境搭建Maven项目管理Maven仓库 TestNG 单元测试框架安装testNG插件 八大定位方式知识点隐式等待&#xff1a;显式等待&#xff1a;iframe切换&#xff1a;window切换&#xff1a;Select下拉框Radio Button&#xff08;单选按钮&#xff…

UI自动化平台(一)

前言&#xff1a;最近萌生了做UI自动化平台的想法&#xff0c;以前做UI自动化都是直接脚本化的&#xff0c;也一直觉得UI改动一般都是很频繁&#xff0c;所以慢慢的脚本化的工作都放弃了&#xff0c;但是目前在公司&#xff0c;发现还是有点用的&#xff0c;公司的前辈也一直在…

ui自动化设计思路

小伙伴让我周末做技术分享&#xff0c;想着这是一件有意义的事情&#xff0c;便答应了下来&#xff0c;那就给大家讲讲ui自动化吧。这里会结合具体的代码给大家讲ui自动化一些理念&#xff0c;方案设计。 本文将探讨ui自动化设计思路&#xff0c;主要围绕以下方面展开讲解&…

使用UI Automation库用于UI自动化测试

&#x1f4cc; 博客主页&#xff1a; 程序员二黑 &#x1f4cc; 专注于软件测试领域相关技术实践和思考&#xff0c;持续分享自动化软件测试开发干货知识&#xff01; &#x1f4cc; 公号同名&#xff0c;欢迎加入我的测试交流群&#xff0c;我们一起交流学习&#xff01; UI A…

你知道什么叫三目表达式吗

目录 什么是三目表达式&#xff1f; 运用 1.单个使用 2.嵌套使用 什么是三目表达式&#xff1f; 1.三目表达式是一种编程中常见的表达式,它能够有效地帮助我们解决一些问题。 2.三目表达式由三个部分组成,分别是:条件表达式、结果表达式 听不懂么&#xff0c;那我们就来举个…

使用UI Automation实现自动化测试 --工具使用

当前项目进行三个多月了&#xff0c;好久也没有写日志了&#xff1b;空下点时间&#xff0c;补写下N久没写的日志 介绍下两个工具 我本人正常使用的UISpy.exe工具和inspect.exe工具 这是UISPY工具使用的图&#xff0c;正常使用到的几个属性 这里重点说一下微软件的UI Autom…

自动化测试平台(十):UI自动化元素页面的管理功能实现

一、前言 上一章我们完成了列表组件公共化封装和项目管理功能的实现,这一章将实现UI元素及元素页面的管理功能,换句话说就是对selenium执行定位操作的元素进行管理。 完整教程地址:《从0搭建自动化测试平台》 项目在线演示地址:http://121.43.43.59/ (帐号:admin 密码…

Android自动化测试入门(二)UI Automator

UI Automator是一个界面测试框架&#xff0c;支持跨进程&#xff0c;几乎可以模拟所有的人工操作。需要运行在4.3或者更高的系统版本上。它的测试代码的编写不依赖于目标应用的内部实现细节&#xff0c;非常适用编写黑盒自动化测试。 UI Automator 测试框架的主要功能包括&…