首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP 对输入变量名自动转换问题与源码分析

起步 表单提交到PHP脚本时,底层PHP会做一层转换。将一些符号转成下划线 _ 。 ? 实际上这层转换中会发生很多意想不到情况。 列举这些情况 ?...我不清楚 PHP 为什么会做这个转换,目的是什么。据我所知 java,Django 都不会做转换。...源码分析 虽然我没有阅读过php源码,在朋友帮助下,关于这部分转换代码在 main/php_variables.c php_register_variable_ex 函数中 php_variables.c...] 为止 } } ... } 到此,转化处理过程就很清晰了,对于数组情况变量名,分为两种: 没找到 ] 与其匹配,该变量名不是数组,将 [ 替换成下划线,后续字符串不做处理...另外,谁能告诉我PHP这层转换设计初衷是什么啊。

94440
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何正确发布PHP代码

    几乎每一个 PHP 程序员都发布过代码,可能是通过 ftp 或者 rsync 同步,也可能是通过 svn 或者 git 更新。...一个活跃项目可能每天都要发布若干次代码,但是现实却是很少有人注意其中细节,实际上这里面有好多坑,很可能你就在坑中却浑然不知。 一个正确实现发布系统至少应该支持原子发布。...如果处理不当的话,那么就可能会导致旧版本 a.php 和新版本 b.php 同时存在于同一个请求之中,换句话说就是没有实现原子发布。...v2 ├── foo.php └── bar.php 不过鉴于 PHP 本身特殊性,如果只是简单套用上面的流程,那么将很难实现真正原子发布。...据说一千个人心中就有一千个哈姆雷特,不过我希望所有的 PHP 程序员在发布 PHP 代码时候都能采用一种方法,那就是本文介绍方法,正确方法。

    4.2K40

    如何正确配置Nginx+PHP

    假设我们用PHP实现了一个前端控制器,或者直白点说就是统一入口:把PHP请求都发送到同一个文件上,然后在此文件里通过解析「REQUEST_URI」实现路由。...location / { index index.html index.htm index.php; } 一旦未来需要加入新「location」,必然会出现重复定义「index」指令,这是因为多个.../index.php last; } 很多人喜欢用「if」指令做一系列检查,不过这实际上是「try_files」指令职责: try_files $uri $uri/ /index.php; 除此以外...」情况下,PHP可能会把错误文件类型当作PHP文件来解析。...如果Nginx和PHP安装在同一台服务器上的话,那么最简单解决方法是用「try_files」指令做一次过滤: try_files $uri =404; 参考: Nginx文件类型错误解析漏洞 Setting

    5.4K21

    php进程daemon化正确实现方法

    PHP为例 , 假如我有个耗时间任务需要跑在后台 : 将所有mysql中user表中2000万用户全部导入到redis中做预热缓存 , 那么这个任务估计一时半会是不会结束 , 这个时候就需要编写一个...在命令后添加一个&符号 , 比如 php task.php & ....这个方法缺点在于 如果terminal终端关闭 , 无论是正常关闭还是非正常/ /关闭 , 这个php进程都会随着终端关闭而关闭 , 其次是代码中如果有echo或者print_r之类输出文本 , 会被输出到当前终端窗口中...使用nohup命令 , 比如 nohup php task.php & . 默认情况下 , 代码中echo或者print_r之类输出文本会被输出到php代码同级目录nohup.out文件中 ....但是如果终端遇到异常退出或者终止 , 该php进程也会随即退出 . 本质上 , 也并非稳定可靠daemon方案 . 3 .

    87620

    PHP中strpos函数正确使用方式

    首先简单介绍下 strpos 函数,strpos 函数是查找某个字符在字符串中位置,这里需要明确这个函数作用,这个函数得到是位置。 如果存在,返回数字,否则返回是 false。...而很多时候我们拿这个函数用来判断字符串中是否存在某个字符,一些同学使用姿势是这样 // 判断‘沈唁志博客’中是否存在‘博客’这个词 if (strpos('沈唁志博客', '博客')) {...,正确使用方式如下 // 判断‘沈唁志博客’中是否存在‘博客’这个词 if (strpos('沈唁志博客', '博客')===false) { // 如果不存在执行此处代码 echo...‘存在’,那你这完全没跟上我套路啊,不是技能问题了,是时候为智商讨个说法了,事实上输出是’不存在’,细心童鞋会发现这个 1 是不带引号,strpos 第二个参数必须是字符串型,因此,如果你是在循环或者其他情况下调用...原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:在PHP中strpos函数正确使用方式

    5.2K30

    前端测试题:var str=’shuke‘ 字符串值(shuke)转为变量名方法正确是?

    考核内容:javascript数据转换方法!...题发散度: ★★ 试题难度: ★★ 解题思路: js如何将字符串转为变量名, 在使用数据交互进会时常遇到这种问题 数据模块化处理时也会遇到这种问题 函数传递参数时也会遇到这种问题 如何解决呢?...以下方案可以提供给大家参考 1.可以用eval() 有人说这个方法不安全,扫描漏洞会扫到,但是实际上是可以使用,效率问题是程序逻辑问题。...对于一些有执行字符串代码需求程序中,不用eval而用其他方式模拟反而会带来更大开销。...3.用一个对象存储变量,变量名为[key],值为value,通过,value找到对应值 var shuke={name:"es6",year:"2020"} var str="shuke" function

    62620

    PHP 调用 Go 服务正确方式 - Unix Domain Sockets

    代码实现 接下来要 show code 了,不过学 PHP 都知道,PHP 不太适合处理 CPU 密集形任务,我刚好学了点 Go,一时手痒,就用 Go 实现了下 Trie 树,所以才牵扯到 PHP...然后是 PHP 使用 Unix Domain Socket 调用 Go 服务耗时,可能是进程间复制数据耗时或 PHP 拖了后腿,3秒多一点,跟纯 PHP 脚本差不多。...杂谈 用 PHP 都知道,PHP 因为解释型语言特性和其高度封装,导致其虽然在开发上速度很快,可是执行与其他语言相比略差。...对此,业界 FB 有 HHVM,PHP7 有 opcache 新特性,据说还要在 PHP8 添加 JIT,用以弥补其先天硬伤。...不过,对于开发者,特别是跟我一样对于效率有执著追求的人来说,在了解使用 PHP 新特性之外,自己再掌握一门较高执行效率、开发效率略低语言,用来写一些高计算量,逻辑单一代码,与 PHP 互补或许会更好一点

    2.1K110

    PHP调用Go服务正确方式 - Unix Domain Sockets

    代码实现 接下来要 show code 了,不过学 PHP 都知道,PHP 不太适合处理 CPU 密集形任务,我刚好学了点 Go,一时手痒,就用 Go 实现了下 Trie 树,所以才牵扯到 PHP...然后是 PHP 使用 Unix Domain Socket 调用 Go 服务耗时,可能是进程间复制数据耗时或 PHP 拖了后腿,3秒多一点,跟纯 PHP 脚本差不多。...杂谈 用 PHP 都知道,PHP 因为解释型语言特性和其高度封装,导致其虽然在开发上速度很快,可是执行与其他语言相比略差。...对此,业界 FB 有 HHVM,PHP7 有 opcache 新特性,据说还要在 PHP8 添加 JIT,用以弥补其先天硬伤。...不过,对于开发者,特别是跟我一样对于效率有执著追求的人来说,在了解使用 PHP 新特性之外,自己再掌握一门较高执行效率、开发效率略低语言,用来写一些高计算量,逻辑单一代码,与 PHP 互补或许会更好一点

    97290

    记录ZBLOG PHP程序robots.txt文件正确写法

    比如WordPress程序目前会自动生成内置robots.txt文件,但是在使用ZBLOG PHP程序时候是没有自动生成,我们需要手动添加到网站根目录。...严格意义上讲,robots.txt文件还是比较有用,但是对于国内来说用途好像不是特别的大,既然我们需要加上,这里老蒋就整理一个通用文档。我们先看看ZBLOG PHP固定目录是有哪些。...这里我们看到ZBLOG PHP目录。如果我们在安装完毕程序之后,zb_install目录是可以删除。然后我们需要屏蔽掉zb_system和zb_users目录不要被抓取,其他可以留着。...User-agent: * Disallow: /zb_system/ Disallow: search.php Disallow: /zb_users/data/ Disallow: /zb_users...本文出处:老蒋部落 » 记录ZBLOG PHP程序robots.txt文件正确写法 | 欢迎分享

    91810

    Java 什么变量名是合法呢?

    而上面的句子中 字母 ,不要想当然  字母:包括大、小写字母,汉字等各种语言中字符  而且java语言使用是Unicode字符集,它包括65 535个字符,适用于多种人类自然语言。 ...猜一下以下6个变量名哪些是合法:  2variablevariable2_3_$anothervar$_¥中国  答案是除了第一个都是合法变量名  public class Demo{     public...){         int variable2;         int _3_;         int $anothervar;         int $_¥; //¥也是字母(中文中字符...)         int 中国; //也是字母(中文中字符)     } }  编译通过,所以说明这五个变量都是合法    但是合法并不一定适合使用,第二种是最推荐使用   命名基本上是不会使用中文拼音也是不推荐...$,我们最好不要使用,(一般内部类命名是由系统决定,而且内部类命名中使用到了$)_一般用在一些特殊变量上,用于标识其特殊性

    2.6K00
    领券