首页 » SEO优化 » php读取ttf文件技巧_TP32运用F函数读写设备文件问题

php读取ttf文件技巧_TP32运用F函数读写设备文件问题

duote123 2024-11-11 0

扫一扫用手机浏览

文章目录 [+]

最近在进行长沙网站开拓时,想通过F函数更新验证码的配置信息,但保存时提示失落败~F('verify', $_POST, CONF_PATH)这句代码在TP3.1版本中是可以正常利用的,升级到3.2后保存内容变成了这样(眼花缭乱的觉得有木有):

a:10:{s:13:\"大众VERIFY_LENGTH\"大众;s:1:\"大众5\"大众;s:12:\"大众VERIFY_WIDTH\公众;s:3:\"大众250\公众;s:13:\公众VERIFY_HEIGHT\"大众;s:2:\公众50\"大众;s:14:\"大众VERIFY_BGCOLOR\"大众;s:7:\"大众#F3FBFE\"大众;s:11:\"大众VERIFY_SEED\"大众;s:51:\公众3456789aAbBcCdDeEfFgGhHjJkKmMnNpPqQrRsStTuUvVwWxXyY\"大众;s:15:\公众VERIFY_FONTFILE\公众;s:8:\"大众font.ttf\公众;s:11:\"大众VERIFY_SIZE\公众;s:2:\公众30\"大众;s:12:\"大众VERIFY_COLOR\"大众;s:7:\公众#444444\公众;s:11:\"大众VERIFY_NAME\"大众;s:6:\"大众verify\公众;s:11:\"大众VERIFY_FUNC\"大众;s:10:\公众strtolower\"大众;}

php读取ttf文件技巧_TP32运用F函数读写设备文件问题

常日的结果(这样觉得好多了~):

php读取ttf文件技巧_TP32运用F函数读写设备文件问题
(图片来自网络侵删)

<?php return array (

'VERIFY_LENGTH' => '5',

'VERIFY_WIDTH' => '250',

'VERIFY_HEIGHT' => '50',

'VERIFY_BGCOLOR' => '#F3FBFE',

'VERIFY_SEED' => '3456789aAbBcCdDeEfFgGhHjJkKmMnNpPqQrRsStTuUvVwWxXyY',

'VERIFY_FONTFILE' => 'font.ttf',

'VERIFY_SIZE' => '30',

'VERIFY_COLOR' => '#444444',

'VERIFY_NAME' => 'verify',

'VERIFY_FUNC' => 'strtolower',

);

仔细研究一样内容构造,理解过session的朋友该当会以为很眼熟—序列化(serialize)。
保存时格式为:变量类型(简写):长度:变量名(内容)。
我们更深入的探求一下结果,打开/ThinkPHP/Common/functions.php—保存公共函数的文件,找到F函数定义部分:

function F($name, $value='', $path=DATA_PATH) {

static $_cache = array();

$filename = $path . $name . '.php';

if ('' !== $value) {

if (is_null($value)) {

// 删除缓存

if(false !== strpos($name,'')){

return false; // TODO

}else{

unset($_cache[$name]);

return Think\Storage::unlink($filename,'F');

}

} else {

Think\Storage::put($filename,serialize($value),'F');

// 缓存数据

$_cache[$name] = $value;

return null;

}

}

// 获取缓存数据

if (isset($_cache[$name]))

return $_cache[$name];

if (Think\Storage::has($filename,'F')){

$value = unserialize(Think\Storage::read($filename,'F'));

$_cache[$name] = $value;

} else {

$value = false;

}

return $value;

}

我们可以清楚的看到,3.2版本中F函数在进行文件写入时,利用是serialize函数进行序列化,在读取时对内容进行反序列化。

理解了TP的处理流程,我们应对的方法有很多种:1.最大略粗暴直接将F函数中的序列化动作去掉,优点--大略;缺陷--会导致后续利用时出异想不到的问题;2.自定义函数进行处理,优点--可以get到新技能;缺陷--须要多花点韶光,其他。


其他没有缺点;3.直接处理。


笔者比较

$verify = '<?php return ' . var_export(I('post.'), true) . ';';

if(file_put_contents(CONF_PATH . 'verify.php', $verify)){

$this->success('修正成功!', U(MODULE_NAME . '/System/verify'));

}else{

E('保存失落败,请修正' . CONF_PATH . 'verify.php权限!');

}

紧张利用了var_export函数输出数组(可输出合法的PHP代码,并可以赋值给变量),利用file_put_contents对文件进行写入。

更多 长沙网站开拓 原创内容,请关注长沙蒲公英网络。

原创文章链接: http://www.0731pgy.com/a/news/IndustryNews/428.html

标签:

相关文章

大数据助力司法改革,开启智慧司法新篇章

随着信息技术的飞速发展,大数据在各个领域的应用日益广泛。在我国,大数据正成为推动司法改革的重要力量。本文将从大数据在司法改革中的应...

SEO优化 2024-12-17 阅读0 评论0