php基础教程学习笔记

介绍

php是一门在服务端运行的解释型脚本语言

php常用来动态生成html页面

<?php
    代码块
    .....
    .....
?>

向浏览器发送文本

<?php
    print "Hello World!";
?>
<?php
    echo "Hello World!";
?>
<?php
    print_r($_SERVER);
?>

echo是一个关键字,不是函数,可以一次输出多个值

print是一个函数,有返回值

使用\n换行并不会表现显示在页面上,而是表现在源码上

print_r可以更方便的显示数组,对象

向浏览器发送html

print "<b>Hello world!</b>";

print "<a href=\"page.php\">link</a>";  //注意,将标签中的"进行转义

添加注释

1.

/*
    ....
*/

2.

//....

3.

#....

4.

html注释
<!-- 2333-->

调试

打开display_errors来确保显示php发生的错误,可在phpinfo()中查看打开状态

打开display_errors的方法:ini_set('display_errors',1);

变量

php变量不分类型

定义变量:

$变量名;

$变量名=初始值;

当要在字符串中引用变量时要用双引号

单引号照字面意思处理,双引号对内容推断后再处理

html表单

<form>标签用来创建表单

action属性指向提交到的地址

method属性表示提交方式(post,get)

php接受表单数据

表单提交到php的数据以数组的方式传递

$_POST['key']

$_GET['key']

$_REQUEST['key']   //接收任何类型的数据

错误报告

与display_errors有关的配置问题是错误报告

error_reporting(0);  //不报告任何错误

error_reporting(E_ALL);  //报告所有错误

error_reporting(E_ALL&~E_NOTICE);  //报告除notice之外的所有错误

格式化数值

round(a,b);  //对数值a进行截取b位   遵守四舍六入五成双

number_format(a,b); //用法同round()

创建随机数

rand(a,b); //生成范围内的随机数,非必选参数

字符串

字符串及变量之间连接用.

如:

$s1="Hello ";

$s2="World";

$s3=$s1.$s2;

nl2br($var);    //将变量中的换行符\n全部替换为<br/>

empty();    //检验一个变量是否拥有除0之外的其他值,无值回true

isset();     //与empty相反

html实体:有些字符,像(<)这类的,对HTML标准通用标记语言下的一个应用)来说是有特殊意义的,所以这些字符是不允许在文本中使用的。要在HTML中显示(<)这个字符,我们就必须使用实体字符。

htmlspecialchars();    //把一些预定义的字符转换为 HTML 实体

htmlentities();    //将所有html标签转换为实体              html_entity_decode();//功能相反

strip_tags();    //移除所有html和php标签

urlencode($tmp);    //对变量进行url编码                     urldecode();//解码

字符串加密:

crypt();    //一种单向加密的算法

mcrypt_encrypt();     //可以解密的加密方法              用mcrypt_decrypt()解密

字符串查找:

strtok($a,b);          //截取字符串$a中b前面的字符串

substr($a,b,c);       //从第b个字符开始截取c个字符,其中b可为负        注意,索引从0开始

strlen();              //计算字符串中字符的数量

字符串替换:

str_ireplace($a,$b,$string);     //将字符串string中的所有$a换成$b    此搜索不区分大小写,str_replace()区分大小写

trim();    //去除字符串前后的所有空格,制表符,换行符

数组

创建数组:

$list=array('apples','bananas','oranges');            //下标默认从0开始

指定下标:

$list=array(1=>'apples',2=>'bananas',3=>'oranges');     //如果1后面的元素不指定下标则延续第一个下标的值

range(1,10);              //生成1-10的数组

range('a','z');             //生成a-z的数组

range(1,100,2);         //生成的序列增量为2

向数组添加元素:

$list[]='111';

$list[]='222';

//这两句的含义是向数组list添加两个值为'111'和'222'的元素

count();       //获取数组中元素的数量

数组删除:

unset($tmp);         //当$tmp为一个数组时就删除这个数组,当$tmp为数组中的一个元素时则删除这个元素

                           //这个函数能删除变量,并释放所占用的内存

也可以用array();来清空数组

数组合并

array_merge();           //将两个数组合并到一起

也可直接用加号来合并数组,如:

$array3=$array1+$array2;

$array1+=$array2;

数组访问

foreach($array as $key => $value) {

    print "<p>Key is $key. Value is $value</p>";

}

$key是下标 

$valu是下标$key的元素在$array中的值

创建多维数组

$fruits=array('apples','bananas','oranges');

$groceries=array('fruits'=>$fruits);

数组排序

sort();       //排序

shuffle();      //随机重组

数组的应用:

当有复选按钮时可以将用户选择的信息放到数组里再post,方便php处理

字符串和数组之间的转换

explode($a,$b);             //将字符串$b以$a为基准分割为数组

implode($a,$b);             //将数组$b中的值连成字符串,中间以$a分割

list();        //用来将数组元素赋值给单独变量

例:

$data=array('a',2,'c');
list($a1,$b1,$c1)=$data;

//此时变量$a1='a'
          $b1=2
          $c1='c'
list中不接受的元素可以不指定list(,,$c1)

创建web应用:

使用外部文件:

一些重复代码不需要重写,如头和尾,可以保存到另一个文件中,需要的时候再引用文件.

使用include()和require()

使用include()时,如果函数失败,脚本还会继续执行

使用require()时,如果函数失败,脚本会终止

<?php
    
    include('header.html');

?>

.....

<?php
    
    include('footer.html');

?>    

定义常量:

define('name',value);

引用常量时不需要加$

使用时间和日期:

date();    //可以根据参数来输出相应的格式

mktime(hour,minute,second,month,day,year);           //返回参数中的时刻到1970.1.1的秒数(即时间戳)

使用date()时需要先用date_default_timezone_set('...')来设置时区

使用粘贴表单:

当用户注册时会输入很多信息,如果一些重要信息每天的话需要重新注册,会重新回到注册页面

此时让用户有更好的体验,会将原来填的信息还原回去

可以通过_post['...']实现       注意,用户的输入要用htmlspecialchars()处理

输出控制:

一些函数,如header(),setcookie(),session_start()只能在没有任何东西发送到浏览器之前调用,如果已经发送了东西在执行这些函数,就会得到一些错误信息

一种解决的方法就是使用缓冲区

ob_start();             //启用输出缓冲,一般在页面开始时使用

ob_end_flush();   //将缓冲区中的信息发送到浏览器

ob_end_clean();  //清空缓冲区

ob_get_length();   //返回缓冲区中内容的长度

ob_get_contents();      //返回缓冲区中的内容

ob_flush();     //将缓冲区的内容发送到浏览器并清空缓冲区

ob_clean();     //清空缓冲区但不会关闭缓冲区

处理http头:

header()的常用方法就是重定向,需要发送一个location头,header('Location :page.php');

通常会后面会跟一个exit(),因为浏览器已经重定向到另一个界面

如果浏览器已经收到http头,则header_sent()会返回true

cookie和session:

创建cookie:

创建cookie要在发送其他信息到浏览器之前

setcookie('cookie_name','cookie_value');

读取cookie:

$_COOKIE['name'];

向cookie添加参数:

setcookie(name,value,expiration,path,domain,secure,httponly);

expiration为cookie设定一个时间长度,如果没有指定,则一直持续到浏览器关闭,php使用time()获取当前时间

path参数用来限制特定文件夹

domain参数用来限制web自域,如https://quzheng.baidu.com/

secure参数是限制只能使用安全连接(https),值为1启用

httponly参数是为了限制对cookie的访问,如防止JavaScript读取cookie

删除cookie

可以将cookie设为0来达到删除cookie的目的

setcookie('cookiename','');

也可以将cookie的过期时间设为负值

setcookie('cookiename','',time()-100);

注意使用以上方法时需要与设置cookie时的参数数量一致

创建session:

由于session需要sessionID来区分用户,可以将sessionID当作cookie,在创建session时会先创建sessionID,和创建cookie类似,要在任何信息发送到浏览器之前创建session

session_strat();

开启session时会随机产生sessionID,并向浏览器发送一个名为PHPSESSID的cookie;

通过_SESSION['names']='...'来设置session的值
可以在创建session前用session_name()来修改cookie的名称

用session_set_cookie_params()来修改session cookie的一些配置,如过期时间...

删除session:

删除session信息来实现删除session

$_SESSION=array();

session_destroy();    //从服务器删除session数据

函数

创建函数:

function function_name($arg1,$arg2=2333) {

    ....

    return $arg1;

}

变量全局化:

使用global关键字,使变量与全局变量同步

文件和目录

创建文本文件:

file_exists('file_name');         //查找服务器是否存在文件名为..的文件

touch('1.txt');       //用来创建一个空白文档,前提php要有一个目录的写权限

写文件:

file_put_contents($file,$data,FILE_APPEND);

第一个参数为文件名或绝对路径,相对路径

第二个参数为要写入的内容

第三个参数为可选参数,选定时内容会写到原内容的末尾,没选定时会覆盖原来的内容

注意换行

unix和mac---\n

windows----\r\n

可以用常量PHP_EOF让php根据当前系统自动决定

锁定文件

当同一时刻多个用户写文件时会造成文件错误

file_put_contents();

第三个参数选LOCK_EX来锁定文件

当FILE_APPEND和LOCK_EX都要选时可以用管道符,file_put_contents($file,$data,FILE_APPEND | LOCK_EX);

用is_writable($file);   //来判断当前状态文件是否可写

读取文件

使用file_get_contents($file);         //会将文件内容按照一个字符串来读取

使用file();     //它可以将文件中的内容一行一行读取,一行占一个数组,所有内容在一个数组中

readfile();    //用于读取文件内容,并将文件内容发送到浏览器

处理文件上传:

form标签必须含有enctype="multipart/form-data"属性,必须用post方法

在php中使用$_FILES['file_name']['...']来获取上传的文件的信息

name->文件名

type->文件的MIME类型

size->文件的大小

tmp_name->文件在服务器的临时文件名

error->如果发生了错误的错误代码

上传后可以用move_uploaded_file();来移动文件

第一个参数是文件在服务器的临时文件名

第二个参数是要移动到的完整路径和文件名

移动成功返回1

为了能够上传文件,必须对php.ini进行设置

file_uploads必须启用

upload_tmp_dir设置php能放置文件的目录

文件目录

candir();      //以数组的形式返回参数中路径的文件及文件夹

filesize();    //返回文件的大小

filemtime();    //返回文件的修改时间(时间戳),可以用date()进行格式化

is_dir();

is_file();

glob();  //搜索文件名相匹配的文件目录,如(*.jpg   filename*.doc)

fileperms();     //返回文件的权限

fileatime();     //返回文件的最后访问时间

fileowner();    //返回拥有该文件的用户的用户名

basename()或dirname()           返回完整路径字符串中的文件名或目录名

finfo_file();          //返回文件的MIME类型

创建目录

mkdir('dir_name',perms);

第一个参数为路径或文件夹名

第二个参数是权限,默认为0777

rmdir();  //删除现有的目录

md5();         //一个散列函数

增量读取文件

读取文件的一部分用fgets($strings,length);

feof();   //判断是否到文件的末尾

SQL

连接mysql

$dbc=mysql_connect(hostname,username,password);          //连接后会返回一个访问点,可以用一个变量来接收

mysql_close($dbc);       //断开数据库

数据库查询

mysql_query(SQL_command,database)

错误处理

mysql_error();       //返回mysql服务器返回的错误信息的文本信息

可以用@来防止php显示任何消息和警告

$dbc=@mysql_connect(hostname,username,password); 

安全查询

$var=mysql_real_escape_string($var,$dbc);         //对一些危险的字符,如' / "进行转义

发布了2 篇原创文章 · 获赞 1 · 访问量 262

猜你喜欢

转载自blog.csdn.net/qq_39063450/article/details/100852680