PHP

  • 只读属性

    1 只读属性简介只读属性的声明方式类似于普通属性,但需要使用 readonly 关键字。2 只读属性例子class Point { public readonly float $x; public readonly float $y; public function __construct(float $x, float $y) { $this->x = $x; $this->y = $y; }}$point = new Point(3.5, 2.8);echo $point->x; // 输出: 3.5echo $point->y; // 输出: 2.8// 下面的尝

  • PHPStudy安装PHP8.3

    1 下载PHP地址:https://windows.php.net/download/2 安装PHP1)首先,解压下载好的php-8.3.9-nts-Win32-vs16-x64压缩包,然后重命名为php8.3.9nts,接着将整个文件夹复制粘贴到PHPStudy安装目录下的phpstudy_pro\Extensions\php目录下,如下:2)接着,打开php8.3.9nts文件夹,然后将php.ini-development文件,复制一个,然后修改为php.ini文件,如下:3)接着,修改为php.ini文件中的extension_dir的值修改为php8.3.9nts文件夹下的ext目录

  • 截取文章内容中指定长度的字符内容

    /** * 截取文章内容中指定长度的字符内容 * @param string $text 文章内容 * @param string $length 要截取的字符个数 * return string 返回截取后的字符内容 */ public function truncateText($text, $length=100) {     // 去除所有HTML标签和属性     $text = strip_tags($text); $text = str_replace('\n', '', $text); $text

  • php html转word的最简单方法

    1 原理<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">2 优点可以加图片可以支持class样式可以支持行内样式简单,实现简单3 案例<?php/************************************************************** @Description: 使用PHP将html转word** @Au

  • PHP过滤移除Emoji表情

    //过滤emoji表情的函数function cccitu_emoji($str) { $str = preg_replace_callback('/./u', function (array $match) { return strlen($match[0]) >= 4 ? '' : $match[0]; }, $str); return $str;} //测试过滤效果$emoji='玩机,大学。CCCiTU';echo cccitu_emoji($emoji);//玩机,大学。CCCiTU

  • 海豚PHP扩展api接口开发

    1 海豚PHP简介海豚PHP尽管是一套基于ThinkPHP5.1开发的一套框架,但是在跟ThinkPHP还是存在不少差异,比如其模块的目录结构。2 海豚PHP接口步骤1:把public目录下的admin.php文件复制一份,然后改名为api.php步骤2:接着,修改【根目录/public/api.php】文件内容,如下:下面的黄色内容即为修改内容<?php// +----------------------------------------------------------------------// | 海豚PHP框架 [ DolphinPHP ]// +-------------

  • chatGpt-3.5-turbo php SSE 流数据丝滑体验AI

    <?php//不压缩6KB不到单文件,150行PHP+html+js+css代码实现网页版chatgpt打字效果(sse流式消息)//error_reporting(0); //打开报错:去行首双斜杠$webtitle = "PHP+sse ChatgptAPI 流式信息问答系统"; //网站标题$tiaojian = "问题"; //查询条件填列标题$dd = date("YmdHis");//apiKey: https://platform.openai.com/account/api-keys API获取地址$apiKey = "sk-***"; //修改为你的API—KEY$UR

  • php如何访问chatgpt api接口流式输出

    <?php$ch = curl_init();curl_setopt($ch, CURLOPT_URL, "https://api.openai.com/v1/chat/completions");curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$messages = [["role" => "system", "content" => "你是一个AI助手chatai"]];$messages[] = ["role" => "user", "content" => "你好"];$_postobj = array("model

  • php的curl如何以steam流的方式请求chatgpt接口

    $ch = curl_init();$url = 'https://api.openai.com/v1/completions';$data = array('prompt' => 'Hello','max_tokens' => 5,'n' => 1,'stop' => '');$json_data = json_encode($data);$output_file = fopen('output.txt', 'w');curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POST, 1);curl_s

  • PHP攻击

    1 SQL注入1)遭受SQL注入攻击的原因:拼接SQL语句时,没有对用户输入的数据进行特殊字符转义,导致用户输入数据中的特殊符号(如单引号)被当成SQL语句中的符号,破坏了原有SQL语句的含义。2)防御SQL注入的办法(1)调用mysqli_real_escape_string()函数对用户输入的数据进行转义,再拼接到SQL中。(2)使用MySQLi扩展提供的预处理和参数绑定机制,将系统要执行的SQL语句和用户输入的数据分离,从而在根本上解决SQL注入的问题。2 XSS攻击1)遭受XSS攻击的原因:没有对用户输入的数据进行过滤,就直接输出到HTML页面中。如果用户输入的数据中包含HTML标签和

  • MySQLi新闻分页案例

    1 分页简介当列表中的记录非常多时,为了方便查询,使用分页功能。2 分页效果3 分页原理利用LIMIT关键字限制SELECT语句查询出的数据SELECT * FROM news LIMIT 0,3; # 查询第1页的3条数据SELECT * FROM news LIMIT 3,3; # 查询第2页的3条数据 # 第1个参数与页码之间存在一定的数学关系。# 第2个参数表示每次查询的最大条数。# LIMIT第1个参数计算方式:LIMIT 第1个参数 = (页码 - 1) * 每页查询的条数4 开发思路定义变量:定义页码和查询条数变量。查询总记录数:查询新闻表中的总记录数,计算出总页数。计算LIMI

  • MySQLi查看新闻案例

    1 开发思路添加链接:在新闻列表页中,给每条新闻的标题添加链接。接收id:接收删除新闻id,判断id有效性。获取新闻:根据id查询新闻信息。展示新闻:创建新闻详情页,展示新闻详细信息。2 具体实现1)添加链接:在新闻列表页中,给每条新闻的标题添加链接<a href="detail.php?id=<?php echo $n['id'];?>"> <?php echo $n['title'];?></a>2) 接收id:接收删除新闻id,判断id有效性<?php$id = $_GET['id'] ?? 0;if (!$id) { header(

  • MySQLi删除新闻案例

    1 开发思路添加链接:给“删除”按钮添加链接。接收id:接收删除新闻id,判断id有效性。删除新闻:根据id删除新闻。2 具体实现1)添加链接:给“删除”按钮添加链接

  • MySQLi编辑新闻案例

    1 开发思路获取新闻:给“编辑”按钮添加链接,接收编辑新闻id,根据id获取新闻信息。显示新闻:在编辑新闻的表单中显示新闻。接收新闻:修改新闻后,接收编辑后的新闻信息并判断。更新新闻:根据id更新新闻。2 具体实现1)获取新闻:给“编辑”按钮添加链接<a href="edit.php?id=<?php echo $n['id'];?>">编辑</a>2)获取新闻:接收编辑新闻id$id = $_GET['id'] ?? 0;if (!$id) { header("Refresh:3;url={$_SERVER['HTTP_REFERER']}"); echo

  • MySQLi新闻列表案例

    1 开发思路查询数据:从新闻数据表中的查询全部数据。显示内容:在模板中显示新闻数据。2 新闻列表1)查询数据:创建index.php查询新闻数据include 'Sql.php';$conn = connect('root', '123456', 'news', $error);if (!$conn) { exit($error);}// 新闻列表$sql = 'SELECT n.*,a.name FROM news n LEFT JOIN author a ON n.a_id=a.id';$news = read($conn, $sql, $error, true);include 'add

  • MySQLi增删改查封装函数

    1 实现思路数据库连接认证:将连接认证,选择数据库和设置字符集进行封装。封装执行SQL语句函数:将增加、删除、修改、查询的SQL传入函数中,执行并返回结果。封装自动更新函数:将要更新的数据和主键id传入函数中,自动组装SQL进行更新。封装查询数据函数:根据传入的SQL语句或指定的条件去查询一条记录或者多条记录。2 实现代码<?php// 数据库连接认证:将连接认证,选择数据库和设置字符集进行封装;function connect($user, $pass, $dbname, &$error, $host = 'localhost', $port = '3306', $charse

  • MySQLi实现新闻的基本操作

    1 开发思路创建表单:编写添加新闻页面。查询作者:将数据表author中的信息读取出来。显示作者:在添加新闻表单中添加下拉列表框,显示作者信息。保存新闻:当用户在添加新闻页面提交表单后,向news表插入数据。2 编写添加新闻页面<div class="add-news col-md-8 col-md-offset-2"> <h1>添加新闻</h1> <form action="insert.php" method="post"> <div class="form-group"> <label for="news_title"&g

  • 多文件上传

    1 前端<form action="表单提交地址" method="post" enctype="multipart/form-data"> 个人相册: <input type="file" name="photo[]" /> <input type="file" name="photo[]" /> <input type="file" name="photo[]" /> <input type="submit" value="上传" /></form>2 后端$len = count($_FILES['photo']['

  • 单文件上传

    1 前端<form action="表单提交地址" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="上传" /></form>2 后端if(isset($_FILES['upload'])) { if($_FILES['upload']['error'] !== UPLOAD_ERR_OK){ exit('上传失败!'); } $save = './uploads/' . time(