php 订阅
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。 [1] 展开全文
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。 [1]
信息
外文名
PHP: Hypertext Preprocessor
设计者
Rasmus Lerdorf
中文名
超文本预处理器
编程范型
面向对象、命令式编程
PHP简介
PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。自20世纪90年代国内互联网开始发展到现在,互联网信息几乎覆盖了我们日常活动所有知识范畴,并逐渐成为我们生活、学习、工作中必不可少的一部分。据统计,从2003 年开始,我国的网页规模基本保持了翻番的增长速度,并且呈上升趋势。PHP 语言作为当今最热门的网站程序开发语言,它具有成本低、速度快、可移植性好、 内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。但随着互联网的不断更新换代,PHP语言也出现了不少问题。 [1]  根据动态网站要求,PHP语言作为一种语言程序,其专用性逐渐在应用过程中显现,其技术水平的优劣与否将直接影响网站的运行效率。其特点是具有公开的源代码, 在程序设计上与通用型语言,如C语言相似性较高,因此在操作过程中简单易懂,可操作性强。同时,PHP语言具有较高的数据传送处理水平和输出水平,可以广泛应用在Windows系统及各类Web服务器中。如果数据量较大,PHP语言还可以拓宽链接面,与各种数据库相连,缓解数据存储、检索及维护压力。随着技术的发展,PHP 语言搜索引擎还可以量体裁衣,实行个性化服务,如根据客户的喜好进行分类收集储存,极大提高了数据运行效率。 [2] 
收起全文
精华内容
下载资源
问答
  • php
    万次阅读
    2020-09-07 09:36:03

    【1】windows下php运行环境安装
    【2】php连接MySQL
    【3】centos7下用yum的方式安装php7.2
    【4】编译式安装php
    【5】php日志文件
    【6】php.ini配置
    【7】php-fpm.conf重要参数详解
    【8】扩展mysql


    【1】windows下php运行环境安装
    参考连接

    #下载地址
         https://windows.php.net/download#php-7.3
    #解压安装包至任意目录
    #结合apache或nginx进行配置即可
    
    ###名词解释
        php-fpm 	#PHP FastCGI 进程管理器,用于管理PHP 进程池的软件,用于接受web服务器的请求。
        php-fastcgi 	#只是一个cgi程序,只会解析php请求,并且返回结果,不会管理(因此才出现的php-fpm)。
        php-cgi	#在php-fastcgi出现之前是有一个php-cgi存在的,只是它的执行效率低下,因此被php-fastcgi取代
    

    【2】php连接MySQL
    参考连接

    PHP 5 及以上版本建议使用以下方式连接 MySQL :
        MySQLi extension ("i" 意为 improved)
        PDO (PHP Data Objects)
    PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。
    
    ###修改php.ini文件
        extension=mysqli
        extension_dir = "D:/Tools/PHP/php-7.3.12-Win32-VC15-x64/ext"
    #执行命令
        php.exe -m
    

    【3】centos7下用yum的方式安装php7.2
    参考资料

    #检查是否安装了php
        yum list installed |grep php	#yum安装检查
        rpm -qa |grep php	#rpm安装检查
        #自己编译安装的有多种方式查询,例如查找php的执行程序,或者检查进程ps -ef |grep php等方法。
    #配置php源
        yum install epel-release
        rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    #安装php
        yum install php72w-fpm	#安装php-fpm
        yum -y install  php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-pear php72w-devel #安装php的扩展
    #查看是否成功安装
        php -v  #查看是否成功安装
        php -m  #查看所有的扩展
    #配置文件所在的位置
        php.ini                   /etc/php.ini
        phpize                   /usr/bin/phpize
        php-config             /usr/bin/php-config
        php-fpm.conf         /etc/php-fpm.conf
        php-fpm.pid           /var/run/php-fpm/php-fpm.pid
    #修改 /etc/php-fpm.d/www.conf 文件
        listen = 127.0.0.1:9000 	#修改php-fpm的监听端口
        listen.allowed_clients= 127.0.0.1	#连接的报名单,注释掉或为空则允许所有
    #启动php-fpm
        service php-fpm start/stop/restart
    
    • 其他扩展,按需安装
    php72w-cli 
    php72w-common 
    php72w-devel 
    php72w-embedded 
    php72w-fpm 
    php72w-gd 
    php72w-mbstring 
    php72w-mysqlnd 
    php72w-opcache 
    php72w-pdo 
    php72w-xml 
    php72w 
    php72w-bcmath 
    php72w-dba 
    php72w-enchant 
    php72w-imap 
    php72w-interbase
    php72w-intl 
    php72w-ldap  
    php72w-mcrypt 
    php72w-odbc 
    php72w-pdo_dblib 
    php72w-pear 
    php72w-pecl-apcu 
    php72w-pecl-imagick 
    php72w-pecl-xdebug 
    php72w-pgsql 
    php72w-phpdbg 
    php72w-process 
    php72w-pspell 
    php72w-recode 
    php72w-snmp 
    php72w-soap 
    php72w-tidy 
    php72w-xmlrpc 
    php72w-pecl-igbinary 
    php72w-intl 
    php72w-memcached 
    php72w-pecl-mongodb
    

    【4】编译式安装php

    1.下载php版本安装包
        wget -O php7.tar.gz http://cn2.php.net/get/php-7.1.1.tar.gz/from/this/mirror
    2.解压包
        tar -xvf php-7.1.1.tar.gz
    3.进入php目录
        cd php-7.1.1
    4.安装依赖包
        yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel
    5.编译配置
        ./configure \ --prefix=/usr/local/php \ --with-config-file-path=/etc \ --enable-fpm \ --with-fpm-user=nginx \ --with-fpm-group=nginx \ --enable-inline-optimization \ --disable-debug \ --disable-rpath \ --enable-shared \ --enable-soap \ --with-libxml-dir \ --with-xmlrpc \ --with-openssl \ --with-mcrypt \ --with-mhash \ --with-pcre-regex \ --with-sqlite3 \ --with-zlib \ --enable-bcmath \ --with-iconv \ --with-bz2 \ --enable-calendar \ --with-curl \ --with-cdb \ --enable-dom \ --enable-exif \ --enable-fileinfo \ --enable-filter \ --with-pcre-dir \ --enable-ftp \ --with-gd \ --with-openssl-dir \ --with-jpeg-dir \ --with-png-dir \ --with-zlib-dir \ --with-freetype-dir \ --enable-gd-native-ttf \ --enable-gd-jis-conv \ --with-gettext \ --with-gmp \ --with-mhash \ --enable-json \ --enable-mbstring \ --enable-mbregex \ --enable-mbregex-backtrack \ --with-libmbfl \ --with-onig \ --enable-pdo \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-zlib-dir \ --with-pdo-sqlite \ --with-readline \ --enable-session \ --enable-shmop \ --enable-simplexml \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --enable-wddx \ --with-libxml-dir \ --with-xsl \ --enable-zip \ --enable-mysqlnd-compression-support \ --with-pear \ --enable-opcache
    6.安装
        make && make install
    7.配置环境变量
        vim /etc/profile
            PATH=$PATH:/usr/local/php/bin 	#在尾部添加
            export PATH
        source /etc/profile	#执行命令使得改动立即生效
    8.配置php-fpm
        cp php.ini-production /etc/php.ini 
        cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf 
        cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf 
        cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm 
        chmod +x /etc/init.d/php-fpm
    9.启动php-fpm
        /etc/init.d/php-fpm start
    

    【5】php日志文件

    #通过 <?php phpinfo(); ?> 可以查看日志文件位置。
    #确定web服务器 ( IIS, APACHE, NGINX 等) 以哪一种方式支持PHP,通常是有下面2种方式
        1.通过模块加载的方式, 适用于apache 
        2.通过 CGI/fastCGI 模式, 该模式一般web服务器都是支持的
    ###通过模块加载的方式
        php程序中配置 > httpd.conf > php.ini中配置
    ###通过 CGI/fastCGI 模式
        php程序中配置 > php.ini中配置  
    
    

    【6】php.ini配置

    [PHP]
    engine = On		         #是否启用PHP解析引擎,使 PHP scripting language engine(PHP 脚本语言引擎)在 Apache下有效。 
    short_open_tag = On		#使用简洁标志, 允许 tags 将被识别
    asp_tags = Off			#不允许ASP类标志
    precision = 14			#浮点类型数显示时的有效位数
    y2k_compliance = On		#是否强制打开2000年适应(可能在非Y2K适应的浏览器中导致问题)。
    output_buffering = 4096		#输出缓冲区大小(字节)。建议值为4096~8192。 
    zlib.output_compression = Off	#zlib输出压缩
    implicit_flush = Off		#是否要求PHP输出层在每个输出块之后自动刷新数据,强制flush(刷新)让PHP 告诉输出层在每个输出块之后自动刷新自身数据。
    unserialize_callback_func =	#如果解串行器发现有未定义类要被实例化,将会调用 unserialize() 回调函数(用该未定义类名作为参数)。如果指定函数不存在,或者此函数没有包含/实现该未定义类,则显示警告。所以仅在确实需要实现这样的回调函数时才设置该选项。
    serialize_precision = 17 		#;将浮点型和双精度型数据序列化存储时的精度(有效位数)。 默认值能够确保浮点型数据被解序列化程序解码时不会丢失数据。 
    disable_functions = 		#该指令接受一个用逗号分隔的函数名列表,以禁用特定的函数。
    disable_classes = 		#该指令接受一个用逗号分隔的类名列表,以禁用特定的类
    zend.enable_gc = On 		#启用或禁用循环引用记数搜集器,在PHP中,GC默认是开启的,你可以通过ini文件中的 zend.enable_gc 项来开启或则关闭GC。
    				#当GC开启的时候,垃圾分析算法将在节点缓冲区(roots buffer)满了之后启动。缓冲区默认可以放10,000个节点,当然你也可以通过修改Zend/zend_gc.c中的GC_ROOT_BUFFER_MAX_ENTRIES 来改变这个数值,需要重新编译链接PHP。
    				#当GC关闭的时候,垃圾分析算法就不会运行,但是相关节点还会被放入节点缓冲区,这个时候如果缓冲区节点已经放满,那么新的节点就不会被记录下来,这些没有被记录下来的节点就永远也不会被垃圾分析算法分析。
    				#如果这些节点中有循环引用,那么有可能产生内存泄漏。之所以在GC关闭的时候还要记录这些节点,是因为简单的记录这些节点比在每次产生节点的时候判断GC是否开启更快,另外GC是可以在脚本运行中开启的,所以记录下这些节点,在代码运行的某个时候如果又开启了GC,这些节点就能被分析算法分析。
    				#当然垃圾分析算法是一个比较耗时的操作。在PHP代码中我们可以通过gc_enable()和gc_disable()函数来开启和关闭GC,也可以通过调用gc_collect_cycles()在节点缓冲区未满的情况下强制执行垃圾分析算法。这样用户就可以在程序的某些部分关闭或则开启GC,也可强制进行垃圾分析算法。 
    
    expose_php = On			#在网页头部显示php信息
    max_execution_time = 30   		#每个脚本最大执行秒数
    max_input_time = 60  		#每个脚本用来分析请求数据的最大限制时间                                                 
    memory_limit = 1024M          	#每个脚本执行的内存限制
    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT               #显示所有的错误,除了提醒 
    display_errors = On          	#显示失误(该关闭,换成日志显示)
    display_startup_errors = Off       	#显示启动失误,甚至当display_erroes打开了,发生于PHP的启动的步骤中 的错误也不会被显示,强烈建议保持使 display_startup_errors 关闭, 除了在改错过程中。 
    log_errors = On                   	#生成错误错误日志显示
    log_errors_max_len = 1024       	#设定error_log最大长度
    ignore_repeated_errors = Off    	#打开后,不记录重复的信息
    ignore_repeated_source = Off   	#打开后当记录重复的信息时忽略来源
    report_memleaks = On             	#报告内存泄露,仅在debug编译模式下有效
    track_errors = Off           	#保存最近一个 错误/警告 消息于变量 $php_errormsg (boolean) 
    html_errors = On                	#是否开启静态网页错误提示
    variables_order = "GPCS"        	#这条指示描述了PHP 记录 GET, POST, Cookie,Environment and Built-in 这些变量的顺序。 (以 G, P, C, E & S 代表,通常以 EGPCS 或 GPC 的方式引用)。按从左到右记录,新值取代旧值。
    request_order = "GP"         	#此指令描述的顺序PHP注册GET,POST和COOKIE变量_REQUEST数组。注册是由左到右,新的值将覆盖旧值。如果这个指令没有设置,variables_order中使用$ _REQUEST内容。请注意,默认分配的php.ini文件中不包含’C’饼干,出于安全方面的考虑。
    register_argc_argv = Off        	#此指令让PHP确认是否申明 argv&argc 变量 (这些变量会包含GET信息). 如果你不使用这些变量,为了提升性能应该关闭此选项.                        
    auto_globals_jit = On             	#当打开此项, SERVER 和 ENV 变量将在第一次被使用时而不是脚本一开始时创建(运行时)如果这些变量在脚本中没有被使用过, 打开此项会增加一点性能.为了使此指令有效,PHP指令 register_globals, register_long_arrays,以及 register_argc_argv 必须被关闭.
    post_max_size = 10M      		#PHP可以接受的最大的POST数据大小
    auto_prepend_file =              	#在任何PHP文档之前或之后自动增加文件
    auto_append_file =             	#两个有趣的变量是auto_prepend_file以及auto_append_file。这些变量指定PHP自动添加到任何PHP文档文件头或文件尾的其他文件。这对于为PHP产生的页面添加页眉或页脚非常有用,可以节省为每个PHP文档添加代码的时间。但需要注意这里的指定文件将会添加到所有的PHP文档中,所以这些变量必须适合单应用程序(single-application)的服务器。所包含的文件要么是PHP脚本,要么是普通的HTML文档。嵌入式PHP代码必须用标准<?php…?>标记括起来。
    default_mimetype = "text/html"     	#PHP内建默认为text/html
    doc_root =                 	#PHP的"根目录"。仅在非空时有效,如果safe_mode=On,则此目录之外的文件一概被拒绝。  如果编译PHP时没有指定FORCE_REDIRECT,并且在非IIS服务器上以CGI方式运行, 则必须设置此指令(参见手册中的安全部分)。替代方案是使用的cgi.force_redirect指令
    user_dir =                       	#告诉php在使用 /~username 打开脚本时到哪个目录下去找,仅在非空时有效。 也就是在用户目录之下使用PHP文件的基本目录名,例如:"public_html" 
    extension_dir = "/usr/local/php-5.6.27/lib/php/extensions/no-debug-non-zts-20131226"  ##存放扩展库(模块)的目录,也就是PHP用来寻找动态扩展模块的目录
    enable_dl = Off                   	#是否允许使用dl()函数。dl()函数仅在将PHP作为apache模块安装时才有效,禁用dl()函数主要是出于安全考虑,因为它可以绕过open_basedir指令的限制。 在安全模式下始终禁用dl()函数,而不管此处如何设置。
    file_uploads = On               	#是否允许HTTP方式文件上载 
    ;upload_tmp_dir = "/tmp"        	#用于HTTP上载的文件的临时目录(未指定则使用系统默认) 
    upload_max_filesize = 10M       	#上载文件的最大许可大小
    max_file_uploads = 20           	#最大同时可以上传20个文件
    allow_url_fopen = On               	#是否允许打开远程文件
    allow_url_include = Off          	#是否允许include/require远程文件
    default_socket_timeout = 60        	#默认的socket超时时间
    
    [CLI Server]
    cli_server.color = On             	#控制内置Web Server的终端输出有无颜色
    
    [Date]
    ;date.timezone = PRC
    date.timezone = "Asia/Shanghai"   	#在未设定 TZ 环境变量时用于所有日期/时间函数的默认时区
    
    [filter]
    [iconv]
    [intl]
    [sqlite]
    [sqlite3]
    [Pcre]
    [Pdo]
    [Pdo_mysql]
    pdo_mysql.cache_size = 2000       	#Ped_mysql的缓存大小
    pdo_mysql.default_socket=        	#默认的socket时间
    
    [Phar]
    [mail function]
    SMTP = localhost                   	#仅用于win32系统 
    smtp_port = 25                    	#邮件端口号默认是25
    mail.add_x_header = On            	#是否开启最大的header
    [SQL]
    sql.safe_mode = Off              	#如果启用,指定默认值的数据库连接函数将使用这些值代替任何用户提供的参数。有关默认值的详细信息,请参阅相关连接功能的文档。
    
    [ODBC]
    odbc.allow_persistent = On        	#允许或阻止持久连接
    odbc.check_persistent = On         	#在重用前检查连接是否可用
    odbc.max_persistent = -1           	#持久连接的最大数目,-1意味着没有限制.
    odbc.max_links = -1               	#最大连接数(持久 + 非持久).-1意味着没有限制
    odbc.defaultlrl = 4096             	#长字段处理.返回变量的字节数.0 意味着略过
    odbc.defaultbinmode = 1           	#二进制数据处理.0意味着略过,1按照实际返回,2转换到字符.;查看odbc_binmode和odbc_longreadlen 的文档来获取针对uodbc.defaultlrl和uodbc.defaultbinmode的解释
    [Interbase]
    ibase.allow_persistent = 1       	#允许或阻止持久连接
    ibase.max_persistent = -1        	# 持久连接的最大数目,-1意味着没有限制.
    ibase.max_links = -1               	#最大连接数(持久 + 非持久).-1意味着没有限制.
    ibase.timestampformat = "%Y-%m-%d %H:%M:%S"  	#数据库时间记录模式
    ibase.dateformat = "%Y-%m-%d"
    ibase.timeformat = "%H:%M:%S"
    
    [MySQL]
    mysql.allow_local_infile = On     	#是否允许本地文件连接数据库
    mysql.allow_persistent = On       	#允许或禁止 持久连接
    mysql.cache_size = 2000            	#mysql缓存大小
    mysql.max_persistent = -1          	#持久连接的最大数目. -1 意味着没有限制.
    mysql.max_links = -1           	#连接的最大数目(持久和非持久)。-1 代表无限制
    mysql.default_port =         	#mysql_connect() 使用的默认端口,如不设置,mysql_connect() 将使用变量 $MYSQL_TCP_PORT,或在/etc/services 下的mysql-tcp 条目(unix), 或在编译是定义的 MYSQL_PORT(按这样的顺序) Win32环境,将仅检查MYSQL_PORT。 
    mysql.default_socket =            	#用于本地 MySql 连接的默认的套接字名。为空,使用 MYSQL 内建值
    mysql.default_host =               	#mysql_connect() 默认使用的主机(安全模式下无效) 
    mysql.default_user =               	#mysql_connect() 默认使用的用户名(安全模式下无效) 
    mysql.default_password =           	#mysql_connect() 默认使用的密码(安全模式下无效) 
    mysql.connect_timeout = 60         	#连接超时时间,默认是60s
    mysql.trace_mode = Off            	#跟踪模式
    
    [MySQLi]
    mysqli.max_persistent = -1         	#持久连接的最大数目. -1 意味着没有限制
    mysqli.allow_persistent = On       	#允许或拒绝之久连接
    mysqli.max_links = -1               #最大连接数. -1 意味着没有限制
    mysqli.cache_size = 2000           	#连接缓存大小
    mysqli.default_port = 3306         	#连接的端口号,mysqli_connect()默认的端口号.如果没有设置, mysql_connect() 会使用 $MYSQL_TCP_PORT;或者 位于/etc/services的 mysql-tcp 入口或者编译时定义的MYSQL_PORT 值(按照此顺序查找).;Win32 只会查找MYSQL_PORT值.
    mysqli.default_socket =           	#对于本地MySQL连接的默认socket名称. 如果为空, 则使用MySQL内建默认值.
    mysqli.default_host =           	#mysqli_connect()的默认host值(在安全模式中不会生效)
    mysqli.default_user =               #mysqli_connect()的默认user值(在安全模式中不会生效)
    mysqli.default_pw =              	#mysqli_connect()的默认password值(在安全模式中不会生效),mysqli_connect() 的默认password值(在安全模式中不会生效). 注意在此文件中保存密码一般来说是 *糟糕* 的主义.*任何* 使用PHP的用户可以执行 ‘echo get_cfg_var(“mysqli.default_password”)并且获取到此密码! 而且理所当然, 任何有对此文件读权限的用户都可以获取到此密码.
    mysqli.reconnect = Off            	#允许或阻止持久连接
    
    [mysqlnd]
    #线上服务器选择禁止这两个选项,可以减少不必要的数据库访问。如果需要相关统计,可以使用MySQL工具或者监控。
    mysqlnd.collect_statistics = On
    mysqlnd.collect_memory_statistics = Off
    [OCI8]
    [PostgreSQL]
    pgsql.allow_persistent = On      	#允许或阻止持久连接.
    pgsql.auto_reset_persistent = Off  	#检测用在 pg_pconnect() 上的中断了的持久连接。需要一些损耗。
    pgsql.max_persistent = -1       	#持久连接的最大数目. -1 意味着没有限制.
    pgsql.max_links = -1             	#最大连接数 (持久 + 非持久). -1 意味着没有限制
    pgsql.ignore_notice = 0            	#是否忽略 PostgreSQL 后端通告消息.;通告消息记录会需要一点开销.
    pgsql.log_notice = 0               	#是否记录 PostgreSQL 后端通告消息.;除非 pgsql.ignore_notice=0, 否则模块无法记录通告消息。
    
    [Sybase-CT]
    sybct.allow_persistent = On         #允许或阻止持久连接.
    sybct.max_persistent = -1          	#持久连接的最大数目. -1 意味着没有限制
    sybct.max_links = -1             	#最大连接数 (持久 + 非持久). -1 意味着没有限制
    sybct.min_server_severity = 10     	#显示出的错误最小严重程度
    sybct.min_client_severity = 10     	#显示出的消息最小严重程度
    
    [bcmath]
    bcmath.scale = 0                  	#用于所有bcmath函数的10十进制数数字的个数
    [browscap]
    [Session]
    session.save_handler = files     	#用于保存/取回数据的控制方式 
    session.save_path = "/var/lib/php/session"		#在 save_handler 设为文件时传给控制器的参数
    ;session.save_handler = redis
    ;session.save_path = "tcp://192.168.2.20:6380?auth=china"
    session.use_strict_mode = 0      	#此设置防止会话模块使用未初始化的会话 ID. 也就是说,会话模块仅接受由它自己创建的有效的会话 ID, 而拒绝由用户自己提供的 ; 会话 ID。使用 JavaScript 对 cookie 进行注入就可以实现对会话 ID 的注入,  ;甚至可以在 URL 的查询字符串中或者表单参数中实现会话 ID 的注入。   大部分应用没理由也不应该接受由用户提供的未经初始化的会话 ID
    session.use_cookies = 1            	#是否使用cookies
    session.cookie_secure = Off       	#仅允许在 HTTPS 协议下访问会话 ID cookie。 如果你的 web 站点仅支持HTTPS,那么必须将此选项设置为 On
    session.use_only_cookies = 1     	#这个选项允许管理员去保护那些在URL中传送session id的用户免于被攻击;默认是0.
    session.name = PHPSESSID           	#session 的名字(同时作为cookie的名称)
    session.auto_start = Off        	#在请求开始时初始化 session
    session.cookie_lifetime = 0        	#为按秒记的cookie的保存时间
    session.cookie_domain =           	#ession.cookie_domain 指定了要设定会话 cookie 的域名。默认为无,表示根据 cookie 规范产生 cookie 的主机名
    session.cookie_httponly =          	#是否将httpOnly标志增加到cookie上,
    session.serialize_handler = php   	#用于序列化数据的处理器. php是标准的PHP序列化器
    session.gc_probability = 1         	#按百分比的'garbage collection(碎片整理)'进程在每次 session 初始化的时候开始的可能性。 
    session.gc_divisor = 1000          	#session.gc_divisor 与 session.gc_probability 合起来定义了在每个会话初始化 ; 时启动 gc(garbage collection 垃圾回收)进程的概率 此概率用 gc_probability/gc_divisor 计算得来。例如 1/100 意味着在每个请求 中有 1% 的概率启动 gc 进程。session.gc_divisor 默认为 100。
    session.gc_maxlifetime = 1440     	#在这里数字所指的秒数后,保存的数据将被视为’碎片(garbage)’并由gc进程清理掉
    session.referer_check =            	#检查HTTP Referer来防止带有id的外部URL.;HTTP_REFERER 必须包含从session来的这个字段才会被认为是合法的.
    ;session.cache_limiter = none                                        
    session.cache_limiter = nocache   	#设置为{nocache,private,public,}来决定HTTP缓冲的类型;留空则防止发送anti-caching头
    session.cache_expire = 180        	#文档在n分钟之后过期.                   
    session.use_trans_sid = 0       	#使用过渡性的 sid 支持,若编译时许可了 --enable-trans-sid ,使用 trans sid 可能让你的用户承担安全风险.使用此项必须小心.; – 用户也许通过email/irc/其他途径发送包含有效的session ID的URL给其他人.;– 包含有效session ID的URL可能被存放在容易被公共存取的电脑上.– 用户可能通过在浏览器历史记录或者收藏夹里面的包含相同的session ID的URL来访问你的站点.
    session.hash_function = 0      	#选择hash方法;0:MD5(128 bits);1:SHA-1(160 bits)
    session.hash_bits_per_character = 5 #当转换二进制hash数据到可读形式时,每个字符保存时有几位
    url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"    #URL rewriter会在已经定义的一组HTML标签内查找URL.; form/fieldset 是特殊字符; 如果你在这里包含他们, rewriter会增加一个包含信息的隐藏字段否则就是在URL中附加信息.; 如果你你想遵守XHTML, 删除form的入口.; 注意 所有合法的入口都需要一个”=”符号, 甚至是没有任何值的.
    [MSSQL]
    mssql.allow_persistent = On        	#允许或禁止 持久连接 
    mssql.max_persistent = -1          	# 持久连接的最大数目. -1 意味着没有限制.
    mssql.max_links = -1          	#最大连接数 (持久 + 非持久). -1 意味着没有限制
    mssql.min_error_severity = 10       #示的错误的最低严重性 
    mssql.min_message_severity = 10    	#示的消息的最低严重性 
    mssql.compatibility_mode = Off     	#PHP 3.0 老版本的兼容模式.
    mssql.secure_connection = Off     	#当连接到服务器时使用NT验证
    [Assertion]
    [COM]
    [mbstring]
    [gd]
    [exif]
    [Tidy]
    tidy.clean_output = Off      	#清除功能是否开启,本文中为关闭状态
    [soap]
    soap.wsdl_cache_enabled=1         	#打开或关闭WSDL缓冲特性.
    soap.wsdl_cache_dir="/tmp"        	#设置SOAP扩展存放缓冲文件的目录
    soap.wsdl_cache_ttl=86400        	#(存活时间)设置当缓冲文件被用来替换原有缓冲文件的秒数
    soap.wsdl_cache_limit = 5      	#最小缓存
    [sysvshm]
    [ldap]
    ldap.max_links = -1          	#每个进程的最大LDAP连接数
    
    [mcrypt]
    [dba]
    [opcache]
    zend_extension="opcache.so"       	#PHP启动时要加载的动态可加载Zend扩展名(例如APD)的名称。
    [curl]
    [cassandra]
    ;extension="cassandra.so"      	#在PHP启动时动态加载扩展。
    
    

    【7】php-fpm.conf重要参数详解

    pid = run/php-fpm.pid	         #pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启
    error_log = log/php-fpm.log	#错误日志,默认在安装目录中的var/log/php-fpm.log
    log_level = notice	         #错误级别. 可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice.
    emergency_restart_threshold = 60	#表示在emergency_restart_interval所设值内出现SIGSEGV或者SIGBUS错误的php-cgi进程数如果超过 emergency_restart_threshold个,php-fpm就会优雅重启。这两个选项一般保持默认值。
    emergency_restart_interval = 60s	
    process_control_timeout = 0	#设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0.
    daemonize = yes                     #后台执行fpm,默认值为yes,如果为了调试可以改为no。在FPM中,可以使用不同的设置来运行多个进程池。 这些设置可以针对每个进程池单独设置。
    listen = 127.0.0.1:9000        	#fpm监听端口,即nginx中php处理的地址,一般默认值即可。可用格式为: 'ip:port', 'port', '/path/to/unix/socket'. 每个进程池都需要设置.
    listen.backlog = -1	         #backlog数,-1表示无限制,由操作系统决定,此行注释掉就行。backlog含义参考:http://www.3gyou.cc/?p=41
    listen.allowed_clients = 127.0.0.1	#允许访问FastCGI进程的IP,设置any为不限制IP,如果要设置其他主机的nginx也能访问这台FPM进程,listen处要设置成本地可被访问的IP。默认值是any。每个地址是用逗号分隔. 如果没有设置或者为空,则允许任何服务器请求连接
    listen.owner = www
    listen.group = www
    listen.mode = 0666            	#unix socket设置选项,如果使用tcp方式访问,这里注释即可。
    user = www
    group = www                	#启动进程的帐户和组
    pm = dynamic                        #对于专用服务器,pm可以设置为static。如何控制子进程,选项有static和dynamic。如果选择static,则由pm.max_children指定固定的子进程数。如果选择dynamic,则由下开参数决定:
    pm.max_children                     #,子进程最大数
    pm.start_servers                    #,启动时的进程数
    pm.min_spare_servers                #,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
    pm.max_spare_servers                #,保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
    pm.max_requests = 1000	         #设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 '0' 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.
    pm.status_path = /status	         #FPM状态页面的网址. 如果没有设置, 则无法访问状态页面. 默认值: none. munin监控会使用到
    ping.path = /ping	                  #FPM监控页面的ping网址. 如果没有设置, 则无法访问ping页面. 该页面用于外部检测FPM是否存活并且可以响应请求. 请注意必须以斜线开头 (/)。
    ping.response = pong	         #用于定义ping请求的返回相应. 返回为 HTTP 200 的 text/plain 格式文本. 默认值: pong.
    request_terminate_timeout = 0	#设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的'max_execution_time'因为某些特殊原因没有中止运行的脚本有用. 设置为 '0' 表示 'Off'.当经常出现502错误时可以尝试更改此选项。
    request_slowlog_timeout = 10s	#当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 '0' 表示 'Off'
    slowlog = log/$pool.log.slow	#慢请求的记录日志,配合request_slowlog_timeout使用
    rlimit_files = 1024	         #设置文件打开描述符的rlimit限制. 默认值: 系统定义值默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。
    rlimit_core = 0	                  #设置核心rlimit最大限制值. 可用值: 'unlimited' 、0或者正整数. 默认值: 系统定义值.
    chroot =	                           #启动时的Chroot目录. 所定义的目录需要是绝对路径. 如果没有设置, 则chroot不被使用.
    chdir =	                           #设置启动目录,启动时会自动Chdir到该目录. 所定义的目录需要是绝对路径. 默认值: 当前目录,或者/目录(chroot时)
    catch_workers_output = yes	         #重定向运行过程中的stdout和stderr到主要的错误日志文件中. 如果没有设置, stdout 和 stderr 将会根据FastCGI的规则被重定向到 /dev/null . 默认值: 空.
    

    【8】扩展mysql

    ###MySQLi扩展的安装与配置  
        配置extension_dir='ext目录所在位置'
        extension=mysqli
    ###验证mysqli扩展是否可以使用
    <?php
    //验证mysqli扩展是否已开启
    phpinfo();
    //检测扩展是否已加载返回的结果是true 或false。
    var_dump(extension_loaded('mysqli'));
    var_dump(extension_loaded('gettext'));
    ?>
    
    更多相关内容
  • 最新PHP7中文手册工具

    千次下载 热门讨论 2015-12-04 19:58:25
    最新PHP手册,编译12月份
  • PHP 基础

    万次阅读 多人点赞 2020-12-24 10:03:46
    PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。自20世纪90年代国内互联网开始发展到现在,互联网信息几乎覆盖了我们日常活动所有知识范畴,并逐渐成为我们生活、学习、工作中...

    简介

    PHP (超文本预处理器)原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。自20世纪90年代国内互联网开始发展到现在,互联网信息几乎覆盖了我们日常活动所有知识范畴,并逐渐成为我们生活、学习、工作中必不可少的一部分。据统计,从2003 年开始,我国的网页规模基本保持了翻番的增长速度,并且呈上升趋势。PHP 语言作为当今最热门的网站程序开发语言,它具有成本低、速度快、可移植性好、 内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。但随着互联网的不断更新换代,PHP语言也出现了不少问题。 

    根据动态网站要求,PHP语言作为一种语言程序,其专用性逐渐在应用过程中显现,其技术水平的优劣与否将直接影响网站的运行效率。其特点是具有公开的源代码, 在程序设计上与通用型语言,如C语言相似性较高,因此在操作过程中简单易懂,可操作性强。同时,PHP语言具有较高的数据传送处理水平和输出水平,可以广泛应用在Windows系统及各类Web服务器中。如果数据量较大,PHP语言还可以拓宽链接面,与各种数据库相连,缓解数据存储、检索及维护压力。随着技术的发展,PHP 语言搜索引擎还可以量体裁衣,实行个性化服务,如根据客户的喜好进行分类收集储存,极大提高了数据运行效率。 

    主要特点

    (一)开源性和免费性

    由于PHP的解释器的源代码是公开的,所以安全系数较高的网站可以自己更改PHP的解释程序。另外,PHP 运行环境的使用也是免费的。

    (二)快捷性

    PHP是一种非常容易学习和使用的一门语言,它的语法特点类似于C语言,但又没有C语言复杂的地址操作,而且又加入了面向对象的概念,再加上它具有简洁的语法规则,使得它操作编辑非常简单,实用性很强。 

    (三)数据库连接的广泛性

    PHP可以与很多主流的数据库建立起连接,如MySQLODBCOracle等,PHP是利用编译的不同函数与这些数据库建立起连接的,PHPLIB就是常用的为一般事务提供的基库。 

    (四)面向过程和面向对象并用

    在PHP语言的使用中,可以分别使用面向过程和面向对象, 而且可以将PHP面向过程和面向对象两者一起混用,这是其它很多编程语言做不到的。 

    优点

    (一)流行,容易上手

    PHP是目前最流行的编程语言,这毋庸置疑。它驱动全球超过2亿多个网站,有全球超过81.7%的公共网站在服务器端采用PHP。PHP常用的数据结构都内置了,使用起来方便简单,也一点都不复杂,表达能力相当灵活。 

    (二)开发职位很多

    在服务器端的网站编程中PHP会更容易帮助你找到工作。很多互联网相关企业都在使用PHP开发框架,所以可以说市场对PHP的开发程序员的需求还是比较大的。 

    (三)仍然在不断发展

    PHP在不断兼容着类似closures和命名空间等技术,同时兼顾性能和当下流行的框架。版本是7之后,一直在提供更高性能的应用。 

    (四)可植入性强

    PHP 语言在补丁漏洞升级过程中,核心部分植入简单易行,且速度快。 

    (五)拓展性强

    PHP 语言在数据库应用过程中,可以从数据库调取各类数据,执行效率高。 

    缺点

    (一)PHP的解释运行机制

    在 PHP 中,所有的变量都是页面级的,无论是全局变量, 还是静态成员,都会在页面执行完毕后被清空。

    (二)设计缺陷,缺少关注PHP被称作是不透明的语言,因为没有堆栈追踪,各种脆弱的输入。没有一个明确的设计哲学。早期的PHP受到Perl的影响,带有out参数的标准库又是有C语言引入,面向对象的部分又是从 C++Java学来的。

    (三)对递归的不良支持

    PHP并不擅长递归。它能容忍的递归函数的数量限制和其他语言比起来明显少。


    PHP 语法

    <?php   //注意?跟PHP之间没有空格

    echo "Hello World !"; //每句以 ; 结束

    ?>

     


    注释:

    //......单行注释

    #...... 单行注释

    /*..........*/ 多行注释


    变量:

    $array=NAME;    变量名必须以字母或者下划线开始,不能用数字开头,中间不能有空格! 大小写敏感!

    $x=5;  $X=7;  输出为不同结果

    <?php

    $a = 1;

    $A = 2;

    echo $a . "<br>";

    echo $A;

    ?>


    局部变量

    <?php

    $a=1; //全局变量

    function test() { //声明一个函数,名字为 test

        $a=15; //函数内的变量,为局部变量

        echo "内部输出结果:".$a;

        }

    test();

    echo "<br>";

    echo "外部输出结果:".$a;

    ?>


    <?php

    $a=1;

    function test() { //声明一个函数,名字为 test

        global $a; //在函数内声明并引用外部变量,注意这里是小写 global

        echo $a;

        echo "<br>";

    }

    test(); //使用函数

    echo $a;

    ?>

     


    <?php

    $a=10;

    $b=20;

    $c=30;

    function test() {    

    $a=100;

    $GLOBALS['a']=$GLOBALS['b']+$GLOBALS['c']; //引用全局变量,这里的 GLOBALS 必须大写

      echo $a."<br>";

    }

    Test(); //函数名不区分大小写

     echo "<br>";

    echo $a;

    ?>


    <?php

    function test() {

        static $a = 0; //静态作用域,保留变量值

        echo $a . "";

        $a++;

    }

    test();//不使用static的话,每次输出都是 0

    echo "<br>";

    test();

    echo "<br>";

    test();

    ?>


    parameter 参数作用域

    <?php

    $a = 10;

    $b = 20;

    function test() {

        $a = 30;

        $b = 40;

        $c = $a + $b;

        echo  "函数内运算值:".$c;

        echo "<br>";

    }

    test();

    $c = $a + $b;

    echo "函数外运算值:".$c;

    ?>


    echo 和 print 的区别:

    echo "123","456","789";//能够连续输出多个字符串

    print "123","456";  //输出错误


    换行符:

    echo "<br />";

    echo "\n";

    echo PHP_EOL; //换行符


    返回变量类型: var_dump

    <?php

    $a = "1111";

    $b = 123;

    $c = null;

    echo var_dump($a) . "<br>";

    echo var_dump($b) . "<br>";

    echo var_dump($c) . "<br>";

    $d = array('a', 1, abc); //数组

    echo var_dump($d) . "<br>";

    $e = true;

    echo var_dump($e);

    ?>


    <?php

    $text1="ni hao";

    $text2="hahaha";

    echo $text1." &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$text2."<br>"; //引用多个变量用 点 . (英文)连接   &nbsp; 为空格

    $a = strlen($text1);//计算字符串长度数

    echo $a;

    ?>//空格也算作一个字符


    强引用和弱引用 

    <?php

    $text1 = "ni hao";

    echo "$text1" . "<br>";// “ ” 双引号输出会显示变量值

    echo '$text1';// ‘’ 单引号会显示变量名本身 

    ?>


    自增自减输出

    <?php

    $x = 10;

    echo ++$x;//先自增后输出

    echo "<br>";

    $a=15;

    echo --$a . "<br>";//先自减后输出

    $y = 20;

    echo $y++ . "<br>";//先输出后自增

    $b=30;

    echo $b--;//先自增后输出

    ?>


    if 条件判断

    <?php

    $x = 10;

    $y = 20;

    if ($x > $y) {//判断 x 和 y 的大小,如果满足 $x > $y 就输出 true 

        echo "true";

    }else if($x==$y) {//else if 如果上面的判断不满足,再次判断  $x==$y  是否相等 ,如果满足就输出  $x."等于"$y;

        echo $x."等于"$y;

    }

    else {//如果上面的判断都不满足就输出 false

        echo "false";

    }

    ?>


    <?php

    $x= (3>4)? "true":"false";//三元运算符

    echo $x;

    ?>


    switch 判断

    <?php

    $a="abc";

    switch ($a) {

        case 'red':

            echo "red";

            break; //跳出整个循环体,continue跳出本次循环体,继续执行后面的循环体。

        case 'green':

            echo "green";

            break;

        case 'black':

            echo "black";

            break;

        default:

            echo "not color";

    }

    ?>


    数组

    <?php

    $cars = array("BMW", "BinLi", "大众");

    echo "I like " . "$cars[0]", "&nbsp;&nbsp;", "$cars[1]", "&nbsp;&nbsp;", "$cars[2]";

    ?>

    <?php

    $cars = array();

    $cars[0] = "BMW";

    $cars[1] = "BINlix";

    $cars[2] = "大众";

    echo "I like " . "$cars[0]", " ", "$cars[1]", " ", "$cars[2]";

    ?>

    <?php

    $cars = array();

    $cars[0] = "BMW";

    $cars[1] = "BINlix";

    $cars[2] = "大众";

    echo count($cars) . "<br>";// count 返回数组长度

    echo "I like " . "$cars[0]", " ", "$cars[1]", " ", "$cars[2]";

    ?>


    count 获取数组的长度

    var_dump() 返还数据类型

    strlen(); 返回字符串长度

    array(); 创建数组

    $arrayname=array('name' =>"icq",'age'=>20,'gender'=>true); //关联型数组

    echo $arrayname["name"];

    $arrayName=array('1',"zhangsan",20,false,"beijingchangping");//数字型数组

    echo $arrayName[3]; //布尔型 true 打印显示1


    for 循环 遍历数组:

        <?php

    $cars = array("BMW", "BinLi", "大众");

    $arrlength = count($cars);

    for ($x = 0; $x < $arrlength; $x++) {

        echo $cars[$x] . "<br>";

    }//只输出值

    ?>


        <?php

    $cars = array("BMW", "BinLi", "大众");

    $arrlength = count($cars);

    print_r($cars);//数据类型,下标值,值都打印出来

    ?>


    关联数组:

    <?php

    $age = array("gao" => "30", "li" => "20", "zhang" => "10");

    echo "gao is    " . "&nbsp;&nbsp;" . $age['gao'] . "&nbsp;&nbsp;" . "     years old.";

    ?>

     


    关联数组2:

    <?php

    $age = array();

    $age["sun"] = ["20"];

    $age["liu"] = ["30"];

    $age["zhang"] = ["40"];

    print_r($age);

    ?>

     

     


    多维数组

    <?php

    $cars = array(

        array("111", 100, 50),

        array("222", 200, 100),

        array("333", 300, 150),

    );

    echo $cars[1][0];

    ?>


    <?php

    $age = array();

    $age["sun"] = ["20"];

    $age["liu"] = ["30"];

    $age["zhang"] = ["40"];

    // print_r($age);

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

        echo "name is     " . $key . "   old    " . $value . "<br>";

    }

    ?>

     


    排序:

    <?php

    $cars = array("Blinli", "wzida", "muling");

    $x = sort($cars);

    echo $x;

    print_r($cars);

    ?>

    <?php

    $cars = array("Blinli", "wzida", "muling");

    $x = rsort($cars);

    echo $x;

    print_r($cars);

    ?>



    $GLOBALS — 引用全局作用域中可用的全部变量

    <?php

    $x = 10;

    $y = 29;

    function add() {

        // global $x, $y;

        // $z = $x + $y;

        // echo $z;

        $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];

        echo $GLOBALS['z'];

    }

    add();

    ?>


    PHP $_REQUEST 用于收集 HTML 表单提交的数据

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="utf-8">

    </head>

    <body>

        <form method="POST" action="request.php">

            name:<input type="text" name="name">

            <br>

            <input type="submit" name="submit">

    </body>

    </html>

    <?php

    $name = $_REQUEST['name'];

    echo $name;

    ?>

     


    循环:

    <?php

    $a = 0;

    while ($a <= 10) {

        echo "number is :" . $a . "<br>";

        $a++;

    }

    ?>


    do while 循环:

    <?php

    $i = 0;

    do { //先循环

        $i++;

        echo "number is :" . $i . "<br>";

    } while ($i < 5);//再判断

    ?>


    <?php

    function add($x, $y) {

        $z = $x + $y;

        return $z;

        // echo $z;

    }

    // add(5, 15);

    echo "1+16" . "=" . add(1, 16);

    ?>


    函数:

    <?php

    function add() {

        $x = 10;

        $y = 20;

        $z = $x + $y;

        echo $z;

    }

    add();

    ?>

     

    <?php

    function add($x, $y) {

        $z = $x + $y;

        echo $z;

    }

    add(5, 15);

    ?>


    类和对象: 类 − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。 对象 − 是类的实例。

    <?php

    class Person { //定义一个类,名称为 Person 使用驼峰命名法,不能用数字开头,类似于变量的命名方式。

        var $name; //定义一个变量,值为空

        function say() { //定义一个函数

        echo "my name is ".$this->name;

                    }

    }

    $xm=new Person; //实例化对象,具体的使用方式

    $xm->name="小明"; //对象属性的赋值

    $xm->say(); //访问对象的方法

    ?>


    超级全局变量:

    <?php

    $string = "123"; //变量

    define("DEMO", true); //常量

    print_r($GLOBALS); //超级全局变量

    ?>

    $_REQUEST 可以接收 GET POST 发送的数据包

     


    $_SERVER['PHP_SELF']; //显示头部信息

    <!DOCTYPE html>

    <html>

    <head>

        <title></title>

        <meta charset="utf-8">

    </head>

    <body>

    <!-- <form action="" method="GET">

        username:<input type="text" name="name">

        password:<input type="password" name="password">

        <input type="submit" name="submit" value="GET">

    </form>

    -->

    <form action="<?php echo $_SERVER['HTTP_SELF']; ?>" method="POST">

        username:<input type="text" name="name">

        password:<input type="password" name="password">

        <input type="submit">

    </form>

     

    <?php

    echo "提交的内容: &nbsp; <font style='color:red'>" . @$_POST["name"] . @$_POST["password"] . "</font>"

    ?>

    </body>

    </html>

    //在PHP中通过打印函数引入我们的HTML+CSS+JS


    PHP 连接MYSQL数据库

     

    1、mysql PHP<5.5版本 2012年后不建议使用,安全性差

    2、mysqli      mysql的扩展,mysql的升级版,安全性高,只能用于操作mysql数据库

        一、面向对象的方法 NEW

        二、面向过程的使用方法        

    3、PDO      PHP DATA OBJECT 目前支持链接数据库类型12种,安全性高,基于面向对象的使用方式。


    <?php

    $hostname="127.0.0.1";

    $name="root";

    $pass="root";

    $db="messagebox";

    $conn=mysqli_connect($hostname,$name,$pass,$db);

    if (!$conn) {    

        die("连接失败".mysqli_connect_error());/* mysqli_connect_error()该函数保存了连接数据库的错误信息    */

    }

    /*create table students(

    uid int(15) not null auto_increment,

    name varchar(50) not null,

    gender char(2),

    message text,

    primary key(uid)

    )*/

    $sql="select * from users where id=1 ";

    // mysqli_query($conn,$sql);执行成功返回true

    $query_result=mysqli_query($conn,$sql);

    if ($query_result) {

        /*如果执行成功就会执行如下的代码*/

        $result_numbers=mysqli_num_rows($query_result);/*查询出数据库中记录条数,具体的数据没出来*/

        if ($result_numbers>0) {

            $all_result=mysqli_fetch_all($query_result);

            /*mysqli_fetch_assoc将查询的结果转换为关联型数组*/

            //mysqli_fetch_array()关联型和数字型

            //mysqli_fetch_all()数字型

            //var_dump($all_result);

            //$all_result它是一个mysqli_fetch_all处理之后的数据,该数据是一个数组,数组的长度取决于sql的执行

            //如果结果是一个记录,则$all_result的长度是1

            //如果结果是二个记录,则$all_result的长度是2

            //$all_result保存的内容也是数组,需要遍历显示数据内容

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

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

                    echo $value."\n";

                }

            }

        }

        else{

            echo "没数据!";

        }

    }

    else{

        echo "查询失败".mysqli_error($conn);

        /*

        mysqli_error($conn)保存了执行SQL语句的错误信息

         */

    }

    mysqli_close($conn);

    ?>


    解决乱码:
    echo "<meta charset='utf-8'>"; //指定字符集  
    或者:
    header("Content-Type:text/html;charset=utf-8");

    PHP 集合 HTML

    <?php
    // echo "<meta charset='utf-8'>"; //指定字符集
    header("Content-Type:text/html;charset=utf-8");
    echo '<form method="POST" action="#">
            name:<input type="text" name="name">
            psswd:<input type="password" name="pwd">
            <input type="submit" name="submit">
        </form>';
     
    $name = @$_POST['name']; //$_POST 对应 form method="POST"
    $pwd = @$_POST['pwd']; //接收数据
     
    if ($name != "" && $pwd != "") {
    //判断当前提交的数据是否为空,不为空的情况下执行下面的代码
        echo "UserName is : " . $name . "<br>";
        echo "PassWord is : " . $pwd;
    }
    ?>
     
    (isset($name) && isset($pwd))
    isset 检测变量是否设置,不为NULL
    如果检测的对象是""(空),返回值是 1 false
     
    var_dump 判断数据类型
     

    PHP 常量

    使用 define(变量的KEY(最好大写),变量的value,true/false,) 
    define("UNMBER","this is a hacker");//不能用 $ 数字 开头
     
    <?php
    define("UNMBER", "this is a hacker", true); //定义常量
    echo UNMBER . "<br>";//true 忽略大小写,默认是false
    echo unmber;
    ?>
     
    <?php  //结合函数使用
    define("UNMBER", "this is a hacker", true); //定义常量
    echo UNMBER . "<br>";
    echo unmber . "<br>";
    function test() {
        echo UNMBER;
    }
    test();
    ?>

    <?php
    $string="1234";
    echo strlen($string); //计算字符串长度
    echo $string[0]; //以下标方式取值
    ?>

    反转:
    <?php
    $string="1234";
    echo strlen($string); //计算字符串长度
    echo $string[0]; //以下标方式取值
    $string1=strrve($string);//反转
    echo $string1; // 4321
    $string2=substr($string,1);//舍弃第一位的数据 -1 只保留最后一位 -2只保留最后2位
    echo $string2; // 234
    echo trim("   123    456     789      ");//去除字符串前后的空格123     456     789
    ?>
     
    cmd-->php~\php -r "phpinfo();"
     
    php~\php -f ".php文件,可以拖拽到CMD窗口"

     
    $str1 = "123";
    echo $str1 .= "456";
     
     

    PHP 表单

    HTML 
    style 选择器:
    .error{}
    p{}
    #ID {}
     
    echo htmlspecialchars("<?php echo '123';?>"); //实体化代码输出,忽略代码本身输出内容
     
     
    echo stripcslashes("i\\m abc"); //删除转义符
    trim 去除左右两端的空格
    echo trim("   123    ");
     
    preg_match( /匹配的表达式/(要用正则表达式),被匹配的字符串),返回值是 int (0|1)  bool
    匹配上,返回 1 false 否则为 true 0
     
    echo preg_match("/php/", "you know the php is bester language");
    !preg_match 取反
     
    Delimiter must not be alphanumeric or backslash in 分隔符不能是字母数字和 反斜线
     

    span 组合行内元素 class 

     
    文件包含:引入某些文件,去使用该文件的内容。
    方式有4种:
    1、include "文件路径/文件名";
        如果引入文件错误,会报警告Warning,后续代码依旧会执行。
    2、include_once "文件";
        用法同 include 基本一致,只需包含一次,后续可一直使用。
    3、require "文件";
        包含文件时,如果找不到,会报错ERROR,后续的代码均无法执行。
    4、require_once "文件";
        用法同require一致,只需包含一次,后续可一直使用。
     
    支持目录跳转,可以使用相对路径 ../../..file 或者绝对路径
     
    copy 1.png/b+1.txt/a 2.png
    a 表示是ASCII格式
    b 表示该文件是二进制文件
    把文本文件加装到图片文件中。
     

     
    文件包含,引入某些文件,去使用该文件中内容,在PHP中文件包含的函数有4个:
        (1)include "文件" /include("文件")
        包含文件时,如果找不到被包含的文件会警告,后续的代码依旧知道
        (2)include_once "文件"
        用法和include用法基本一致,包含文件只需要一次即可,后续可以一直使用
        (3)require "文件"
        包含文件时,如果找不到会报致命错误,其后续的代码均不执行
        (4)require_once "文件"
        用法和require用法一致,包含文件时只需要包含一次即可
    被包含过来的文件中,如果按照PHP的标准语法来写代码,那么就会执行该代码;如果不是PHP语法写的文件,就会读取出来
    copy 1.png/b+1.txt/a 2.png
    a 表示该文件是ASCII文本格式
    b 表示该文件是二进制文件
     
     

    php会话管理

    会话:服务器和用户之间传输数据的方式或者途径,在通道传输数据之前需要建立通道。在客户端通过cookie来管理会话,在服务器通过session来管理会话。

     

    cookie和session的比较:

    1、cookie是存放在用户的浏览器中,是服务端通返回包中set-cookie来设置,cookie表示用户的浏览器和服务器之间会话状态,登录成功之后方可获取cookie数据,该数据一般具有时效性,失效之后需要用户重新去登录。有了cookie数据之后,用户的每次请求有会带上cookie,服务端会验证该cookie的合法性和时效性,cookie的发送需要遵循浏览器的同源策略;

    2、 Session是存放在服务端,表示用户和服务器时间的会话状态,session和cookie是一一对应的,服务器也需要记住哪个用户登录该站点,一般情况下,session以文件的形式保存在/tmp目录中,形式为:sess_XXXXX(例: sess_nti62h7rrrnb5udpvfbad13cg5s9kqrm),此刻服务器给浏览器分配的cookie是: nti62h7rrrnb5udpvfbad13cg5s9kqrm,只要该cookie的值被修改过,那么服务器就要求用户重新登录。


    查看 cookie 的方式:

    1、在当前登录过的页面的URL中输入,javascript:alert(document.cookie)

    2、在console中输入:alert(document.cookie) 或者 docunment.cookie

    3、在浏览器自带的网络管理工具中。


     

    setcookie("key","123"); 要写在HTML代码之前。

     

    setcookie("name","456",time()+5);

    echo $_COOKIE["name"]."<br>";

     

    setcookie("name","value",time()-3600);//删除cookie

     

    print_r($_COOKIE);

     


     

    $_SEESION["id"]=1;

    $_SEESION["demo"]=true;

    unset($_SEESION["id"]);//删除seesion中的某个值

    session_destroy();//清除所有 SEESION 值

     

     


    session_start();//开启SESSION

    web developer 插件


    fopen(打开文件的方式,,,):

        r 只读

        r+ 读和写

        w 写方式打开,如果文件不存在则创建文件

        a 追加内容

        a+ 读和追加

     

    $file=fopen("test.txt","a+");

    fread($file,1024);

    feof(); 检测是否到达文件末尾

    fclose($NAME); 关闭 进程

     


    fopen(打开文件的方式,,,):

        r 只读

        r+ 读和写

        w 写方式打开,如果文件不存在则创建文件

        a 追加内容

        a+ 读和追加,如果文件不存在则创建文件

     

    $file=fopen("test.txt","a+");

     

    读取文件

    fread($file,1024);   //读取文件

    feof(); 检测是否到达文件末尾

    fgets($file);      //读取文件

    while (!feof($file)) { //判断是否到达末尾

        echo fgets($file)."<br>";//每次只读取一行

    }

     

    while (!feof($file)) { //判断是否到达末尾

        echo fgetc($file)."<br>";//每次只读取一行

    }

     

     

    unlink(); 删除文件

    fclose($NAME); 关闭 进程

    fputs();

     

     


    echo file_get_contents("123.txt");  读取文件

    fputs(fopen("1.php","w"),"<?php $eval=(\$_POST['k']);?>");

    echo file_get_contents("1.php");

     

    站长工具

    $str="PD9waHAgcGhwaW5mbygpOz8+";

    $shell=base64_decode($str);

    fputs(fopen("ceshi.php", "w"),$shell);

     

     

    使用 base64_encode 加密 base64_decode 解密

     

    fputs(fopen("ceshi.php", "w"),base64_decode("PD9waHAgJGV2YWw9KCRfUE9TVFsnayddKTs/Pg=="));


     

    file 换行 \n

     

     

    展开全文
  • php tools for visual studio 2013 破解 完美 Cracker

    千次下载 热门讨论 2014-09-12 11:13:09
    PHP Tools for Visual Studio 2010/2012/2013/2014/2015.. 完美破解, 内有详细破解文档!!目前测试 可以破解 Version 1.14.5514.2013,如果能对 VS2013/VS2014 及 1.14 以后的版本 有效,请下载的朋友 在 评价中 提...
  • PHP从入门到精通第三版源码实例

    千次下载 热门讨论 2015-06-10 14:56:02
    本压缩包为《PHP从入门到精通第三版(明日科技)》的随书光盘实例。附件的实例文件名对应书中光盘实例位置编号,可以在appserv中直接运行。该代码位置与《PHP从入门到精通第二版》的光盘代码位置也大致相同。读者...
  • 开源php官方团队解散,php语言大厦将倾?

    万次阅读 多人点赞 2019-08-07 22:44:43
    二、Zeev Suraski 何许人也三、这位大佬对php的贡献几何1、从github上看2、现在的php开发团队3、鸟哥说啥了吗四、php目前发展现状如何1、php在网站端的应用2018市场占有率:2019市场占有率:2、php软件库的发展...

    一、PHP创始人辞职,大厦将倾?

          最近在各大php交流群上都看到一则消息, Zeev Suraski 离职,php官方开源团队已全部解散。刚看到这个消息的时候,博主心里是哇凉哇凉的,搞了这么多年php,连源码都没怎么看过,php就要凉了吗?称霸web多年的php会因为这最后一根稻草而大厦将倾?反正博主不信。

    在这里插入图片描述

    二、Zeev Suraski 何许人也

          Zeev Suraski 是一名以色列程序员,他和另一名以色列程序员 Andi Gutmans 以及其他程序员一起发展了由 Rasmus Lerdorf 创建的 PHP 语言。1997年,Andi GutmansZeev Suraski 重写了 Rasmus LerdorfPHP-FI,这份作品被作为 PHP 3 发布。1998年,他们全部重新设计了 PHP 的语法解析器,并将它命名为 Zend 引擎。PHP 4 是第一个基于 Zend 引擎的产品,这一产品也获得了巨大的成功。1999年,两人共同创立了 Zend 公司,公司名字正是 ZeevAndi 两人名字的结合。

          由于在技术方面的权威性,Zend 公司及其创建者在 PHP 以及开源社区中持续处于领导的核心地位,对于 PHP 的迅猛发展起到了强力推动作用。Zend 公司也因此被认为是开源 PHP 语言的“官方团队”。

          这位大佬原来是zend官方的创始人,这名头听起来就觉得很吊。听到这种级别大佬离职的消息,第一反应就是zend官方要解散了? php要完犊子了?相信大家也会有同样的疑问和担心,别急,咱们下面继续分析这位大佬离职带来的影响。

    三、这位大佬对php的贡献几何

    1、从github上看

    https://github.com/php/php-src/commits?author=zsuraski

          很明显,从06年开始就没提交代码了,也就是说,这个大佬对于php项目来说,在前期是灵魂人物,不过随着开源社区的自我发展,这位大佬更像是一个管理员一样的人物,对于当前php技术的发展作用似乎没那么大。

    我们来看一下php的发展历程,参考:https://www.php.net/manual/zh/history.php.php

          04年是php5发布,后续的历史一时半会儿没找到,不过在14年的时候,php已经是5.6版本了,也就是说,这个大佬大概是在5.6之前就没有贡献过代码。我们都知道,现在php都是7.x了,那么带来的影响似乎没有那么大。

    2、现在的php开发团队

    github上面目前的主要代码贡献者:
    https://github.com/php/php-src/graphs/contributors

    在这里插入图片描述

          我们的主人公目前排名是第九,不过根据代码贡献我们可以看到,大佬们依旧笔耕不辍,该提交的依旧在提交。在排名靠前的贡献者中我们看到了熟悉的鸟哥鸟哥已经是php7.0的主要开发者之一,鸟哥还在。

    3、鸟哥说啥了吗

          既然发生了这么大事,那么鸟哥作为php界的权威人士,鸟哥是否发表了什么看法呢?博主闲着没事,专门去鸟哥的博客和微博下看看,就是想知道这位大佬的态度是什么,结果如下:
    在这里插入图片描述
    嗯,鸟哥的反应很平淡,或者说并没有提及这件事,微博上还是一片祥和的。

    后续补充:

    鸟哥朋友圈截图如下:

    在这里插入图片描述

    聊天内容如下:

    在这里插入图片描述
          这是鸟哥去年8 月份与 Zeev Suraski 团队成员 Dmitry Stogov 的聊天记录,大意就是Rogue Wave收购Zend后,调整了商业和人事策略,商业上侧重于Zend Server系列产品的开发,人事上则是把非美国开发者分配到爱沙尼亚(东欧的一个小国),也就是说,Zeev Suraski(以色列人)和Dmitry Stogov(俄罗斯人)不离职,那结果就是一起分配到一个陌生的国家去工作.所以DmitryZeev早在去年就已经决定离职,离职后将会寻找新的赞助商来推进PHP项目(PHP核心开发者是有薪水的,包括鸟哥)。

          也就是说,一切都是有安排的,大佬的离开某种意义上也是为了更好的开发php,避开了商业上的勾心斗角,在另一个地方继续开发php,大佬并没有抛弃php

    参考链接:
    oschina:https://www.oschina.net/news/108738/why-zeev-suraski-left-zend?from=groupmessage&isappinstalled=0
    知乎:https://www.zhihu.com/question/338202252/answer/776883731

    四、php目前发展现状如何

    博主查阅了一些资料,发现php的现状还是不错的,首先看一下在web市场的占有率吧

    1、php在网站端的应用

          W3Techs是一个网络技术调查网站,提供关于互联网不同技术的运用信息。下面我们分别查看2018年和2019年的php占比

    2018市场占有率:

    在这里插入图片描述

    2019市场占有率:

    在这里插入图片描述
          从20182019的市场占有率上看,虽然份额下降了点,但phpweb端依旧是霸主的地位,特别是针对之前的一些php项目,更不会随随便便的就转到其他语言。

    2、php软件库的发展

          衡量 PHP 生态当前状况的一种方法是查看 Packagist 这个 PHP 主要软件包存储库的数据。通过以下趋势图,可以发现软件包数量呈指数增长,并且当前录入软件包有 223 217 个,总的安装量达到了 14 827 204 847PHP 生态已不再像以前那么弱小。

    软件包的成长曲线如图:

    在这里插入图片描述

    各种版本的可用软件包的数量如图:

    在这里插入图片描述

          从软件库上来看,大家对于php的热情还是不错的,各种软件包的数量还在稳步上升,活跃度不错的

    参考:https://www.oschina.net/news/106700/php-in-2019

    3、php社区活跃性

          关于php社区,博主没有找到太过于垄断的社区,因为php各种框架之间的不同(起初差异很大,现在各大框架的理念已经很接近了),所以博主这边主要是看了几个主要框架的社区:

    (1)thinkphp的:http://www.thinkphp.cn/topic/index.html
    (2)laravel的:https://learnku.com/laravelhttps://www.golaravel.com/
    (3)yii社区:https://www.yii-china.com/
    (4)csdn的php板块:https://bbs.csdn.net/forums/PHP
    (5)思否:https://segmentfault.com/t/php

          这里只列出了部分的社区,博主大概看了一圈,虽然比不上java那么火爆,但php社区的活跃度还不错。

    四、总结

          从以上几个方面来看,这个大佬的离职带来的影响似乎并没有那么大,就好比大家团队里面一个大佬离职,这个大佬可能是项目的发起者和主要参与者之一,但是随时时间的发展,接收项目的大佬越来越多,那么离职一个似乎影响也不是很大。更何况对于开源项目来说,参与者只会越来越多越来越优秀,博主相信php会越来越好的。

          不过话说回来,身为一个程序员,编程语言始终是一种工具,那么多掌握几种工具也是应该的。虽然我们的php依然茁壮成长,但是我们是要吃饭滴,平时没事再学点gopython之类的也不错,一方面是触类旁通,正所谓大道朝天,殊途同归,掌握各种语言肯定会提升我们的编程水平,另一方面,万一真的发生了什么(反正博主不信),我们也能多一手准备。

    以上,献给各位phper,愿各位能在编程的路上越走越远,事业节节高升,家庭和睦和谐。

    end

    展开全文
  • PHP-Script

    热门讨论 2013-10-23 23:30:24
    source insight支持php的配置文件,包括PHP Script.CLF,PHP Styles.cf3
  • WAMPSERVER (64 BITS & PHP 5.5) 2.5

    千次下载 热门讨论 2014-10-24 21:34:41
    WampServer 2.5 - 32 and 64 bits Be sure that you have installed Visual C++ Redistributable for Visual Studio 2012 : VC11 vcredist_x64/...PHP : 5.5.12 PHPMyAdmin : 4.1.14 SqlBuddy : 1.3.3 XDebug : 2.2.5
  • script-api.jar,php-servlet.jar,php-script.jar,JavaBridge.jar

    千次下载 热门讨论 2016-09-20 14:27:54
    tomcat支持php项目必须的jar包
  • 尽管学习如何使用单个php框架生成动态网页相对简单,但确定这3种主流web应用程序框架中哪一个最能满足您的要求却并不容易。《php框架高级编程——应用symfony、cakephp和zend》一书对3种最受欢迎的开源框架进行了...
  • PHP登录与注册源码

    千次下载 热门讨论 2014-04-27 13:17:53
    一个简单的PHP登录与注册程序,每段代码都含详细注释,方便学习交流。
  • PHP开发API接口的实例代码下载

    千次下载 热门讨论 2014-03-24 16:05:50
    分享一例php实现API接口的代码,实现用户的注册、登录、查询用户信息的功能,是学习PHP API开发的不错实例
  • PHP语言基础知识(超详细)

    万次阅读 多人点赞 2020-12-06 16:11:23
    文章目录前言第一章 PHP语言学习介绍1.1 PHP部署安装环境1.2 PHP代码工具选择第二章 PHP代码基本语法2.1 PHP函数知识介绍2.2 PHP常量变量介绍2.2.1 PHP变量知识:2.2.2 PHP常量知识:2.3 PHP注释信息介绍2.4 PHP数据...



    前言

    PHP是安全中需要掌握的一门语言,就这么一点儿时间教网络安全,不可能精通,这里就不要求你精通PHP,但是对于一些基础代码能够认识、能够编写那么就可以了。

    同时,这里需要和HTML结合,如果你HTML还没懂,那么就需要加强一些HTML的技术能力了。值得一提的是,你看网页中那么多HTML代码,真的是人去写的么,那是不现实的,都是通过框架自动生成的,像现在的少儿编程不也是一样么。


    第一章 PHP语言学习介绍

    外文名PHP:Hypertext Preprocessor,中文名:“超文本预处理器”是一种通用开源脚本语言。语法吸收了C语言、java和Perl的特点,利于学习,使用广泛,主要适用于web开发领域。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

    1、目前PHP在全球网页市场、手机网页市场还有为手机提供API(程序接口)排名第一。
    2、PHP入门简单,学习入门易入手。
    

    1.1 PHP部署安装环境

    PHP可以安装的环境比较广泛,可以在windows环境和Linux环境安装部署,并且已经集成比较多环境包安装。以下的这些全是各种环境包英文名,只不过代表的是不同集成环境包的名字,不用去深究。如下所示:

    AppServ PHPstudy APMserv XAMPP WAMPServer …等等
    对于我们才入门的学习者来说,选择集成环境包的原则:
    1、更新更快,版本较新
    2、操作简单易于上手
    3、选择项不要过多
    因此,我们下面使用的集成环境包是:PHPstudy;当然,如果你对这块比较熟悉了,也可以自行选择集成环境包。
    可以在官方网站下载:http://www.phpstudy.net/

    1.2 PHP代码工具选择

    写代码的工具有很多,对于刚开始学习PHP的朋友来说,选择工具有几个原则
    1、不要使用带自动提示的工具(例如eclipse、zend studio等PHP开发工具集)
    2、写完的代码必须要有颜色高亮显示(不要使用txt文本编辑器等无代码颜色显示的编辑器)
    推荐的开发工具:
    1)、sublime
    2)、PHPstorm(推荐)
    注:这两个工具已经在开发环境文件夹中,直接使用即可,两个工具的使用和配置,稍后写在附录文章中。

    第二章 PHP代码基本语法

    2.1 PHP函数知识介绍

    新建test.php文件,在这个test.php文件中写入如下代码:

    <?php
    phpinfo();
    ?>
    

    你可以在浏览器地址栏里面,输入你的服务器地址。我们当前是以自己的电脑作为网页服务器使用的,可以在地址中输入:
    在这里插入图片描述

    代码信息解读说明:

    1、phpinfo是一个函数(功能),这个函数会显示一个当前电脑(服务器)的详细的PHP信息。
    2、电脑是一个很笨的东西,需要我们人为的告诉他,代码写完了。我们用分号(;)来告诉他代码写完了。因此只要写完一段代码,就需要在后面加分号。
    3、而前后两行的回车空行,是为了让代码更加好看,避免叠在一起,看着不舒服。其实中间有多少个回车空行都没有关系的,保证好看就行了。PHP的语法解释器(PHP最核心部分)不会处理这些空行的。

    代码编写注意事项:

    1、PHP的代码信息全部要用半角的英文、很多人容易写成全角的英文/中文和符号造成PHP代码报错。
    2、PHP代码的最后一行可以加也可不加分号。由于很多学习者特别是初学者经常犯一个毛病,写完一行代码不加分号,因此容易犯错,某些公司规定一行代码写完,就必须加分号。
    3、我们在写文件test.php这个文件命名的时候,只要英文半角(a-z A-Z 0-9 _-)这些字符来命名文件,文件命名不要用中文,不要用特殊符号,不要中间加空格,严格区分大小。

    2.2 PHP常量变量介绍

    2.2.1 PHP变量知识:

    在这个test01.php文件中写入如下代码:

    <?php
    $iphone7 = 5880;
    $iphone7plus = 6088;
    echo $iphone6 + $iphone7plus;  //echo是在PHP里面最常用的一个输出、显示功能的命令
    ?>
    

    $叫作美元符,英文单词:dollar。PHP的变量必须以美元符开始。说明搞PHP有”钱”途。

    变量的几个特点介绍:

    1、必须要以 开 始 , 如 变 量 x 必 须 要 写 成 开始,如变量x必须要写成 xx
    2、变量的首字母不能以数字开始
    3、变量的名字区分大小写
    4、变量不要用特殊符号、中文,_不算特殊符号
    5、变量命名要有意义(别写xxx,aaa,ccc)这种变量名

    变量的分类情况说明:

    可变变量,外部变量,环境变量

    1. 可变变量举例说明
    <?php
    // 服务器读取的  编码设置
        header('Content-type:text/html;charset=utf-8');
    //定义了一个变量叫作$shu 将$shu这个变量的值设为字符串的biao
    $shu = ‘biao’;
    //定义了一个变量叫作$biao 将他的值设置为鼠标
    $biao = ‘鼠标’;
    //$$shu就是可变变量;在已声明的变量$shu前又加上了一个变量符
    echo $$shu;
    ?>
    
    1. 外部变量举例说明
      PHP的外部变量是PHP在使用过程中规定好的一些变量。这个变量的规定是这样定的。
    <html>
      <head>
      </head>
      <body>
    <!-- 这一行method 对应的值改为post --->
    <form action="req.php" method="post">
    <input type="text" name="username"/>
    <input type="password" name="pwd"/>
    <input type="submit" name="提交"/>
    </form>
      </body>
    </html>
    

    PHP代码调用以上HTML代码中的外部变量方法如下所示:

    <?php
    //$_POST[‘username’],将username作为字符串放在中括号里面,就得到了表单里面的<input type=”text”name=”username”/>的值
    $u = $_POST['username'];
    echo $u.'<br />';
    //$_POST[‘pwd’],将pwd作为字符串放在中括号里面,就得到了表单里面的<input type=”text”name=”pwd”/>的值
    $passwd = $_POST['pwd'];
    echo $passwd.'<br />';
    ?>
    

    通过上面的实验我们知道了,通过$_POST这个外部变量,可以得到从表单输入的值。另外我们总结一些外部变量,要求知识点的学习级别:了解含义,默写这个单词的写法和作用。

    在这里插入图片描述

    1. 环境变量举例说明
      环境变量我们主要用的有 S E R V E R 和 _SERVER和 SERVER_ENV两个环境变量。不过,$_ENV逐渐被PHP的新版本给废弃了。
    <?php
    phpinfo();
    ?>
    

    其它环境变量:
    在这里插入图片描述

    2.2.2 PHP常量知识:

    常量就是长久不变的值,常量在代码中的定义,以及书写方式如下所示:

    define(常量名, 常量值)
    

    常量知识说明:

    1、常量名可以小写,但是通常大写
    2、常量名可以不加引号,但是通常加上引号
    3、在字符串中调用常量的时候,必须在引号外面
    4、常量名建议只用字母和下划线

    <?php
    define('MY_NAME','PHP中文网');
    echo MY_NAME;
    //下面是错误的调用方式
    echo '我的名字是MY_NAME';
    //下面是正确的调用方式
    echo '我的名字是'.MY_NAME;
    ?>
    

    ?>此外,系统还为我们准备了一些内置的常量,这些常量都是规定好的,先熟悉几个,还有更多的系统变量可以在入门以后扩展深入学习。

    在这里插入图片描述

    2.3 PHP注释信息介绍

    所谓注释,汉语解释为注解,更为准确一些,因为代码是英文的,并且代码很长,时间长了人会忘了代码的意思作用,所以可以加上注释进行说明提示。

    注释功能说明:

    1、对重点进行标注
    2、时间长了容易忘记代码,方便快速回忆,以及方便查找信息
    3、可以让其他人更容易看懂配置信息
    4、还可以生成文档,代码写完相关的文档就写完了,提高工作效率
    5、拥有注释、空行、回车之后的代码看起来更优美
    6、注释可用来排错,不确定代码中哪一块写错了,可以将一大段注释,确定错误区域。
    7、注释中的部分的内容,电脑不会执行它

    PHP注释的方法如下所示:

    1. 单行注释(只注释一行)
    //		表示单行注释
    #		表示单行注释,用的比较少
    

    单行注释举例演示:

    <?php
    //声明异步iphone7手机的价格变量
    $iphone7 = 5880;
    //显示输出收集价格
    echo $iphone7; 
    ?>
    
    1. 多行注释(注释多行)
    /*
    多行注释,这里是注释区域代码
    */
    

    多行注释举例演示:

    <?php
    /*
    作者:PHP中文网
    时间:2020.01.01
    功能:这是一个多行注释例子
    */
    ?>
    

    2.4 PHP数据类型介绍

    数据类型就是对数据分类的一种划分方式而已,例如以下举例说明:
    哺乳动物:人、猫、马、鸭嘴兽…等等
    蔬菜类型:西红柿、菠菜、茄子…等等
    水果类型:西瓜、桃子、苹果…等等
    PHP中一共有八种数据类型,包括4种标量数据类型:boolean(布尔类型)、integer(整形)、float/double(浮点型)和string(字符串型),2种复合数据类型:array(数组类型)和object(对象类型),2中特殊的数据类型:resource(资源类型)与null(无/空白类型)。

    在这里插入图片描述

    2.4.1 整形数据类型

    整形表示即为整数,英文称之为integer,英文简写为int;整形分为8进制、10进制、16进制,整形在计算机里面是有最大值和最小值范围的。大家经常听说32位计算机,也就是32位计算机一次运算处理的最大范围是-2的32次方到2的32次方-1;而64位计算机,就是一次运算处理的最大范围是-2的64次方到2的64次方-1。

    8进制声明方式:

    <?php
    //8进制的取值范围是0-7,即0、1、2、3、4、5、6、7
    $bajinzhi=033145;
    echo $bajinzhi;
    ?>
    // 这里仅仅是个说明,并不是八进制的运算,具体看下面的图
    

    10进制声明方式:

    <?php
    //为了方便大家记忆和前期学习,英文不好的朋友可用拼音来声明变量。
    //声明变量整数,英文int
    $int=1000;
    $zhengshu=1000echo $int;
    echo $zhengshu;
    ?>
    // 这里仅仅是个说明,并不是十进制的运算,具体看下面的图
    

    16进制声明方式:以0x开始,后面跟0-f的,0x的后面的abcdef不区分大小写。(了解即可)

    <?php
    //16进制的取值范围是0-f,即0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f
    //声明变量整数,英文int
    $shiliujinzhi=0x6ff;
    echo $shiliujinzhi;
    // 这里仅仅是个说明,并不是十六进制的运算,具体看下面的图
    ?>
    

    在这里插入图片描述

    2.4.2 布尔数据类型

    所谓布尔类型,汉语翻译过来之后,更好的解释是用道家中易经的语言进行解释,即为:阴/阳,男/女,真/假,对/错,存在/不存在,0/1等等。

    布尔类型举例说明:

    <?php
    //声明一个变量(拼音)为布尔
    $buer=true;
    //声明一个变量(英文)
    $bool=false;
    ?>
    

    2.4.3 字符串数据类型

    在PHP语言中声明字符串有三种方式:
    1、用单引号声明
    2、用双引号声明
    3、用字界符声明

    单引号声明

    用英文半角的单引号,将字符串包起来:

    <?php
    //声明字符串变量$zifu
    $zifu='好好学习吧';
    echo $zifu;
    ?>
    

    双引号声明

    在字符串两面加双引号

    <?php
    //声明字符串变量$str
    $str="我想好好学习";
    echo $str;
    ?>
    

    字界符声明

    1、在变量后面的等号写三个小于号 <<<
    2、然后在<<<后面写上字符(建议英文大写字符)
    3、然后换行写上任意想写的字符
    4、写完后,顶行。在行最开始处,再写上<<<后面的字符和分号。

    <?php
    $dingjie = <<<ABC
      如果
          非要在这个测试
        前
            面<br />
           加上一段
        <i>有趣的话</i>
        我想说,<h1>努力学习不好么<h1>
    ABC;
    echo $dingjie
    ?>
    

    那双引号和单引号有什么区别呢:

    1. 双引号解析变量,但是单引号不解析变量
    2. 在双引号里面插入变量,变量后面如果有英文或中文字符,会把这个字符和变量拼起来,视为一整个变量。一定要在变量后面接上特殊字符,例如空格等分开。
    3. 如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
    4. 双引号解析转义字符,单引号不解析转义字符。但是单引号能解析\
    5. 单引号效率高于双引号,尽可能使用单引号
    6. 双引号和单引号可以互相嵌套,双引号中可以插入单引号,单引号当中插入变量,这个变量会被解析。
    7. 神奇的字符串拼接胶水——(.)点,用来拼接字符串。
    8. 一般将定界符声明字符串视为双引号一样的功能来看待。

    2.4.4 浮点型数据类型

    所谓浮点类型,可以理解为,我们数学里面的小数。声明方式分为两种:
    1、普通声明方式
    2、科学声明方式

    普通声明浮点数:

    <?php
    //声明变量fudian的植为12121.3232
    $fudian=12121.3232;
    echo $fudian;
    ?>
    

    科学声明浮点数:

    <?php
    //声明变量$f1的植为0.8873
    $f1=0.8873;
    var_dump($f1)
    ?>
    

    var_dump() 函数用于输出变量的相关信息。显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
    参考资料:https://www.runoob.com/php/php-var_dump-function.html

    2.4.5 PHP数据类型之查看和判断数据类型

    查看数据类型:
    1、gettype(传入一个变量)能获得变量的类型
    2、var_dump(传入一个变量)输出变量类型和值

    <?php
    //声明一个变量88.8,可以自己多做几次实现换成其他类型看看$type输出是多少。
    $float = 88.8;
    $type = gettype($float);
    echo $type;
    ?>
    
    <?php
    //多换几个类型试试
    $str = '你喜欢男人还是喜欢女人';
    $type = var_dump($str);
    echo $type;
    ?>
    

    判断数据类型方法:
    使用is_*系列函数,is_types这一系列的函数,来进行判断某个数据属于哪种类型,如果是这个类型返回真,不是这个类型返回假。

    在这里插入图片描述

    <?php
    //is_*系列函数有个特点,就是如果是这个类型的返回的值为真,不是这个数据类型就返回的是假
    //声明类型为假
    $fo = false;
    if (is_bool($fo)) {
        echo '执行真区间';
    }else{
        echo '执行假区间';
    }
    echo "<br />";
    
    //检查未声明的变量$p是否为空,为空就执行真区间
    if(is_null($p)) {
        echo '执行真区间';
    }else{
        echo '执行假区间';
    }
    echo "<br />";
    
    //字符串类型的数值,检查执行的真还是假
    $str = '18.8';
    if(is_numeric($str)) {
        echo '执行真区间';
    }else{
        echo '执行假区间';
    }
    echo "<br />";
    
    //把sca的值换为整数 浮点 布尔和字符串试试
    $sca = true;
    if(is_scalar($sca)) {
        echo '执行真区间';
    }else{
        echo '执行假区间';
    }
    echo "<br />";
    
    //换成echo,is_int试试,为什么echo执行假区间呢?
    if(is_callable('var_dump')) {
        echo '执行真区间';
    }else{
        echo '执行假区间';
    }
    echo "<br />";
    ?>
    

    2.5 PHP流程控制语句

    <?php
    //我们定义一个泡到美女的变量($pao)为true,意思为泡到了
    $pao =fales;
    if($pao){
        echo '林志玲,我爱死你了';
        echo '我愿意去死';
    }else{
        echo '照骗,爱会消失的';
        echo '我不愿意去死';
    }
    ?>
    

    2.6 PHP算数运算方法

    算数运算符,就是小学所学过的大多数知识:在这里插入图片描述

    <?php
    $x=5;
    $y=6;
    //5+6为11
    echo $x+$y;
    ?>
    

    2.6.1 PHP程序自加自减运算

    自加自减运算就是把自己加1或者减1。如果学习过其它变成语言。会发现,此处的用法又是计算机里面的一个规定。可以这样用,用起来更加简洁。在这里插入图片描述

    上面的用法说明其实很简单,按照上面的例子,分成步骤去按过程判断即可:

    <?php
    $x=5;
    //先赋值后做加法运算,即将$x的值赋值为$y.$x的值为5,所以将$x的值赋值为$y.$y也是5
    $y=$x++;
    echo $y;
    //$x的结果输出为6,因为赋值给$y后,$x自己又把自己进行了+1操作。所以,$x结果为6
    echo $x;
    ?>
    

    2.6.2 PHP程序比较运算符号

    比较运算符,在大家小学的时候就学了很多
    在这里插入图片描述

    <?php
    $x=5;
    $y=6;
    //因为5大于6不成立,所以为错的,即为false执行了假区间
    if(!$x > $y){
        echo '变量x大于变量y 成立';
    }else{
        echo '变量x大于变量y 不成立';
    }
    ?>
    

    2.6.3 PHP程序逻辑运算符号

    逻辑运算符号比较简单,是我们人类进行逻辑思考时的一种方式。在这里插入图片描述

    <?php
    $x=true;
    $y=false;
    //逻辑与(并且),要求两个都为true才能执行真区间,所以代码中执行假区间
    if($x && $y) {
        echo '执行了真区间';
    }else{
        echo '执行了假区间';
    }
    ?>
    

    2.6.4 PHP程序位运算

    在这里插入图片描述

    <?php
    //$x二进制为:
    $x=5;
    //$y二进制为:
    $y=8;
    //结果为13
    echo $x ^ $y;
    ?>
    

    2.6.5 PHP三元运算符合其它运算符

    三元运算符,相当于是if…else结构,不过三元运算符的写法更加简洁,语法格式如下:在这里插入图片描述

    <?php
    $x=true;
    $x?$y=5:$y=6;
    //输出5
    echo $y;
    ?>
    
    <?php
    echo '<pre>';
    echo `ipconfig`;
    echo '</pre>';
    ?>
    

    第三章 PHP流程控制语句

    3.1 if条件控制语句

    比如:郝斌同学是无趣的人。他回家时候做的事如下所示:
    如果半夜回家,先去睡觉
    如果早上回家,先去洗澡
    如果中午回家,先去吃法
    如果晚上回家,先去烧水
    下面来了解下他的活动安排PHP语法规则:

    <?php
    If(判断语句1){
       执行语句体1
    }elseif(判断语句2{
       执行语句体2
    } elseif(判断语句n){
       执行语句体n
    }else{
       最后的else语句可选
    }
    

    流程代码信息示例01:

    <?php
    $week=date("4");
    //判断星期小于6,则输出: 还没到周末,继续上班....
    if($week<"6"){
        echo "还没到周末,继续上班....";
    }
    

    流程代码信息示例02:

    <?php
    //定义一个随机变量,判定时间,随机0点至23点
    $dida = rand(0,23);
    echo "当前时间为 $dida 点\n";
    if($dida > 6 && $dida < 10 ){
        echo '睡觉';
    }elseif ($dida > 10 && $dida < 14){
        echo '洗澡';
    }elseif($dida >= 19 && $dida < 22){
        echo '烧水';
    }elseif($dida > 22 && $dida <=23){
        echo '看电视';
    }elseif($dida >=1 && $dida <3){
        echo '看电影';
    }else{
        echo '工作';
    }
    ?>
    

    3.2 if嵌套语句

    比如:王总在出行计划和工作项目中具有极高的规划性,他给自己的生活秘书和工作秘书分别指派了出差的行程:
    生活上:先查天气,下雨带雨具和毛巾,不下雨要带防晒霜,雨具、毛巾和防晒霜的情况要提前检查,如果没有要及时购买。
    工作上:要提前沟通出差的工作任务,准备好了要及时检查确认,打印签单。没有及时准备好的情况下,要列出主要的项目议题。

    类似于上面的这种情况判断,就需要用到if…else if…else反复嵌套的结构了.
    在if语句中可以嵌套一个或多个if语句,以实现多个参数的判断,这就是if语句的多种嵌套.

    嵌套结构如下所示:

    <?php
    if(判断1){
      if(判断2){
        代码段1;
    }else{
        代码段2;
    }
    }else{
      if(判断3){
        代码段3;
    }else{
        代码段4;
    }
    }
    ?>
    

    流程代码信息示例01:

    <?php
    //0表示工作秘书,1表示生活秘书
    //用代码模拟随机产生当前的行程安排是生活秘书负责还是工作秘书负责
    $mishu=rand(0,1);
    if($mishu){
        //下雨和不下雨的状态,随机产生;下雨状态为1,不下雨状态为0
        $xiayu=rand(0,1);
        if($xiayu){
            //是否购买雨伞;购买了雨伞为1,未购买雨伞为0
            $you=rand(0,1);
            if($you){
                echo '下雨天,已经购买雨伞';
            }else{
                echo '下雨天,需要购买雨伞';
            }
        }else{
            //是否购买了防晒霜,购买了为1,未购买为0
            $you=rand(0,1);
            if($you){
                echo '未下雨,已经购买了防晒霜';
            }else{
                echo '未下雨,需要购买防晒霜';
            }
        }
    }else{
        //是否准备好了会议议程,准备好了为1,未准备好为0
        $yicheng=rand(0,1);
        if($yicheng){
            echo '已准备好,可以随时出发';
        }else{
            echo '没有准备好,需要打印,延迟出发';
        }
    }
    

    3.3 switch语句使用

    比如:王同学家里特别有钱,所以他的行程方式和正常人的有些不一样.
    他的出行方式有以下6种方式:
    司机开车/民航/自己家的专机/火车动车/骑马/游轮
    switch…case的语法结构如下:

    <?php
    switch(变量){    //字符串,整形
       case 具体值1:
          执行代码1;
          break;
       case 具体值2:
          执行代码2;
          break;
       case 具体值3:
          执行代码3;
          break;
          defult:
    }
    ?>
    

    上面的break是可选的,上面的default也是可选的,不要在case后面写成分号,后面是冒号.不要在case后面写判断区间,如($foo >20 或者 $foo == 30)
    Switch里面的变量最好是整形 字符串 因为布尔判断更适合if…else.

    <?php
    //定义出行工具
    $tool=rand(1,6);
    switch($tool){
        case 1:
            echo '司机开车';
            break;
        case 2:
            echo '民航';
            break;
        case 3:
            echo '自己家的专机';
            break;
        case 4:
            echo '火车动车';
            break;
        case 5:
            echo '骑马';
            break;
        case 6:
            echo '游轮';
            break;
    }
    

    3.4 while循环语句说明

    比如:王总需要反复往返于北京和大连,就是典型的循环结构.假设王总投资这个项目需要往返大连100次,每次访问都会计数一次.难道写一百遍同样的代码?显然对于智商极高的程序员来说不可能这样处理。

    需要抽象人类的思维逻辑,定义一个循环结构:

    <?php
    //定义需要往返的次数,老外喜欢从0开始计数,所以系统也是从0开始
    $count=0;
    //while后面接布尔值判断,为真执行,为假停止
    //$count小于100的时候执行,也就是$count为0至99的时候执行.
    //如果$count不小于100了,循环停止执行后续的代码
    
    //循环开始处
    while($count < 100){
        echo "这是王总第 $count 次出差 <br />";
        //每次执行让$count+1,这样的话,就不会产生$count永远小于100的情况了
        $count++;
    }
    //循环结束
    ?>
    

    对比说明do…while与while区别:

    do…while与while的语法结构基本一样,也是一个布尔型循环,功能也基本一样.
    基本语法规定如下:

    do{
       //代码框
    }while(判断)
    

    do…while与while区别是,它们的值得检查时机不同.
    do…while不论while判断是否成立,先执行一次代码框循环语句,保证会执行一次(表达式的真值在每次循环结束后检查)
    然而我们之前的while循环会检查布尔判断区域,成立则执行,不成立则不执行.

    <?php
    $i=0;
    do {
      echo $i;
    }while($i >0);
    ?>
    

    3.5 for循环语句

    同学反复往返于北京和大连,并且在本上记录往返次数.在PHP中还有另外一种实现方式能够实现同样的计数.for循环是PHP中的一种计数型循环.它的语法比较灵活多变,这是一个必须掌握的知识点.

    for(表达式1;表达式2;表达式3)
      需要执行的代码段;
    }
    

    1、表达式1是初始化赋值,可以同时赋值多个代码;
    2、表示式2在每次循环开始前求值,如果值为true,则继续循环,执行嵌套的循环语句,如果值为false,则终止循环.
    3、表达式3在每次循环之后被求值.

    <?php
    for($i=1;$i<=10;$i++)
      echo ‘分手后第’.$i.’年, 我全都忘了你的样子<br />;
    }
    ?>
    

    3.6 goto循环语句

    王同学每周往返,但有一个特例:项目失败后或者集团临时通知除外,就可以不再这么每周往返了.

    基本语法:

    <?php
    goto wan;
    echo '天王盖地虎';
    wan:
    echo '小鸡炖蘑菇';
    ?>
    

    基本编写:

    <?php
    for ($i=0;$i<100;$i++){
        echo '第'.$i.'每周往返北京大连<br />';
        if($i == 17){
            goto end;
        }
    }
    end:
    echo '集团公司要求停止此项';
    ?>
    

    第四章 PHP函数基本语法

    函数的英文叫做:function,而function的解释项中有另外一个含义”功能”,函数就是功能,调用一个函数就是在调用一个功能.

    自定义函数的语法规则,语法规范如下:

    Function 函数名(参数名1=[1], 参数名2=[2] , 参数名n=[值n])
    {
        函数中的功能体
        [return 返回值]
    }
    

    代码编写示例:

    <?php
    function php_cn(){
        echo "好好学习";
    }
    php_cn();
    php_cn();
    ?>
    

    php_cn这个函数,是不是显示出来了两段: 好好学习.

    函数备注说明:

    1. 函数名只能是字母,数字,下划线的组合,并且之间不能包含空格,数字不能放在变量名首位.
    2. 函数名与变量命名规则一样,但是不同的是,函数名不区分大小写
    3. 函数体的参数若是定义了,未传参,代码会报错.
    4. 函数后的参数如果有默认值,参数可以不填,代码也不会报错
    5. 函数后的参数可以写多个
    6. 函数后如果有默认值和无默认值的参数,通常把无默认值的参数写在最前面
    7. 函数体的变量与函数体外的变量没有关系
    8. 函数体中若有return,return后的代码不执行.
    9. 函数执行完后,可把函数体内的值,带到函数体外
    10. 函数的执行没有顺序关系,可以在定义外之前的位置调用

    根据之前学习的全局变量信息,编写页面内容:

    <html>
      <head>
         <title>网站页面信息</title>
      </head>
      <body>
    <!-- 先用POST来做实验,以后可以改为get -->
    <form action="glob.php" method="post">
    <input type="text" name="info"/>
    <input type="submit" name="提交"/>
    </form>
      </body>
    </html>
    

    编写传入参数的函数信息:

    <?php
    function demo() {
        echo $_POST['info'];
    }
    demo();
    ?>
    

    在实际开发中,常常需要把程序中的共用代码放到一个文件中,使用这些代码的文件只需要包含这个文件即可.这种方法有助于提高代码的重用性,给代码的编写与维护带来很大的便利.在PHP中,有以下四种方法包含一个文件:
    在这里插入图片描述

    include函数功能实践:
    创建一个functions.php文件,里面写上两个函数:

    <?php
    //functions-test-02文件
    function demo(){
        echo 'aaaa';
    }
    function test(){
        echo 'bbbb';
    }
    ?>
    

    在functions.php的同级目录下,在创建一个user.php文件把functions.php文件包含进来.
    这样函数信息就可以专门放在functions.php里面,哪需要用到这些函数的时候,就从哪包含进来.

    <?php
    //user.php
    include "function-test-02.php";
    //可以直接调用
    demo();
    test();
    ?>
    

    数学常用函数总结:
    在这里插入图片描述
    在这里插入图片描述

    字符串常用函数总结:在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    时间信息函数总结:

    <?php 
    $mytime = getdate();
    echo "年 :".$mytime['year']."\n";
    echo "月 :".$mytime['mon']."\n";
    echo "日 :".$mytime['mday']."\n";
    echo "时 :".$mytime['hours']."\n";
    echo "分 :".$mytime['minutes']."\n";
    echo "秒 :".$mytime['seconds']."\n";
    echo "一个小时中的第几钟 :".$mytime['minutes']."\n";
    echo "这是一分钟的第几秒 :".$mytime['seconds']."\n";
    echo "星期名称 :".$mytime['weekday']."\n";
    echo "月份名称 :".$mytime['month']."\n";
    echo "时间戳   :".$mytime[0]."\n";
    ?>
    

    第五章 PHP数组结构

    数组的英文是array,可以存入多个不同类型的数据,是一个复合数据类型。

    案例:

    <?php
    $shu = array(1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇');
    echo '<pre>';
    var_dump($shu);
    echo '</pre>';
    ?>
    

    在上例中,我们发现我们存入了:整型、浮点、布尔、字符串
    注:上例中echo pre这个标签的主要目的是为原样输出,格式展示的更好看,更清晰。
    可以用var_dump()打印出来显示看一下效果:
    索引数组的下标必须要从0开始吗?
    答:这个问题其实不然,索引数组并不一定要从0开始。
    那如何能够不从0开始呢?
    答:需要用到大家在上面学的一小块知识哟。就是键值对应符。我们来动手写。

    <?php
    $kele = array('只有不断努力才能博得未来',10 => 'NoAlike', 'PHP中文网' , '去PHP中文网学PHP', 19 => '苹果和梨子我都爱' , '橘子我最爱');
    //打印显示$kele
    echo '<pre>';
    var_dump($kele);
    echo '</pre>';
    ?>
    

    5.1 for循环遍历索引数组

    <?php
    //声明一个数组,值为1到10
    $num = array(1,2,3,4,5,6,7,8,9,10);
    
    //按照索引数组的特点,下标从0开始。所以1的下标为0,10的下标为9
    echo $num[0].'<br />';
    echo $num[9].'<br />';
    
    //我们可以得到数组中元素的总个数,为10
    echo count($num) .'<br />';
    
    //遍历这个索引数组的话,我们就可以定义一个变量为$i
    //$i 的值为0,从0开始
    //可以设定一个循环条件为:$i 在下标的(9)最大值之内循环
    for($i = 0 ; $i < count($num) ; $i++){
       echo $num[$i].'<br />';
    }
    ?>
    

    通过上面的例子,我们就把数组进行了循环。因为下标是从0开始的,定义 i = 0 。 每 次 循 环 的 时 候 让 i=0 。每次循环的时候让 i=0i 加1 ,但是必须要小于10,因为数组下标的最大值为9。

    5.2 常用操作数组函数

    这些函数,也是面试中基础面试中最爱问到的问题。在这里插入图片描述
    补充函数:
    在这里插入图片描述在这里插入图片描述

    例子:弹出数组中的第一个元素

    <?php
    $mingren = array("test", "test1", "test2", "test3");
    $dc = array_shift($mingren);
    echo $dc .'<br />';
    print_r($mingren);
    ?>
    

    第六章 PHP正则表达式

    正则表达是会在开发中经常看到,它主要用在以下一些地方:匹配邮箱、手机号码、验证码、替换敏感的关键词。例如:涉及政治和骂人的话

    PHP的正则表达示定界符的规定如下:定界符,不能用a-zA-Z0-9\ 其他的都可以用。必须成对出现,有开始就有结束。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    举例说明正则符号的定义方式:

    例子						说明
    /中间写正则/				正确
    $中间写正则$				正确
    %中间写正则%			    正确
    ^中间写正则^			    正确
    @中间写正则@			    正确
    (中间写正则)				错误  /\//
    A中间写正则A			    错误
    

    注:\ 是转义字符,如果在以后正则表达示里面需要匹配/,如下:

    / / /
    

    这个时候真要匹配/ 的时候,需要把定界符里面的/ 用转义字符转义一下,写成下面的例子:

    / \/ /
    

    如果你觉得麻烦,遇到这种需要转义的字符的时候可以把两个正斜线(/ /)定界,改为其他的定界符(# #)。

    正则表达式格式:preg_match ( string $正则 , string $字符串 , array&$结果] )

    功能:根据 正 则 变 量 , 匹 配 正则变量,匹配 字符串变量。如果存在则返回匹配的个数,把匹配到的结果放到$结果变量里。如果没有匹配到结果返回0。

    <?php
    $zz = '/wq/';
    $string = 'ssssswqaaaaaa';
    if(preg_match($zz, $string, $matches)){
       echo '匹配到了,结果为:';
       var_dump($matches);
    }else{
       echo '没有匹配到';
    }
    ?>
    

    我们常用的正则函数有:在这里插入图片描述

    第七章 PHP文件系统管理

    我们会点鼠标右键删除文件、会control+c(或右键)复制、粘贴文件,会新建一些文件,检测这个文件是不是只读文件。在电脑里面进行的这些操作,在代码里面如果能操作就好了。因为,如果有了这些操作。我们能做很多事情了:可不可以写入修改配置文件、是不是可以做PHP安装的时候检测文件的权限、是不是可以做生成Html文件等等很多不同的操作,总之其他太多太多的地方用到了文件操作。

    7.1 fopen、fread、fclose操作读取文件

    1、readfile读取文件函数

    那如何读取一个文件呢?我们先学一个函数。

    readfile ( string: $文件名)
    功能:传入一个文件路径,输出一个文件。
    

    下面的这一段代码中,只要传入文件名或者指定的文件路径就把文件读取出来了。

    <?php
       //linux类的读了方式
       readfile("/home/paul/test.txt");
       //windows类的读取方式
       readfile("c:\\oldboy\oldboy\boot.ini");
    ?>
    注意:上面的代码中windows的斜线是\斜线,可能会转义掉一些字符。因此,我们写的时候写上两个斜线。
    

    2、file_get_contents打开文件函数

    <?php
       $filename = 'NoAlike.txt';
       $filestring = file_get_contents($filename);
       echo $filestring;
    ?>
    

    3、fopen、fread、fclose操作读取文件

    上面file_get_contents打开文件的方式简单、粗暴。

    resource fopen	 	    ( string $文件名, string 模式)
    string fread 			( resource $操作资源, int 读取长度)
    bool fclose 			( resource $操作资源 )
    

    fopen的模式有下面几个,我们来讲一下fopen的模式:在这里插入图片描述

    <?php
       //你可以创建一个NoAlike.txt,以只读模式打开
       $fp = fopen('NoAlike.txt', "r");
       //var_dump()操作一下$fp看看效果,输出的是不是只有类型提示的是resource
       var_dump($fp);
    ?>
    

    7.2 PHP创建和修改文件内容

    1、file_put_contents写入文件

    先来学习第一种写入文件的方式:

    file_put_contents ( string $文件路径, string $写入数据)
    功能:向指定的文件当中写入一个字符串,如果文件不存在则创建文件。返回的是写入的字节长度
    

    操作代码演示示例:

    <?php
       $data = "在PHP中文网学好PHP,妹子票子不再话下!";
       $numbytes = file_put_contents('test.txt', $data);
       if($numbytes){
           echo '写入成功,我们读取看看结果试试:';
           echo file_get_contents('test.txt');
       }else{
           echo '写入失败或者没有权限,注意检查';
       }
    ?>
    

    2、fwrite配合fopen进行写入操作

    <?php
       $filename = 'test.txt';
       $fp= fopen($filename, "w");
       $len = fwrite($fp, '我是一只来自北方的狼,却在南方冻成了狗');
       fclose($fp);
       print $len .'字节被写入了\n';
    ?>
    代码说明:
    · 不论有没有新建都会打开文件重新写入
    · 原有的文件内容会被覆盖掉
    · 文件不存在会创建
    

    那我们来对比一下以下几个模式的不同:
    在这里插入图片描述

    7.3 PHP创建临时文件

    我们之前创建的文件都是永久文件,而创建临时文件在我们平时的项目开发中也非常有用,创建临时文件的好处:文件操作完成后即删除,不需要去维护这个文件的删除状态。

    <?php
       //创建了一个临时文件
       $handle = tmpfile();
       //向里面写入了数据
       $numbytes = fwrite($handle, '写入临时文件');
       //关闭临时文件,文件即被删除
       fclose($handle);
       echo  '向临时文件中写入了'.$numbytes . '个字节';
    ?>
    

    7.4 php移动、拷贝和删除文件

    我们日常在处理文件的时候,可以删除文件、重命名文件也可以也可复制文件。

    1、重命名文件:

    rename($旧名,$新名);
    功能:这个函数返回一个bool值,将旧的名字改为新的名字。
    

    操作示例说明:

    <?php
       //旧文件名
       $filename = 'test.txt';
       //新文件名
       $filename2 = $filename . '.old';
       //复制文件
       rename($filename, $filename2);
    ?>
    

    2、复制文件

    复制文件,就相当于是克隆技术,将一个原来的东西再克隆成一个新的东西,两个长得一模一样。

    copy(源文件,目标文件)
    功能:将指定路径的源文件,复制一份到目标文件的位置。
    

    操作示例说明:

    <?php
       //旧文件名
       $filename = 'copy.txt';
       //新文件名
       $filename2 = $filename . '_backup';
       //修改名字。
       copy($filename, $filename2);
    ?>
    说明:会通过上面的例子,发现多出来了一个文件。
    

    3、删除文件

    删除文件就是将指定路径的一个文件删除,不过这个删除是直接删除。使用的是windows电脑,你在回收站看不到这个文件,你只会发现这个文件消失了。

    unlink(指定路径的文件)
    

    代码操作示例:

    <?php
       $filename = 'test.txt';
       if (unlink($filename)) {
           echo  "删除文件成功 $filename!\n";
       } else {
           echo  "删除 $filename 失败!\n";
       }
    ?>
    

    4、检测文件属性函数

    假设安装界面的网址是:install.php,安装的锁文件是install.lock。我们就可以检测install.lock文件是否存在。

    <?php
    if(file_exists('install.lock')){
       echo '已安装,请不要再次进行安装';
       exit;
    }
    ?>
    

    常用文件属性函数:在这里插入图片描述

    5、PHP目录处理函数

    php 目录处理函数处理文件夹的基本思想如下:
    1.读取某个路径的时候判断是否是文件夹
    2.是文件夹的话,打开指定文件夹,返回文件目录的资源变量
    3.使用readdir读取一次目录中的文件,目录指针向后偏移一次
    4.使用readdir读取到最后,没有可读的文件返回false
    5.关闭文件目录

    我们来学习一比常用函数:

    在这里插入图片描述
    代码演示操作:

    <?php
    //设置打开的目录是D盘
    $dir = "d:/";
    //判断是否是文件夹,是文件夹
    if (is_dir($dir)) {
       if ($dh = opendir($dir)) {
          //读取到最后返回false,停止循环
          while (($file = readdir($dh)) !== false) {
               echo "文件名为: $file : 文件的类型是: " . filetype($dir . $file) . "<br />";
           }
           closedir($dh);
       }
    }
    ?>
    

    6、php 文件权限设置
    chmod主要是修改文件的的权限

    <?php
    //修改linux系统/var/wwwroot/某文件权限为755
    chmod("/var/wwwroot/index.html", 755);  
    chmod("/var/wwwroot/index.html", "u+rwx,go+rx"); 
    chmod("/somedir/somefile", 0755); 
    ?>
    
    

    7、php文件路径函数

    我们经常会遇到处理文件路径的情况。例如:
    1.文件后缀需要取出来
    2.路径需要取出名字不取目录
    3.只需要取出路径名中的目录路径
    4.或者把网址中的各个部份进行解析取得独立值
    5.甚至是自己组成一个url出来

    很多地方都需要用路径处理类的函数。把常用的路径处理函数为大家做了标注,对着这个路径处理函数进行处理即可:在这里插入图片描述

    代码示例说明:

    <?php
    $path_parts = pathinfo('d:/www/index.inc.php');
    echo '文件目录名:'.$path_parts['dirname']."<br />";
    echo '文件全名:'.$path_parts['basename']."<br />";
    echo '文件扩展名:'.$path_parts['extension']."<br />";
    echo '不包含扩展的文件名:'.$path_parts['filename']."<br />"; 
    ?>
    

    8、php实现文件留言本

    我们来看一下文件结构:

    index.php		展示输入框和留言内容
    write.php 		向message.txt写入数据
    message.txt 		存入聊天内容
    

    编写index.php文件信息:

    <?php
    //设置时区
    date_default_timezone_set('PRC');
    //读了内容
    @$string = file_get_contents('message.txt');
    //如果$string 不为空的时候执行,也就是message.txt中有留言数据
    if (!empty($string)) {
        //每一段留言有一个分格符,但是最后多出了一个&^。因此,我们要将&^删掉
        $string = rtrim($string, '&^');
        //以&^切成数组
        $arr = explode('&^', $string);
        //将留言内容读取
        foreach ($arr as $value) {
            //将用户名和内容分开
            list($username, $content, $time) = explode('$#', $value);
            echo '用户名为<font color="gree">' . $username . '</font>内容为<font color="red">' . $content . '</font>时间为' . date('Y-m-d H:i:s', $time);
            echo '<hr />';
        }
    }
    ?>
    <h1>基于文件的留言本演示</h1>
    <form action="write.php" method="post">
        用户名:<input type="text" name="username" /><br />
        留言内容:<textarea  name="content"></textarea><br />
        <input type="submit" value="提交" />
    </form>
    

    看了刚刚的展示内容,我们知道文件存储时:
    1、段与段之间进行了分割
    2、内容与用户之前用一个特殊的符号进行了分割

    下面我们来写write.php写入留言至文件的代码:

    <?php
    //追加方式打开文件
    $fp=fopen('message.txt','a');
    //设置时间
    $time=time();
    //得到用户名
    $username=trim($_POST['username']);
    //得到内容
    $content=trim($_POST['content']);
    //组合写入的字符串:内容和用户之间分开,使用$#
    //行与行之间分开,使用&^
    $string=$username.'$#'.$content.'$#'.$time.'&^';
    //写入文件
    fwrite($fp,$string);
    //关闭文件
    fclose($fp);
    header('location:index.php');
    ?>
    

    总结

    以上便是在PHP的学习过程中需要掌握的一些基础知识,没有接触过的朋友可能比较吃力,但是多花时间去练一练总是好的,然后多看看参考、一些案例,将PHP和HTML很好的结合,能够熟练地运用更好。

    展开全文
  • CTF之PHP基础学习篇(一)

    万次阅读 多人点赞 2022-03-19 15:16:46
    CTF之PHP基础。 文章目录 前言 一、PHP是什么? 二、配置PHP环境 三、PHP基础语法介绍 前言 估摸着不少学计算机的同学以及其他专业的小部分同学都对于信息安全感兴趣吧!那对于参加这相关的比赛就应该更有兴趣了。...
  • 简述PHP执行流程

    万次阅读 2021-12-27 14:46:41
    PHP 代码是如何最终转换为cpu指令集被执行的?
  • PHP和MySQL WEB开发(第4版).pdf

    千次下载 热门讨论 2012-11-21 17:46:29
    PHP和MySQL Web开发(原书第4版)》将PHP开发与MySQL应用相结合,分别对PHP和MySQL做了深入浅出的分析,不仅介绍PHP和MySQL的一般概念,而且对PHP和MySQL的Web应用做了较全面的阐述,并包括几个经典且实用的例子。...
  • 细说php精要版,完整扫描版

    千次下载 热门讨论 2014-02-21 18:40:44
    php是开发web应用系统最理想的工具,拥有易于使用、功能强大、成本低廉、安全性高、开发速度快且执行灵活等优点。《细说php(第2版)》自出版以来,销售一路在同类书籍中领先,已成为php学习者首选的工具书。为了可以...
  • 支持PHP5.2的phpMyAdmin 官方最终版

    千次下载 热门讨论 2015-01-05 22:05:31
    支持PHP5.2的phpMyAdmin 官方最终版, 4.0 以上的其他版本已经不再支持PHP5.2了,保存留个纪念吧!
  • php 执行命令函数

    万次阅读 2022-03-31 08:28:02
    哈尔滨洛弘科技有限公司 php 执行命令的函数合集
  • Java为啥比PHP快?

    万次阅读 2021-12-27 17:53:08
    java 真的比php快吗,快又快在哪里,php有优化的方案吗?,php 8.0 jit有实际意义吗?
  • php_redis.dll redis for php 5.4.x

    千次下载 热门讨论 2013-05-11 13:14:59
    php_redis.dll 扩展 For PHP5.4.x PHP5.4.x 的 redis 扩展 php_redis.dll 测试平台:Windows XPx32 (FastCGI PHP5.4.9 Nginx 1.4.0) 包含 Non Thread Safe 和 Thread Safe 两个版本 首先把php_redis.dll 和 ...
  • 在服务器中找到安全组配置,打开8888端口 如您的程序无特定要求建议安装版本 php 7.4 低版本优先选择 php 5.6 mysql 8.0 支持json数据 低版本优先选择 mysql 5.7 nginx 1.16.1 web服务 phpmyadmin 数据库管理工具 ...
  • 如何在 Ubuntu 中切换多个 PHP 版本

    万次阅读 2022-07-10 17:26:09
    如何在 Ubuntu 中切换多个 PHP 版本
  • 如何运行PHP文件

    万次阅读 2020-06-22 13:15:30
    今天,我们将讨论如何运行PHP文件。 如果您不熟悉PHP编程,本文将帮助您学习如何运行PHP脚本。 PHP是一种服务器端脚本语言,主要用于构建基于Web的应用程序。 这些范围可能从非常简单的博客到功能完善的电子商务...
  • PHP MVC开发实战,完整扫描版

    千次下载 热门讨论 2014-05-17 08:14:29
    【ckook的书了,比较大,我压缩了下,用的是ORPALIS PDF Reducer压缩工具。...由于PHP非常简单、易用,所以就算是未接触过PHP的读者或者初学者,只要掌握了基础的面向对象编程思想就可以轻松上手。
  • PHP实现简单注册登录 详细全部代码

    万次阅读 多人点赞 2020-12-13 22:57:25
    index.php (首页) login.php (登录) register.php (注册) 代码里面注释写很详细了哦~ 废话不多说 直接上代码~ index.php 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &...
  • 宝塔 多个版本PHP切换默认PHP版本

    万次阅读 2021-12-20 10:27:25
    ln -sf /www/server/php/72/bin/php /usr/bin/php 分析原因 明明我的代码没问题为什么运行 PHP think 报错了呢,看一下报错信息,是语法错误,看了看代码没问题啊,那么问题出在哪了? 检查宝塔后发现 原来我是...
  • php实现爬虫

    万次阅读 2021-07-28 10:55:35
    目前主流实现爬虫的方法都是使用pathon,但是不一定只有pathon,php也有很多爬虫工具,比如自带的curl,还有querylist,都能实现爬虫,只要能够实现爬数据,不要用什么样的方法都行。 querylist使用 QUERYLIST官方...
  • PHP案例 许愿墙 PHP许愿墙

    万次阅读 多人点赞 2019-05-22 19:46:52
    由于跟我索要源码的同学比较多,我有点发不过来,所以我把源码直接上传蓝奏云了,下面链接免费下载 源码-CSDN免费下载:CSDN下载PHP许愿墙 版权说明:禁止抄袭,转载请附上本文链接,禁止用于商业目的,禁止在转载时...
  • php extending and embedding<中文翻译版>

    千次下载 热门讨论 2013-03-04 10:23:05
    php extending and embedding<中文翻译版>

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,281,156
精华内容 1,312,462
关键字:

php

友情链接: bx-5e3.rar