标签 php 下的文章

PHP中的正则表达式使用的是Perl正则的标准,所以PHP中的正则表达式前后要加斜杠/,在后面的斜杠加i,如

/^[wx80-xff]$/i

则表示忽略大小写,如果后面是u,比如

/^[\x{4e00}-\x{9fa5}]+$/u

则表示是unicode(utf-8)编码解析,上面的表达式将匹配所有的中文字符串。

JavaScript中可以使用

/^[a-zA-Z0-9_\\-@.\u4e00\\-\u9fa5]+$/

注意减号-在“[]”中有时不连接如0-9这样的形式的话可能需要进行转义如“\-”

同时要注意一下,js中匹配正则和小程序中使用正则有些区别,小程序中会将正则表达式进行转义,所以不同环境要自己多试一试。

 

composer的安装

在windows下只需要下载并允许composer的安装程序即可。

修改国内镜像

打开windows的powershell,执行以下命令,全局修改,将镜像修改为阿里云:

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

创建项目,安装thinkPHP

composer create-project topthink/think

指定版本安装

composer create-project topthink/think=6.0

配置文件composer.json

该文件记录着项目中所使用的包,及版本等详细信息

安装需要的包

以下命令会自动创建composer.json(已经存在则不会创建)

composer require monolog/monolog

初始化项目的依赖包

以下命令在项目目录中会自动根据composer.json的依赖配置文件,自动下载依赖。

composer install

安装Apache2.4与php7.4

将Apache2.4的安装目录中的bin目录添加至环境变量

安装apache服务

通过命令行httpd安装Apache服务,将Apache服务添加到系统服务

httpd -k install -n "Apache2.4"

安装成功后出现 The 'Apache2.4' service is successfully installed.

启动apache服务

httpd -k start
或者
net start Apache2.4

也可以通过bin目录下的ApacheMonitor.exe进行可视化操作,开启apache服务。

Apache中添加PHP

打开Apache/conf/httpd.conf文件,并添加以下配置

LoadModule php7_module "{{可以填入绝对路径}}Apache/php-7.4.24/php7apache2_4.dll"
AddType application/x-httpd-php  .php
#configure the path to php.ini
PHPIniDir "{{php.ini所在目录的绝对路径}}"

Apache修改站点目录,开启虚拟主机配置及目录权限

Options Indexes FollowSymLinks 目录下没有index.html或index.php会显示目录文件

Options FollowSymLinks 禁止显示目录文件

DocumentRoot "${SRVROOT}/htdocs"
#站点文档目录
<Directory "${SRVROOT}/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
#根目录
<Directory />
    AllowOverride none
    Require all denied
</Directory>
#默认主页修改
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
#开启虚拟主机配置文件
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Apache虚拟主机文件配置

同时在windows的hosts文件中配置好主机名,即可访问。

#重新配置站点目录权限,覆盖httpd.conf中的目录权限配置
<Directory "${SRVROOT}/htdocs">
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
#配置多个虚拟主机
<VirtualHost *:80>
    DocumentRoot "${SRVROOT}/htdocs/test1.com"
    ServerName test1.com
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "${SRVROOT}/htdocs/test2.com"
    ServerName test2.com
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

连接数据库,port默认为3306,使用$link变量存储连接令牌

$link = mysqli_connect('localhost','数据库用户名','数据库密码','数据库名',port);

设置数据表字符集

  • @param 数据库连接
  • @param 字符集

mysqli_set_charset($link, 'utf8mb4');

通过sql预处理进行mysql操作

  • 可以用?来代替要传入查询条件的变量

$sql = "SELECT * FROM users WHERE id > ?";

对查询语句进行预处理操作

  • @param 数据库连接
  • @param 查询语句

$stmt = mysqli_stmt_prepare($link, $sql);

进行参数绑定

  • @param 预处理语句
  • @param 传入的数据类型,可以是多个类型,如'iiss',为4个传入变量,分别是int, int, string, string
  • @param 绑定的变量,按顺序,可添加多个变量参数

$id = 3;
mysqli_stmt_bind_param($stmt, 'i', $id);

执行预处理语句

  • @param 预处理语句

mysqli_stmt_execute($stmt);

查询结果如果是增、删、改

  • @param 预处理语句结果

$affected = mysqli_stmt_affected_rows($stmt);
if ($affected > 0){
    echo '操作成功';
}else{
    echo '操作失败';
}

查询结果是获取数据,则返回一个结果对象

  • @param 预处理查询结果

$result = mysqli_stmt_get_result($stmt);

处理查询对象

  • @param 查询结果

$data = mysqli_fetch_all($result);
echo $data;

cookie储存于客户端中,session储存于服务器中。

会话控制

cookie技术

  • 创建cookie

setcookie('name','situ',time()+3600);

'name'是cookie的key,'situ'为值,第三个参数为cookie的有效时间

  • 销毁cookie

setcookie('name','',time()-9999);

只需将第三个参数即cookie的有效时间设置为过期的时间即可

  • cookie的二位数组

setcookie('member[name]','situ',time()+3600);

session技术

session将用户信息存储在服务端,但是在客户端中依旧使用cookie来保存服务端中的sessionID,每次访问服务端时,将sessionID发送至服务端来识别身份。

  • 启动session

//开启session,开启session会话,或者读取已经存在的会话
session_start();

  • 创建session

//设置session
$_SESSION['name'] = 'situ';
$_SESSION['email'] = '123@qq.com';

  • 销毁session

session_start();
session_unset();//Free all session Variables
session_destroy();//销毁一个会话中的所有数据,包括服务端中的session临时文件

  • 销毁客户端中存储sessionID的cookie

注意需要在第4个参数的地方添加默认路径'/',在php.ini中session.cookie_path=/处修改默认值。

setcookie('PHPSESSID','',time()-9999,'/');