我有一个简单的问题: 我目前正在为我的网站制作验证码验证表,我遵循了tutorial 在我看来,要生成captcha格式的图像,Style.css调用php文件,如下所示:

.captcha-input {
    background: #FFF url(./../../captchaImageSource.php) repeat-y left center;
    padding-left: 80px;
}

当我查看captchaImageSource.php文件时,我看到以下内容

<?php
namespace MyNameSpace;
use MyNameSpace\Captcha;

session_start();

include("./Model/Captcha.php");
$captcha = new Captcha();

$captcha_code = $captcha->getCaptchaCode(6);

$captcha->setSession('captcha_code', $captcha_code);

$imageData = $captcha->createCaptchaImage($captcha_code);

$captcha->renderCaptchaImage($imageData);

?>

Captcha.php文件具有与createcaptchaImage等相关的验证功能. 所以我看到php文件有点像是生成验证码的图像,但我不明白为什么它会被执行.Css会触发php文件吗?然后php自己调用相关函数吗?

推荐答案

是的,如果你把一个URL放在css中的background规则中,它会导致浏览器向该URL发送一个HTTP请求--你可以在浏览器的开发者工具的Network Tool中看到它.

在这种情况下,这意味着Web服务器将执行位于该URL的文件中的php代码.

然后,浏览器将try 使用从脚本输出的数据作为图像.

参考文献:https://developer.mozilla.org/en-US/docs/Web/CSS/background

Php相关问答推荐

dockerized laravel服务器拒绝POST请求

在php中有没有办法比较两个包含相同枚举类型的枚举数组

如何让PHP变量跨越多个脚本调用?

在特定日期之间使用特定的元密钥销售产品

使用列入黑名单的单词和自定义业务逻辑的组合将特定的子字符串包装在HTML标记中

在Symfony 6.4中将工作流动态添加到服务

WooCommerce在收据页面获取产品下载URL

无额外字段的Laravel同步

将购物车按钮重定向到Checkout-Wooccommerce

Docker-用于部署的 PHP 应用程序映像无法在本地运行

WooCommerce 按产品运输插件:仅收取较高的运输费用

在 DateTime 或 DateTimeImmutable 对象上调用modify() 时是否必须使用空格?

Golang - Html 模板:如何创建导航项 - 子菜单?我找不到怎么做

PHP简单地将物品装在盒子里会导致未使用的空间,但还有剩余容量

根据页面的最后修订日期设置 MediaWiki 内部链接的样式

如何在PHP中对多个脚本调用进行排队?

WooCommerce checkout 流程中基于所选选项添加自定义费用

Laravel Docker 几个数据库

Google Drive - 仅使用 FileID 获取文件的 FileSize

将参数传递给 laravel 9 工厂