-

php技巧使用介绍(图文教程)

PHP是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。

PHP下载
在浏览器中输入:https://windows.php.net/download#php-8.1,选择下载window系统下php8.1版本

下载C++支持最新版本https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-170 在phpinfo()里查看到mysqli,表示连接mysql数据库驱动存在

php.ini配置
php开启短标签:php.ini >> short_open_tag = On
php显示错误提示:php.ini >> display_errors = On
PHP变量可不定义设置:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
mysqli 是一个改进的 MySQL 扩展。:php.ini >> extension=mysqli
程序运行最大时间(单位秒):php.ini >> max_execution_time = 300

IIS安装PHP
进行cmd>>inetmgr>>通过Web 平台安装相应程序

composer安装

Composer 是 PHP5.3以上 的一个依赖管理工具。它允许你声明项目所依赖的代码库,它会在你的项目中为你安装他们。
教程:可直接下载composer.exe文件安装 https://doc.thinkphp.cn/v8_0/setup.html

进入php目录 >> C:\Program Files\iis express\PHP\v7.2 >> 输入cmd >>
第一步:php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
第二步:php composer-setup.php
第三步:php -r "unlink('composer-setup.php');"
第四步:在php目录里创建一个文件为composer.bat,文件里内容为 @php "%~dp0composer.phar" %*
输入在cmd里输入 composer 就可以

注意:如果php安装在C盘,需要以管理员方式打开cmd,然后使用 cd C:\Program Files\iis express\PHP\v7.2 进入php目录
php.ini文件里设置:extension=openssl
extension_dir = "ext"
extension=fileinfo
extension=curl
extension=pdo_mysql
extension=gd
extension=mbstring
composer.phar 移动到 C:\Program Files\iis express\PHP\8.1\ 目录下
更新更新版本:cmd >> composer self-update
换国内源:cmd >> composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
查看源地址:cmd >> composer config -g -l

运行JS代码

php运行js代码有两种方法,一种是node方式,另一种是v8js方式,这种方式暂时没有测试通过
node -e 运行js内容测试通过,但是会有一些出错,并且返回的是字符串类型的文本
node方法代码
<?php
// JavaScript脚本
$script = "console.log('Hello, World!');";
$script =file_get_contents('1.js');

$script = str_replace('"', '\"', $script);
$script =  str_replace("\n", ";", $script);


// 使用exec函数执行JavaScript脚本
$result = exec("node -e \"" . $script . "\"");

// 输出结果
echo $result;
echo(gettype($result))
?>
        
js文件 1.js
var a="abc";
console.log("'a"+a+"a'");
        

使用xiyueta.js

在 php 里调用 xiyueta.js库,使用 asp.xiyueta.min.js 文件,它是把代码写到一个js文件里,然后使用shell_exec来调用node来运行js文件
在debug目录里导入xiyueta库
<?php 
// 指定要写入的文件路径
$file_path = "debug/example.js";
// 要写入文件的数据
$data= "const xiyueta = require('xiyueta') \n";
$data.="xiyueta.load('

qq:313801120

') \n"; $data.=" console.log( xiyueta('p').text() ) \n"; // 以写入模式打开文件 $file = fopen($file_path, "w") or die("无法打开文件!"); // 将数据写入文件 fwrite($file, $data); // 关闭文件 fclose($file); $output=shell_exec("node ".$file_path); echo($output);

php连接SqlServer

php里连接sqlserver数据库
下载ODBC windows驱动,网址:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=36434
下载php 连接sqlserver 的.dll,网址:https://learn.microsoft.com/zh-cn/sql/connect/php/release-notes-php-sql-driver?view=sql-server-ver15#previous-releases

1.下载ODBC windows驱动 >> 点击安装 >> next >>完成 2.下载php 连接sqlserver 的.dll 对应php版本的驱动复制到ext里 修改php.ini配置文件,把dll加入到里面
extension=php_pdo_sqlsrv_72_nts_x86.dll
extension=php_sqlsrv_72_nts_x86.dll
extension=php_pdo_sqlsrv_72_nts_x64.dll
extension=php_sqlsrv_72_nts_x64.dll phpinfo()里看到有pdo_sqlite,表示sqlserver驱动安装有了 php连接sqlserver数据库,和打开表

<?php 
$serverName = "localhost";
$connectionInfo = array( "Database"=>"webdata", "UID"=>"sa", "PWD"=>"youpass");
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true));
}
if( $conn === false ) {
    echo "无法连接。";
    die(var_dump(sqlsrv_errors(), true));
}


$sql = "SELECT * FROM xy_webcolumn";
$res = sqlsrv_query($conn, $sql);
if ($res === false) {
    die(print_r(sqlsrv_errors(), true));
}
    while ($row = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC)) {
    echo "ID: " . $row["id"] . " - columntype: " . $row["columntype"] . "<br>";
}

php案例

登录并获得信息
<?php
/**
 * 网站数据采集示例
 * 这个脚本演示了如何登录网站并获取页面内容
 */

// 引入Curl_HTTP_Client类
require_once('curl_http.php');

// 创建一个新的Curl_HTTP_Client实例 - 禁用调试模式
$curl = new Curl_HTTP_Client(false);

// 设置浏览器代理参数数组 - 模拟不同的浏览器访问
$useragent = array(
    'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)',  // IE8浏览器
    'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)',  // IE7浏览器
    'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',  // IE6浏览器
    'Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1',  // Firefox浏览器
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36'  // Chrome浏览器
);
// shuffle函数会随机打乱数组顺序
shuffle($useragent);
// 取打乱后数组的第一个元素作为本次请求使用的浏览器标识
$agent = $useragent[0];

// 设置HTTP请求头信息
$headers = array(
    'X-Apple-Tz: 0',                // 设置时区
    'X-Apple-Store-Front: 143444,12',  // Apple相关参数
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',  // 接受的内容类型
    'Accept-Encoding: gzip, deflate',  // 接受的编码方式
    'Accept-Language: en-US,en;q=0.5',  // 接受的语言
    'Cache-Control: no-cache',  // 缓存控制
    'Content-Type: application/x-www-form-urlencoded; charset=utf-8',  // 内容类型和字符集
    'User-Agent: ' . $agent,  // 使用随机选择的浏览器标识
    'X-MicrosoftAjax: Delta=true',  // Ajax请求标识
    'Origin: http://qqshow',  // 请求来源
    'Host: qqshow'  // 目标主机
);

// 设置cookie文件以保持会话状态
$cookie_file = tempnam(sys_get_temp_dir(), 'curl_cookie_');
$curl->store_cookies($cookie_file);

// 设置请求头和浏览器标识
$curl->set_header($headers);
$curl->set_user_agent($agent);

// 设置登录URL和引用页
$login_url = "http://qqshow/3gxl/login.asp";
$curl->set_referrer($login_url);

// 获取登录页面
$login_page = $curl->fetch_url($login_url);

if ($login_page) {
    // 设置登录POST数据
    $post_data = array(
        'act' => 'checkLogin',
        'logname' => '2233',
        'logpass' => '123456' 
    );

    // 发送登录请求
    $login_result = $curl->send_post_data($login_url, $post_data);

    // 检查是否登录成功
    if ($login_result && (strpos($login_result, "登录成功") !== false || 
        strpos($login_result, "success") !== false || 
        strpos($login_result, "欢迎您") !== false)) {
        
        // 获取用户信息页面
        $user_result = $curl->fetch_url("http://qqshow/3gxl/about.asp");
        
        // 使用正则表达式提取金币值
        if ($user_result && preg_match('/金币:([0-9亿\.万]+)/u', $user_result, $matches)) {
            echo '金币为:'.$matches[1];
        }
    } else {
        echo "登录失败";
    }
}

// 清理临时cookie文件
if (file_exists($cookie_file)) {
    unlink($cookie_file);
}

// 关闭curl连接
$curl->close();
?>