php的eval调用变量就出错。
但是在一调用就出错。
因为项目需求。在传值时,必须使用base64_decode("base64处理后的字符串");
所以我测试时,使用的url如下:
http://test.cn/2.php?command=base64_decode("ZWNobyAndGVzdCc7");
但是返回的页面无任何内容。
如果不用base64_decode函数一点事也没有,如下:
http://test.cn/2.php?command=echo "123";
能显示123.
ZWNobyAndGVzdCc7 编码前的字符串为 echo 'test';
服务端代码不能进行改动,请求时必须以base64_decode("base64处理后的字符串")这样的方式来。困扰一天了。
回复内容:
现在已经确定服务端PHP代码(不能修改)是
但是在一调用就出错。
因为项目需求。在传值时,必须使用base64_decode("base64处理后的字符串");
所以我测试时,使用的url如下:
http://test.cn/2.php?command=base64_decode("ZWNobyAndGVzdCc7");
但是返回的页面无任何内容。
如果不用base64_decode函数一点事也没有,如下:
http://test.cn/2.php?command=echo "123";
能显示123.
ZWNobyAndGVzdCc7 编码前的字符串为 echo 'test';
服务端代码不能进行改动,请求时必须以base64_decode("base64处理后的字符串")这样的方式来。困扰一天了。
警告,使用eval是非常危险的行为!
特别是你们对于这个command参数甚至没有任何加密和过滤处理,那么用户哪天传一个参数能查看,显示,编辑其内容,甚至修改,删除服务器所有文件的代码也是可以直接运行的(当你的PHP在以root运行)
抛开这个不谈来分析这个问题
服务器进行eval时,它实际上是等价于运行:
base64_decode("ZWNobyAndGVzdCc7");
这时候会得到一个字符串
echo 'test';
然而,因为你的eval只有一个,所以后面这个base64解码出来的文本,实际上只是一段文本,表达式到这个时候就已经结束了,不会再继续运行,所以要达成楼主的目的,应该是需要这样:http://test.cn/2.php?command=echo base64_decode("dGVzdAo=");
或者这样:http://test.cn/2.php?command=eval(base64_decode("ZWNobyAndGVzdCc7"));
上一篇: 移动端网站设计优化要点
推荐阅读
-
非常精妙的PHP递归调用与静态变量使用
-
libpng版本问题导致的PHP调用gd扩展出错解决方案
-
外部js文件 .js 怎么调用php文件中的变量
-
PHP代码和模板的调用对应起来不出错
-
php foreach中赋值 循环完成后 这个在数组内新赋值的变量就消失了么?
-
php foreach中赋值 循环完成后 这个在数组内新赋值的变量就消失了么?
-
php帮我看一下,receive这个文件里的16,17行哪里出错了,注册相同用户名他就报错
-
php针对服务器端预定义变量调用及字符串处理的方法
-
php调用有输出的函数,但是不输出,赋值到变量中。解决思路
-
yii在视图里创建变量(保护php的代码),在js文件里调用之前创建的变量的代码实例