PHP

分类下相关文章

Joomla 收到大量垃圾询盘信息,在 php 代码中屏蔽关键词

Joomla 网站收到了大量的垃圾询盘信息,几乎一秒一条,即浪费精力去清理,又占用了处理线程,拖慢了网站速度。 所以必须在发送邮件前,就过滤掉。 修改哪个代码文件 太久不看,已经忘记了需要修改哪个代码文件。但是好在记住了一个变量名 emailBody, 这样就定位到了: > grep emailBody -r components/ components/com_sppagebuilder/addons/form_builder/site.php: $emailBody = ''; 先备份 不想在线上用 git 管理,担心有漏洞,还是简单粗暴的使用 cp 备份 ...

阅读全文...

Joomla 如何获取当前页面的 URL

例如,需要在 Joomla 提交询盘信息时,在邮件中附加上当前页面的 URL 信息。那么就需要能够获取到请求页面的链接字符串。 获取当前页面的 URL use Joomla\CMS\Uri\Uri; $uri = Uri::getInstance(); $url = $uri->toString(); 或者: use Joomla\CMS\Uri\Uri; $uri = Uri::getInstance(); echo "Page URI is: " . $uri->toString() . "<br>"; 打印调试日志 u ...

阅读全文...

Joomla 如何记录日志

在修改 Joomla 代码时,为了方便调试,经常要打印日志。下面记录一下,如何在 Joomla 中记录日志。 示例代码 JLog::add('my error message', JLog::ERROR, 'zhongwei-debug'); 参数说明 第一个参数:日志内容 第二个参数:日志级别,包含 JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG 第三个参数:日志分类。方便过滤日志的,或者日志分组。类似 Andro ...

阅读全文...

Joomla 5 SP Page Builder Pro 添加 Captcha V2 验证组件

在升级 Joomla 5 之后,发现 SP Page Builder Pro 的询盘表单 Contact Form 无法添加之前的 Captcha 组件。 在使用了 Github 上最新的 Captcha V3 组件之后,测试还是无法使用。总是提示 Captcha 插件没有启用或激活。 而实际上是已经启动并激活的。 换用了 Invisible 版本,也不行,因为即便组件没有加载,或者验证不通过,也依然可以提交询盘信息。 从 Joomla 的官方论坛看,是 SP Page Builder Pro 尚不支持。 但是还是找到了一个解决方案,参考链接 https://dj-extensions.com ...

阅读全文...

Joomla 安装 EasyBlog 插件后,博客页面报错无法打开

Joomla 迁移到新服务器后,EasyBlog 相关的页面,报 500 错误无法打开。但是非 EasyBlog 的页面,例如产品介绍相关的页面,是可以正常显示的。 报错信息 Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER' 系统环境 MySQL 8.0.37 PHP 8.2 NO_AUTO_CREATE_USER 是什么 要解决问题,首先要明白问题是什么。如果不了解具体错误,很容易被网上的解决方案误导。 Previously, before NO_AUTO_CREATE_USER was d ...

阅读全文...

ubuntu 20.04 apt 安装 php 7.0

由于 ubuntu 20.04 默认源里没有 php 7.0,需要手动添加源。 Unable to locate package php7.0 $ sudo apt install php7.0 Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package php7.0 添加 php 7.0 源的方法: sudo apt install software-properties-common sudo apt update ...

阅读全文...

安装最新版本的 composer

用 ubuntu apt 安装的 composer 版本过低,所以不推荐: > sudo apt install composer > composer -V Composer 1.6.3 2018-01-31 16:28:17 如果去官方下载 https://getcomposer.org/download/,会发现一直无法访问。。。 推荐使用国内阿里云的镜像,https://developer.aliyun.com/composer 下载完成后,执行 > sudo mv composer.phar /usr/local/bin/composer > compose ...

阅读全文...

Ubuntu 18.04 安装 PHP 7.4.8

为了测试升级 Laravel 6,所以把本地 Windows WSL Ubuntu18.04 开发环境的 PHP 版本升级一下。实际是全新安装,这个新买的笔记本居然一直没有装 PHP。 apt install PHP 7.4 sudo apt-get update sudo apt -y install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt -y install php7.4 验证版本 安装成功之后,确认一下版本 php -v PHP 7.4 ...

阅读全文...

PHP 表达式前加 at 符号 @ 的作用是什么

今天在一段 PHP 代码中看到一个诡异的写法,即在一个变量名的美元符号前加了个 at 符号 @。 官方文档 https://www.php.net/manual/zh/language.operators.errorcontrol.php PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。 从官方文档,这段代码的对于 @ 符号的使用是错误的。。。 at 符号的使用场景测试 不加 @ 符号: $file = file('non_existent_file'); $name = "keyword at in PHP&q ...

阅读全文...

PHP 5.3 explode 结果取值报错:syntax error, unexpected '['

今天在线上更新代码后报错: syntax error, unexpected '[' 报错行是: $category_id = explode("-", $category_id)[0]; 测试环境 PHP 5.3 ThinkPHP 3.2.3 修复方法 $items = explode("-", $category_id); $category_id = $items[0]; ...

阅读全文...

php foreach 数组添加新属性

之前没注意这个问题,今天发现通过 foreach 遍历数组时,新增的属性并没有添加到数组中。 foreach ($tags as $tag) { $tag["name"] = "new name"; } 解决方法一 使用 array item 引用 foreach ($tags as &$tag) { $tag["name"] = "new name"; } 解决方法二 foreach ($tags as $index => $tag) { $tags[$index][&q ...

阅读全文...

PHP 发送 HTTP 请求

在不使用三方库的情况下,例如 guzzle,PHP 发送 HTTP 请求。 方法一 curl $url = "https://api.domain.com/test"; $ch = curl_init(); $timeout = 10; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $rsp = curl_exec($ch); curl_close($ch ...

阅读全文...

PHP 分割字符串时指定多个分隔符

在使用 PHP Laravel 实现博客文章打多标签的功能,输入时标签以英文逗号为分隔符。 但是 PHP 的字符串分割函数 explode 只支持单个分隔符: $tags = explode(",", $tags_str); 这样做不能兼容中文逗号,因为在输入中文标签时很容易误输入中文逗号。 所以使用正则的方式来分割: >>> $tags_str = "php, Kotlin, 安卓, 网站"; => "php, Kotlin, 安卓, 网站" >>> preg_split( "/ ...

阅读全文...

PHP 获取请求的域名及协议

实在不想查看 ThinkPHP 的文档,所以就使用纯 PHP 的实现,获取请求的域名及协议。 function site_url() { $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; $domainName = $_SERVER['HTTP_HOST']; return $protocol . $domainName; ...

阅读全文...

重定向跳转引起的 PHP $_Post 和 php://input 数据为空

今天在 ThinkPHP 下测试获取 HTTP 请求 POST 数据时,发现无论怎么测试,都获取不到 POST 的数据。 $_POST 为空 php://input 也为空 但是在另外一台服务器上测试,却是正常可以获取到的。 查了半天没有找到问题,好不容易找到一个 Google 的结果,发现确实由于链接跳转引起的问题。 例如: 我测试时,是向 http://www.sunzhongwei.com/api 发送 POST 请求,而实际上 http 的请求会我设置的 nginx 自动重定向到 https 的链接 https://www.sunzhongwei.com/api。这种情况下,ph ...

阅读全文...