标签: PHP

  • PHP7利用openssl实现AES加密解密

    PHP7利用openssl实现AES加密解密

    <?php
    /**
    * PHP AES加密解密.
    * @author 春风 QQ 860646000
    */
    
    $key = 'woaichunfengboke'; //key
    $iv = '0123456789101112'; //iv
    $txt = '春风博客 网址:http://Chunblog.com/ 欢迎您!'; //字符串
    
    /**
    *加密
    **/
    $string_e = base64_encode(openssl_encrypt($txt, 'AES-128-CBC', $key, true, $iv));
    
    /**
    *解密
    **/
    $string_d = openssl_decrypt(base64_decode($string_e), 'AES-128-CBC',$key, true,$iv);
    
    echo '原字符串:',$txt;
    echo "<hr>\n";
    echo '加密后字符串:',$string_e;
    echo "<hr>\n";
    echo '解密后字符串:',$string_d;

     

  • PHP 字符串达到指定长度换行

    PHP 字符串达到指定长度换行

    //达到76个字符换行处理
    $string='erX8ceL7pUopUHZcz7hBXX+340hcJl/IP3DN1qvAxbpWObB5zOFIqLP/GYIYDzc4l/DotGWqIf90NRbaL9RGcWrXXCXkpv/mg2ZxKo6QiZ/+X+4Vff5Zpwe/klYERTOUHTAkHDzt26EULeuvOmimva+a/tOeePAgoNuLMalIHsj6ddLUvDuFag3w52XKbzMCbIaiZ45GIMAkP6l+MHSRtx56G0Ofnicy67I7Ul0g7YxVHMB4V7I6BZKOd5PwP6T06qkeLF+nlj+oT5keAjdNZ2qFEsf4Qf7O+H7GOIz/Boo5MPYNkiU7THN5Xwkk17iweODsSTHGUbcYngNZ8nJpMVKde1bXViWdc7B8gYIA74T8CGSOnKwJU59ZzH7rXIcvELIKAPauCYchh/Yz2hG9sZQKWnfFyw5iEoizofAXwAOX3u4xrMthfaryckz9hZbc/5rT5fYO+i1dz12qoXU3qcjj9SsCDFv9u8qEySwUi+gGBA7k4m8VFcFPex86Psvvc+LbazyQ6s8dW4eXkiop5aZpWcI5cZKjZRmxO+R3LPVi9LI+F8IEUop+IQDqzRq7GRGsL1SZsr63QOqx0GOjYdd/NJCif6Y/bTOKbxDqCbGPTk2rNH9cCloYF38DUxa3BLZSvBKKD6SFCvMJtDj3HRYuGgJ13a5alGN0zGpkA9bVmB/hoPevGkUfdmFt6L6T/w7PinTJ+UqJV1bcqiNeHP3OdOlucBsSvMGgnO85FhotS0I64IzAclj3l84JKAb1SFo9jUNkppOMwbL8kRIdgVsBVKrk3pkYD+y6KoPb18OrgN1aRelhJCUjPMFddzG3myUq4pLrh8KmFQkbNe1lK0lzKfpyIvETZE4SBTHmcaMsJ5p6HM43fFR6YzCaKJb1156nsn55h9n78ayst8Xhz7q1HemSq/1YHQcSV3kSFE2qIUAtgoiDwzYz86Y33KoR+xqb7DiqVWe+Y1Gk1oZ9QcTuJXCBZVpjY0NQAmMDywWPR01zAujBebyGYDIiR00klJA4bE60S4N4iR4CKkq2uRY/Uk0mjHNLHf2olwZgmZDP8ApVKKJ+UfwoZkr7DPFVfvZgjInrkkjjQhbX+CHKND2CTPdSe0IEAp5To4iZery2R4IrB1ahgNVatqXAb/dVNq3tNd9u3QjrhYXad5A28hsV/9w2KOe0xcw5jX5lhFv77YDCcnxzQK/nYyKXhKsfl5aJKGh1Hn3/Ly4k68eioRw+k/v0m6iC/aAFasIc/1E7yapMPoUaQKgow62G69e+RX5mUEYbbp8gfjhuJmMk7iA3Is269hRGG846AN7FrZX6XrsCMYPwWgFvGkzJbmMimUuqlGr0IBuZIXTLQC2rInF5wsjSK9odoY2nwzJvA91Af4FDPEjyXlzJ6uWccV/TEb9iIenlqxmiOZiicVJz4VoWG3h3U0f2wuLJhJK1VEu1VGCPFOUpNdZ3oUFIvBBagXMfcdMLnp2wdQbHxMGSNwjMKD2K0ge80kObuac6XxOAt9fkaUMlBQGdA7w8q2ukRpJwFfijd+Ape3x02F7Shoz7GENstlHuyDUCV6Fx5MtycF69qa7IDaGi6ilu1PDGYFLEkWvfPXTXFH9QJds/hfbjl3fobLHxX02cDisKF7uS3VxiN/nhF+MmH45aK8DVz2ccM/GAB4kzp2xnji5MmFjvtPmnpaax+GGwX/ad3eCICJ6ntM9qTV4Cv1zznNcZQRIRcZpvxBt3W4LjT0uT9blyNoy9seQO2Ye9Dtkd/jlw+OGlpVSxAUAZxE5XA4Q0YFrHHB8t35Kloy848/YVRtlRvrg5oZxLPvc46d/tZ+9cCCWAQkki4wrv8P6+9cqUJJPqh2HTEoRzhWYZ/AQXL1QWlFeFSYuNUJT0q1RY5OKTYGJDk7dIOyB3MGgJccR3ofdG2fm4y8s708Qpn2hLYpa0jPeW7D259UGK/IUHrIM=';
    $string = wordwrap($string,76,PHP_EOL,TRUE);
    echo $string;
    //输出结果
    /**
    erX8ceL7pUopUHZcz7hBXX+340hcJl/IP3DN1qvAxbpWObB5zOFIqLP/GYIYDzc4l/DotGWqIf90
    NRbaL9RGcWrXXCXkpv/mg2ZxKo6QiZ/+X+4Vff5Zpwe/klYERTOUHTAkHDzt26EULeuvOmimva+a
    /tOeePAgoNuLMalIHsj6ddLUvDuFag3w52XKbzMCbIaiZ45GIMAkP6l+MHSRtx56G0Ofnicy67I7
    Ul0g7YxVHMB4V7I6BZKOd5PwP6T06qkeLF+nlj+oT5keAjdNZ2qFEsf4Qf7O+H7GOIz/Boo5MPYN
    kiU7THN5Xwkk17iweODsSTHGUbcYngNZ8nJpMVKde1bXViWdc7B8gYIA74T8CGSOnKwJU59ZzH7r
    XIcvELIKAPauCYchh/Yz2hG9sZQKWnfFyw5iEoizofAXwAOX3u4xrMthfaryckz9hZbc/5rT5fYO
    +i1dz12qoXU3qcjj9SsCDFv9u8qEySwUi+gGBA7k4m8VFcFPex86Psvvc+LbazyQ6s8dW4eXkiop
    5aZpWcI5cZKjZRmxO+R3LPVi9LI+F8IEUop+IQDqzRq7GRGsL1SZsr63QOqx0GOjYdd/NJCif6Y/
    bTOKbxDqCbGPTk2rNH9cCloYF38DUxa3BLZSvBKKD6SFCvMJtDj3HRYuGgJ13a5alGN0zGpkA9bV
    mB/hoPevGkUfdmFt6L6T/w7PinTJ+UqJV1bcqiNeHP3OdOlucBsSvMGgnO85FhotS0I64IzAclj3
    l84JKAb1SFo9jUNkppOMwbL8kRIdgVsBVKrk3pkYD+y6KoPb18OrgN1aRelhJCUjPMFddzG3myUq
    4pLrh8KmFQkbNe1lK0lzKfpyIvETZE4SBTHmcaMsJ5p6HM43fFR6YzCaKJb1156nsn55h9n78ays
    t8Xhz7q1HemSq/1YHQcSV3kSFE2qIUAtgoiDwzYz86Y33KoR+xqb7DiqVWe+Y1Gk1oZ9QcTuJXCB
    ZVpjY0NQAmMDywWPR01zAujBebyGYDIiR00klJA4bE60S4N4iR4CKkq2uRY/Uk0mjHNLHf2olwZg
    mZDP8ApVKKJ+UfwoZkr7DPFVfvZgjInrkkjjQhbX+CHKND2CTPdSe0IEAp5To4iZery2R4IrB1ah
    gNVatqXAb/dVNq3tNd9u3QjrhYXad5A28hsV/9w2KOe0xcw5jX5lhFv77YDCcnxzQK/nYyKXhKsf
    l5aJKGh1Hn3/Ly4k68eioRw+k/v0m6iC/aAFasIc/1E7yapMPoUaQKgow62G69e+RX5mUEYbbp8g
    fjhuJmMk7iA3Is269hRGG846AN7FrZX6XrsCMYPwWgFvGkzJbmMimUuqlGr0IBuZIXTLQC2rInF5
    wsjSK9odoY2nwzJvA91Af4FDPEjyXlzJ6uWccV/TEb9iIenlqxmiOZiicVJz4VoWG3h3U0f2wuLJ
    hJK1VEu1VGCPFOUpNdZ3oUFIvBBagXMfcdMLnp2wdQbHxMGSNwjMKD2K0ge80kObuac6XxOAt9fk
    aUMlBQGdA7w8q2ukRpJwFfijd+Ape3x02F7Shoz7GENstlHuyDUCV6Fx5MtycF69qa7IDaGi6ilu
    1PDGYFLEkWvfPXTXFH9QJds/hfbjl3fobLHxX02cDisKF7uS3VxiN/nhF+MmH45aK8DVz2ccM/GA
    B4kzp2xnji5MmFjvtPmnpaax+GGwX/ad3eCICJ6ntM9qTV4Cv1zznNcZQRIRcZpvxBt3W4LjT0uT
    9blyNoy9seQO2Ye9Dtkd/jlw+OGlpVSxAUAZxE5XA4Q0YFrHHB8t35Kloy848/YVRtlRvrg5oZxL
    Pvc46d/tZ+9cCCWAQkki4wrv8P6+9cqUJJPqh2HTEoRzhWYZ/AQXL1QWlFeFSYuNUJT0q1RY5OKT
    YGJDk7dIOyB3MGgJccR3ofdG2fm4y8s708Qpn2hLYpa0jPeW7D259UGK/IUHrIM=
    **/
    
  • PHP 脚本中的各种运算符

    PHP 算数运算符

    运算符 名称 例子 结果
    + 加法 $x + $y $x 与 $y 求和
    – 减法 $x – $y $x 与 $y 的差数
    * 乘法 $x * $y $x 与 $y 的乘积
    / 除法 $x / $y $x 与 $y 的商数
    % 模数 $x % $y $x 除 $y 的余数

    PHP 赋值运算符

    PHP 赋值运算符用于向变量写值。
    PHP 中基础的赋值运算符是 “=”。这意味着右侧赋值表达式会为左侧运算数设置值。

    赋值 等同于 描述
    x = y x = y 右侧表达式为左侧运算数设置值。
    x += y x = x + y 加
    x -= y x = x – y 减
    x *= y x = x * y 乘
    x /= y x = x / y 除
    x %= y x = x % y 模数

    PHP 字符串运算符

    运算符 名称 例子 结果
    . 串接 $txt1 = “Hello” $txt2 = $txt1 . ” world!” 现在 $txt2 包含 “Hello world!”
    .= 串接赋值 $txt1 = “Hello” $txt1 .= ” world!” 现在 $txt1 包含 “Hello world!”

    PHP 递增/递减运算符

    运算符 名称 描述
    ++$x 前递增 $x 加一递增,然后返回 $x
    $x++ 后递增 返回 $x,然后 $x 加一递增
    –$x 前递减 $x 减一递减,然后返回 $x
    $x– 后递减 返回 $x,然后 $x 减一递减

    PHP 比较运算符

    PHP 比较运算符用于比较两个值(数字或字符串):

    运算符 名称 例子 结果
    == 等于 $x == $y 如果 $x 等于 $y,则返回 true。
    === 全等(完全相同) $x === $y 如果 $x 等于 $y,且它们类型相同,则返回 true。
    != 不等于 $x != $y 如果 $x 不等于 $y,则返回 true。
    <> 不等于 $x <> $y 如果 $x 不等于 $y,则返回 true。
    !== 不全等(完全不同) $x !== $y 如果 $x 不等于 $y,或它们类型不相同,则返回 true。
    > 大于 $x > $y 如果 $x 大于 $y,则返回 true。
    < 小于 $x < $y 如果 $x 小于 $y,则返回 true。
    >= 大于或等于 $x >= $y 如果 $x 大于或者等于 $y,则返回 true.
    <= 小于或等于 $x <= $y 如果 $x 小于或者等于 $y,则返回 true。

    PHP 逻辑运算符

    运算符 名称 例子 结果
    and 与 $x and $y 如果 $x 和 $y 都为 true,则返回 true。
    or 或 $x or $y 如果 $x 和 $y 至少有一个为 true,则返回 true。
    xor 异或 $x xor $y 如果 $x 和 $y 有且仅有一个为 true,则返回 true。
    && 与 $x && $y 如果 $x 和 $y 都为 true,则返回 true。
    || 或 $x || $y 如果 $x 和 $y 至少有一个为 true,则返回 true。
    ! 非 !$x 如果 $x 不为 true,则返回 true。

    PHP 数组运算符

    PHP 数组运算符用于比较数组:

    运算符 名称 例子 结果
    + 联合 $x + $y $x 和 $y 的联合(但不覆盖重复的键)
    == 相等 $x == $y 如果 $x 和 $y 拥有相同的键/值对,则返回 true。
    === 全等 $x === $y 如果 $x 和 $y 拥有相同的键/值对,且顺序相同类型相同,则返回 true。
    != 不相等 $x != $y 如果 $x 不等于 $y,则返回 true。
    <> 不相等 $x <> $y 如果 $x 不等于 $y,则返回 true。
    !== 不全等 $x !== $y 如果 $x 与 $y 完全不同,则返回 true。
  • Centos7.4 编译安装PHP 7.24 并配置开机启动

    Centos7.4 编译安装PHP 7.24 并配置开机启动

    网络资料显示PHP7性能是PHP5的三倍(wordpress 而言),而且代码向下兼容,春风也把PHP5.6更换成了PHP7.2,性能提升明显,而且感觉更节省内存。

    PHP5 PHP7 性能对比图
    PHP7性能多方评测结果图片,来源于网络

    编译安装PHP 7.24
    系统环境:Centos 7.4

    安装依赖

    yum -y install gd-devel zlib-devel libjpeg-devel libpng-devel libiconv-devel freetype-devel libxml2 libxml2-devel openssl openssl-devel curl-devel libxslt-devel libmcrypt-devel mhash
    

    下载PHP7.24

    wget http://cn2.php.net/distributions/php-7.2.4.tar.gz
    

    解压后进入PHP7.24目录

    #解压
    tar -xzvf php-7.2.4.tar.gz
    #进入目录
    cd php-7.2.4
    

    新建用户 我这里使用Tengine的用户

    #新建www用户组
    groupadd www
    #新建Tengine用户
    useradd -g www tengine -s /sbin/nologin
    

    开始编译

    ./configure \
    --prefix=/data/apps/php \
    --with-config-file-path=/data/apps/conf/php/etc \
    --with-mysql-sock=/dev/shm/mysql.sock \
    --enable-fpm \
    --with-fpm-user=tengine  \
    --with-fpm-group=www \
    --enable-inline-optimization \
    --disable-debug \
    --disable-rpath \
    --enable-shared  \
    --enable-soap \
    --with-libxml-dir \
    --with-xmlrpc \
    --with-openssl \
    --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-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
    

    安装

    make && make install
    

    更改PHP安装目录所属用户 复制配置文件

    #新建配置文件目录
    mkdir -p data/apps/conf/php/etc/php-fpm.d
    #复制配置文件
    cp -rf /data/apps/php/etc/* /data/apps/conf/php/etc
    cp /root/php-7.2.4/php.ini* /data/apps/php/etc/
    #到安装目录
    cd /data/apps/conf/php/etc
    #把php.ini-production复制为php.ini
    cp php.ini-production php.ini
    #把php-fpm.conf.default复制为php-fpm.conf
    cp php-fpm.conf.default  php-fpm.conf
    #把php-fpm.d/www.conf.default复制为php-fpm.d/www.conf
    cp php-fpm.d/www.conf.default php-fpm.d/www.conf
    #更改PHP安装目录所属用户
    chown -R tengine:www /data/apps/php /data/apps/conf/php
    

    配置php.ini

    # 字符集UTF-8
    default_charset = "UTF-8"
    # 设置PHP的扩展库路径,默认被注释了。
    extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/"
    #添加opcache扩展
    zend_extension=opcache.so
    # 设置PHP的时区
    date.timezone = PRC
    # 开启opcache,默认是0
    [opcache]
    opcache.enable=1
    

    配置php-fpm.d目录下www.conf

    ; 设置用户和用户组
    user = tengine
    group = www
    ; 下面是默认值,如果PHP Nginx在一台服务器不建议使用 我这里注释掉
    ; listen = 127.0.0.1:9000
    ; sock目录改为/dev/shm物理硬件内存 读写速度比硬盘快N倍
    listen = /dev/shm/php-fpm.sock
    

    保存配置检验配置是否正确

    /data/apps/php/sbin/php-fpm -t
    

    添加环境变量

    #编辑/etc/profile
    vim /etc/profile
    #在尾部加入
    export PATH=/data/apps/php/bin:/data/apps/php/sbin
    

    启动

    /data/apps/php/sbin/php-fpm
    

    让tengine或Nginx 支持PHP

    编辑nginx.conf更改为以下内容。

            #PHP模块
            location ~ \.php$ {
                fastcgi_pass   unix:/dev/shm/php-fpm.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }

    创建开机启动脚本

    vim /etc/init.d/php-fpm
    

    写入以下内容

    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides:          php-fpm
    # Required-Start:    $remote_fs $network
    # Required-Stop:     $remote_fs $network
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: starts php-fpm
    # Description:       starts the PHP FastCGI Process Manager daemon
    ### END INIT INFO
    
    prefix=/data/apps/php
    exec_prefix=${prefix}
    
    php_fpm_BIN=${exec_prefix}/sbin/php-fpm
    php_fpm_CONF=${prefix}/etc/php-fpm.conf
    php_fpm_PID=${prefix}/var/run/php-fpm.pid
    
    
    php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"
    
    
    wait_for_pid () {
        try=0
    
        while test $try -lt 35 ; do
    
            case "$1" in
                'created')
                if [ -f "$2" ] ; then
                    try=''
                    break
                fi
                ;;
    
                'removed')
                if [ ! -f "$2" ] ; then
                    try=''
                    break
                fi
                ;;
            esac
    
            echo -n .
            try=`expr $try + 1`
            sleep 1
    
        done
    
    }
    
    case "$1" in
        start)
            echo -n "Starting php-fpm "
    
            $php_fpm_BIN --daemonize $php_opts
    
            if [ "$?" != 0 ] ; then
                echo " failed"
                exit 1
            fi
    
            wait_for_pid created $php_fpm_PID
    
            if [ -n "$try" ] ; then
                echo " failed"
                exit 1
            else
                echo " done"
            fi
        ;;
    
        stop)
            echo -n "Gracefully shutting down php-fpm "
    
            if [ ! -r $php_fpm_PID ] ; then
                echo "warning, no pid file found - php-fpm is not running ?"
                exit 1
            fi
    
            kill -QUIT `cat $php_fpm_PID`
    
            wait_for_pid removed $php_fpm_PID
    
            if [ -n "$try" ] ; then
                echo " failed. Use force-quit"
                exit 1
            else
                echo " done"
            fi
        ;;
    
        status)
            if [ ! -r $php_fpm_PID ] ; then
                echo "php-fpm is stopped"
                exit 0
            fi
    
            PID=`cat $php_fpm_PID`
            if ps -p $PID | grep -q $PID; then
                echo "php-fpm (pid $PID) is running..."
            else
                echo "php-fpm dead but pid file exists"
            fi
        ;;
    
        force-quit)
            echo -n "Terminating php-fpm "
    
            if [ ! -r $php_fpm_PID ] ; then
                echo "warning, no pid file found - php-fpm is not running ?"
                exit 1
            fi
    
            kill -TERM `cat $php_fpm_PID`
    
            wait_for_pid removed $php_fpm_PID
    
            if [ -n "$try" ] ; then
                echo " failed"
                exit 1
            else
                echo " done"
            fi
        ;;
    
        restart)
            $0 stop
            $0 start
        ;;
    
        reload)
    
            echo -n "Reload service php-fpm "
    
            if [ ! -r $php_fpm_PID ] ; then
                echo "warning, no pid file found - php-fpm is not running ?"
                exit 1
            fi
    
            kill -USR2 `cat $php_fpm_PID`
    
            echo " done"
        ;;
    
        *)
            echo "Usage: $0 {start|stop|force-quit|restart|reload|status}"
            exit 1
        ;;
    
    esac
    

    把php-fpm加入服务 设置为启动

    # 给php-fpm可执行权限
    chmod +x /etc/init.d/php-fpm
    # php-fpm加入服务
    chkconfig --add php-fpm
    # php-fpm 设置为开机启动
    chkconfig php-fpm on
    # 查看是否开机启动 2:no 3:no 4:no级别下为启动
    chkconfig --list php-fpm
    php-fpm         0:off   1:off   2:on    3:on    4:on    5:on    6:off
    

    重启、启动、停止php-fpm命令

    # 启动
    service php-fpm start
    # 关闭
    service php-fpm stop
    # 重启
    service php-fpm restart
    # 重载配置文件
    service php-fpm reload
    
  • Centos7 nginx php 启动关闭命令

    php-fpm 启动、停止、重启

    启动
    systemctl start php-fpm
    停止
    systemctl stop php-fpm
    重启
    systemctl restart php-fpm
    

    Nginx命令

    #启动nginx服务
    systemctl start nginx.service
    #停止nginx服务
    systemctl stop nginx.service
    #重启nginx服务
    systemctl restart nginx.service
    #重新读取nginx配置
    systemctl reload nginx.service
    也可以这样
    nginx -s stop    #停止服务 
    nginx -s quit    #退出服务 
    nginx -s reopen    #重新打开日志文件 
    nginx -s reload    #重新加载配置文件
    
  • PHP 模拟post进行url请求 并输出返回内容

         /**
         * 模拟post进行url请求
         * @param string $url
         * @param string $param
         */
        function request_post($url = '', $param = '') {
            if (empty($url) || empty($param)) {
                return false;
            }
            
            $postUrl = $url;
            $curlPost = $param;
            $ch = curl_init();//初始化curl
            curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页
            curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
            curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
            curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
            $data = curl_exec($ch);//运行curl
            curl_close($ch);
            
            return $data;
        }

     

  • 获取URL跳转后的真实URL

    获取文件或跳转后的真实URL地址
    第一种方法

    function getrealurl($url){
    $header = get_headers($url,1);
    if (strpos($header[0],'301') || strpos($header[0],'302')) {
        if(is_array($header['Location'])) {
            return $header['Location'][count($header['Location'])-1];
        }else{
            return $header['Location'];
        }
    }else {
        return $url;
    }
    }
    //使用方法 
    echo getrealurl($url);
    

    第二种方法CURL

    function curl_post_302($url,$data=null) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 获取转向后的内容 
        $data = curl_exec($ch);
        $Headers = curl_getinfo($ch); 
        curl_close($ch);
        if($data != $Headers){ 
            return $Headers["url"]; 
            }else{
                return false;
            }
    }
    //使用方法
    echo curl_post_302($url);