首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏程序生涯

    PHP使用Twig

    Twig是开源框架Symfony2的默认模版引擎,主页是http://twig.sensiolabs.org/ 当前版本为Stable: 1.12.1,其他模版引擎能做的它都能做,这里主要整理下使用Twig /Twig-1.12.1/lib/Twig/Autoloader.php'; Twig_Autoloader::register(); $loader = new Twig_Loader_Filesystem /view/twig/templates'); $twig = new Twig_Environment($loader, array( 'cache' => '. /view/twig/templates_c', 'auto_reload' => true )); $twig->display('index.html', array('name' => Twig的具体语法可查看Twig模版语言入门,这种写模版的方式确实很让人喜欢,好像Smarty3也支持该功能了,有时间也看看。

    2.3K20发布于 2020-08-14
  • 探索Twig:优雅、灵活的PHP模板引擎

    PHP Twig 是一种流行的模板引擎,它为 PHP 开发者提供了一个强大而灵活的工具,用于构建动态的网页应用程序。本节将介绍 PHP Twig 的基本概念以及选择 PHP Twig 的理由。 2.2 安装 Twig除了使用 Composer 安装 Twig 外,你也可以直接从 Twig 的官方网站 下载 Twig 的压缩包,并手动安装到你的项目中。 Twig基础知识Twig 提供了清晰简洁的模板语法,使得开发者可以轻松构建动态网页。本节将介绍 Twig 的基础知识,包括模板语法、变量和过滤器以及控制结构。 $twig->enableDebug();7.2 Twig缓存和性能优化除了调试技巧外,Twig 还提供了一些缓存和性能优化的功能,帮助提高模板的加载速度和性能:模板缓存: Twig 可以将已经编译好的模板缓存起来 $twig->load('common/header.html.twig');$twig->load('common/footer.html.twig');通过合理地使用这些缓存和性能优化的功能,可以有效提高

    3.2K00编辑于 2024-05-04
  • 来自专栏caoayu的分享

    制作一个PHP简易框架(六)-- 视图模板

    使用 Twig 开发包来提供视图的功能。项目地址 : https://github.com/twigphp/Twig 。 安装 1 composer require "twig/twig:^3.0" 使用 在 web.php 文件中进行测试 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /resources/views'; $loader = new \Twig\Loader\FilesystemLoader($view_path); $twig = new \Twig \Environment($loader, [ 'cache' => false, ]); $content = $twig->render('index.twig', /resources/views'; $loader = new \Twig\Loader\FilesystemLoader($view_path); $twig = new \Twig

    1.2K20发布于 2021-03-01
  • 来自专栏开源技术小栈

    使用 PHP 和 Web 技术(而不是 Electron)构建桌面应用程序

    环境要求:PHP 8.4+ 开启 ext-ffi 扩展 案例 您可以在 Web Components 中使用 Twig。为此,您需要遵循几个简单的步骤。 1. 在您的项目中安装 Twig 组件: composer require twig/twig 2. 创建 Twig 组件 之后,您应该创建一个支持 twig 渲染的组件。 __construct( protected readonly Environment $twig, ReactiveContext $ctx, WebView ; publicfunction __construct() { $this->twig = new Environment(new ArrayLoader()); Twig 组件 现在我们可以创建自定义 twig 组件了!

    32400编辑于 2025-07-12
  • 来自专栏Andromeda的专栏

    SSTI模板注入

    /lib/Twig/Autoloader.php'); Twig_Autoloader::register(true); $twig = new Twig_Environment(new Twig_Loader_String()); $output = $twig->render("Hello {{name}}", array("name" =>$_GET["name"])); /lib/Twig/Autoloader.php'); Twig_Autoloader::register(true); $twig = new Twig_Environment(new Twig_Loader_String()); $output = $twig->render("Hello {$_GET['name']}"); // 将用户输入作为模版内容的一部分

    1.7K30编辑于 2022-10-27
  • 来自专栏LukaChen Blog

    composer install error

    Problem 1 - Installation request for twig/twig v2.6.0 -> satisfiable by twig/twig[v2.6.0]. - twig/twig

    45110编辑于 2023-10-22
  • 来自专栏技术猫屋

    PHPmyadmin SQL injection in Designer feature 研究(CVE-2019-18622)

    ,raw 的作用就是让数据在 autoescape 过滤器里失效,可以安装一个 twig 模板看看实例。 composer require "twig/twig:^3.0" 运行命令后该目录下会生成2个文件:composer.json、composer.lock以及一个目录vendor 然后在同目录下创建文件夹 twig = new \Twig\Environment($loader, [ 'cache' => '/Library/WebServer/Documents/twig/tmp', ]); echo $twig->render('index.html.twig', ['name' => 'panda\' union select 1,2, from a']); 访问 index.php 可以发现 name=CVE-2019-11768 https://twig.symfony.com/doc/3.x/filters/raw.html https://twig.symfony.com/doc/3.

    1.7K40编辑于 2023-01-03
  • 来自专栏编程语言的世界

    composer更新单个库,不编辑composer.json的情况下安装库,composer优化自动加载

    下面是一个例子(我使用了--profile选项来显示执行时间):composer init --require="twig/twig:1.*" -n --profileMemory usage: 3.94MB -profileLoading composer repositories with package informationInstalling dependencies  - Installing twig /twig (v1.12.2)    Downloading: 100%Writing lock fileGenerating autoload filesMemory usage: 10.13MB ( /twig (v1.12.2)    Loading from cacheGenerating autoload filesMemory usage: 4.96MB (peak: 5.57MB), time : 0.45s这里,twig/twig:1.12.2的压缩包被保存在~/.composer/cache/files/twig/twig/1.12.2.0-v1.12.2.zip。

    2.6K40编辑于 2023-06-18
  • 来自专栏caoayu的分享

    制作一个PHP简易框架(八)-- 配置中心

    php return [ 'enable' => true, 'twig' => [ 'cache_enable' => false, ] ]; 对配置信息的引用 function index($request) { $name = app('config')->get('name'); return view('index.twig ', function () { $loader = new \Twig\Loader\FilesystemLoader($this->viewPath); $twig = new \Twig\Environment($loader, [ 'cache' => config('twig.cache_enable') ? php return [ 'enable' => true, 'twig' => [ 'cache_enable' => env('APP_CACHE',false),

    1.4K20发布于 2021-03-03
  • 来自专栏ytkah

    opencart3修改产品页模板没有效果的原因排查

      这几天在opencart 3模板时发生了一个很奇怪的事情,ytkah明明已经将product.twig模板修改了,但是前端产品页就是没有变化,后台刷新缓存了也不起左右。 后面想着把模板重命名成product000.twig,产品页居然还能显示,这就更奇怪了。 进服务器查看一下log日志,发现PHP Exception: 0, Unable to find template "default/template/extension/module/new_product.twig 这就说明其他地方还有那个product.twig模板,进入/www/wwwroot/abc.com/system/storage/modification/catalog/view/theme/product ,果然有一个product.twig模板,把这个文件隐藏,前端产品页终于成功修改了 产生这个问题的原因应该是打开了模板缓存开关,我们在调试的时候自动生成了缓存放在storage里面,然后前端模板是调用这个模板

    2K10发布于 2019-05-25
  • 来自专栏离别歌 - 信息安全与代码审计

    CVE-2021-39165: 从一个Laravel SQL注入漏洞开始的Bug Bounty之旅

    这个功能支持解析Twig模板语言: 对于Twig模板的解析是在API请求中,用API创建或编辑Incident对象的时候会使用到Incident Templates,进而执行模板引擎。 0x06 寻找Twig利用链与代码执行 Cachet中使用了下面这段代码来渲染Twig模板: protected function parseIncidentTemplate($templateSlug rcrowe/twigbridge用于在Laravel和Twig之间建立一个桥梁,让Laravel框架可以直接使用twig模板引擎。 我在rcrowe/twigbridge的ServiceProvider中下了断点,捋了捋Twig初始化的过程,发现一个有趣的点: baseTemplateClass不是默认的\Twig\Template ,而是一个自定义的TwigBridge\Twig\Template。

    3K20编辑于 2023-11-03
  • 来自专栏程序那些事儿

    PHP八大模板引擎

    它受到出色的 Twig 模板引擎的启发,并努力将现代模板语言功能引入 PHP 模板中。 plates原生的PHP 模板而不是编译的模板语言(如 Twig 或 Smarty),因此受到对速度要求极致的开发人员喜爱。 Twig 是 PHP 的模板语言。 Twig 使用类似于 Django 和 Jinja 模板语言的语法,这些语言启发了 Twig 的发展。 快速:Twig编译模板到纯优化的 PHP 代码。与常规PHP代码相比,开销减少到最低限度。 安全:Twig具有用于评估不受信任的模板代码的沙盒模式。这允许 Twig 用作用户可以修改模板设计的应用程序的模板语言。 灵活:Twig由灵活的词汇和解析器提供动力。

    3.6K30编辑于 2023-07-24
  • 来自专栏技术猫屋

    由filter_var()函数引起的技术探讨

    目录 目录 0x01 起因 Day 2 - Twig 0x02 分析 0x03 实例 0x03 有趣的事 0x04 参考 0x01 起因 最近在看PHP SECURITY CALENDAR 2017的题目 ,这是第二题 Day 2 - Twig Can you spot the vulnerability? // composer require "twig/twig" require 'vendor/autoload.php'; class Template { private $twig; ]); $this->twig = new Twig\Environment($loader); } public function getNexSlideUrl() { $nextSlide 函数的功能并不复杂,关键点在于两个过滤函数: twig的escape过滤器 filter_var()的URL判断 对于twig的escape过滤器,可以见官网的说明: escape uses the PHP

    1.7K20编辑于 2023-01-03
  • 来自专栏网络安全技术点滴分享

    Injectics漏洞挖掘实战:从SQL注入到SSTI攻击完整解析

    该挑战展示了SQL查询和模板引擎(Twig)中不安全输入处理的危害。 (gobuster)这发现了三个有趣的文件:login.php → 登录功能页面composer.json → 显示网站使用Twig 2.14版本,该版本已知存在SSTI(服务器端模板注入)漏洞phpmyadmin (21*21)应用程序返回了441,确认输入正在由Twig模板引擎进行评估。(441)由于存在SSTI漏洞,我尝试利用它。我的目标是删除users表,强制应用程序使用默认凭证重新创建它。 (twig)这显示FirstName字段存在SSTI漏洞,并且这次不仅接受数字还接受字符串。(49)此时,我将攻击升级为远程代码执行(RCE)。使用以下Twig payload:{{['ls .

    39010编辑于 2025-10-07
  • 来自专栏程序生涯

    各种实用的 PHP 开源库推荐

    PHP 模板语言 Twig Twig是一个灵活,快速,安全的PHP模板语言。它将模板编译成经过优化的原始PHP代码。Twig拥有一个Sandbox模型来检测不可信的模板代码。 Twig由一个灵活的词法分析器和语法分析器组成,可以让开发人员定义自己的标签,过滤器并创建自己的DSL。 PHP 爬虫库 Goutte Goutte 是一个抓取网站数据的 PHP 库。

    2K10发布于 2021-02-02
  • Symfony 框架入门

    4.3 视图(Twig 模板引擎)Symfony 使用 Twig 作为默认模板引擎,它比原生 PHP 代码更简洁。在 templates/home.html.twig 创建一个视图:<! DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <title>Symfony Twig 示例</title></head home', name: 'home')] public function index(): Response { return $this->render('home.html.twig 结论通过这篇文章,我们学习了 Symfony 的基础知识,包括安装、目录结构、路由、控制器、Twig 视图和数据库操作。这些知识足以让你开发一个简单的 Web 应用。

    2.5K00编辑于 2025-02-04
  • 来自专栏红蓝对抗

    记一次Rj编辑器命令执行到内网三次命令执行漏洞利用获取域管的过程

    internal_server_error: [ 'helpers/page_500.html.twig' ]# The default template and amount of records to 编辑模板在配置下,选择“查看和编辑模板”,这将导致一个显示不同主题的页面:我将进入base-2021(因为它在这里使用),然后选择index.twig. 它为一个相对较短的twig文件提供了一个编辑器:这似乎是主页。我将在顶部添加一个标签,然后单击“保存更改”:似乎它应该出现在 上talkative.htb,但我在刷新时看不到它。 清理缓存花了点时间窥探,但最终我会来到“维护”>“清除缓存”菜单:当我点击“清除缓存”时,它报告成功,然后在刷新talkative.htb时,我的附加标签在左上角:index.twig处命令执行Twig 有一个关于代码执行的部分,我将抓住一个看起来最简单的并将它扔到index.twig:在保存然后清除缓存时,会执行代码:接下来继续使用bash进行反弹shell。

    25710编辑于 2025-12-01
  • 来自专栏智慧协同

    让WebStorm支持swig文件语法高亮

    swig 也是nodejs中一个优秀的模版引擎: http://paularmstrong.github.io/swig WebStorm中没有swig插件,我们可以用另一个插件“twig”替代, pr= 然后摁Ctrl + Alt + S打开设置,依次点击:Editor- File Types,找到Twig,添加一个后缀支持: ? Paste_Image.png ?

    1.4K20发布于 2019-06-13
  • 来自专栏ek1ng的技术小站

    HGAME 2022 Week3 writeup

    除此之外我们还会发现,注释处隐藏了hint,我们访问一下installed.json文件,发现项目使用了框架sympony和twigtwig是个php的模板语言,那么这时候我们已知使用了twig这个模板语言并且已知 twig的版本是3.x,然后我们进行SSTI即可。 先尝试一下看看是不是存在模板注入,按照twig的模板的格式,我们注入?url={{7*7}}发现返回49,也就是说7*7被服务端运算了而不是作为字符串处理的,说明存在模板注入 ? url={{7*7}} 接下来我们尝试一下twig的过滤器,我发现下面这4种都是可以成功模板注入的,我们先解释一下为什么要用过滤器,然后为什么用了过滤器可以执行一些危险命令,在 Twig 3.x 中, map 这个过滤器可以允许用户传递一个箭头函数,并将这个箭头函数应用于序列或映射的元素,其中根据map过滤后编译出来的结果中,twig_array_map的源码 function twig_array_map

    1.7K10编辑于 2022-08-10
  • 来自专栏沈唁志

    几款常见的PHP模板引擎

    Twig Twig 是来自于 Symfony 的模板引擎,它非常易于安装和使用。它的操作有点像 Mustache 和 liquid。 Haml 移植了同名的 Ruby 模板语言。 Plates Plate 受到 Twig 启发,重载了 PHP 的原生特性。如果你不想使用需要编译的模板语言,它可以为你大开方便之门。 沈唁志|一个PHPer的成长之路!

    3.7K40发布于 2018-05-24
领券