仓酷云

标题: PHP网站制作之PHP教程:php内置函数intval() [打印本页]

作者: 莫相离    时间: 2015-2-3 23:43
标题: PHP网站制作之PHP教程:php内置函数intval()
用C语言重新编写,包括可以访问数据库。他将这些程序和一些表单直译器整合起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。   </p> 1、描写 intval函数有个特征:"直到赶上数字或正负符号才入手下手做转换,再碰到非数字或字符串停止时(\0)停止转换",在某些使用法式里因为对intval函数这个特征熟悉不敷,毛病的利用招致绕过一些平安判别招致平安破绽.
2、剖析
    PHP_FUNCTION(intval)
  {
  zval **num, **arg_base;
  int base;
  switch (ZEND_NUM_ARGS()) {
  case 1:
  if (zend_get_parameters_ex(1, &num) == FAILURE) {
  WRONG_PARAM_COUNT;
  }
  base = 10;
  break;
  case 2:
  if (zend_get_parameters_ex(2, &num, &arg_base) == FAILURE) {
  WRONG_PARAM_COUNT;
  }
  convert_to_long_ex(arg_base);
  base = Z_LVAL_PP(arg_base);
  break;
  default:
  WRONG_PARAM_COUNT;
  }
  RETVAL_ZVAL(*num, 1, 0);
  convert_to_long_base(return_value, base);
  }
  Zend/zend_operators.c->>convert_to_long_base()
  ……
  case IS_STRING:
  strval = Z_STRVAL_P(op);
  Z_LVAL_P(op) = strtol(strval, NULL, base);
  STR_FREE(strval);
  break;

当intval函数承受到字符串型参数是挪用convert_to_long_base()处置,接上去挪用Z_LVAL_P(op) = strtol(strval, NULL, base);经由过程strtol函数来处置参数。
函数原型以下:
  long int strtol(const char *nptr,char **endptr,int base);
这个函数会将参数nptr字符串依据参数base来转换生长整型数,参数base局限从2至36,或0.参数base代表采取的进制体例,如base值为10则采取10进制,若base值为16则采取16进制等。
流程为:
strtol()会扫描参数nptr字符串,跳过后面的空格字符,直到赶上数字或正负符号才入手下手做转换,再碰到非数字或字符串停止时(\0)停止转换,并将了局前往。
那末当intval用在if等的判别外面,将会招致这个判别实去意义,从而招致平安破绽.
3、测试代码
    //intval.php
  $var="20070601";
  if (intval($var))
  echo "it's safe";
  echo '$var='.$var;
  echo "
  ";
  $var1="1 union select 1,1,1 from admin";
  if (intval($var1))
  echo "it's safe too";
  echo '$var1='.$var1;

4、实践使用
  WordPress <= 2.0.6 wp-trackback.php Zend_Hash_Del_Key_Or_Index / sql injection exploit
编纂收拾整顿
在我开始学习PHP以前,我从未想过要做软件工程,即便是在去听过华育国际的关于软件工程的美好前景后,因为我一直都没有想过要与代码打交道,而是想学好所学专业,做个网络工程师或者是网络安全人员。
作者: 分手快乐    时间: 2015-2-4 06:11
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 透明    时间: 2015-2-7 02:25
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 老尸    时间: 2015-2-7 13:36
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
作者: 愤怒的大鸟    时间: 2015-2-8 16:35
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 再见西城    时间: 2015-2-9 20:32
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 柔情似水    时间: 2015-2-18 16:45
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
作者: 金色的骷髅    时间: 2015-2-25 15:58
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
作者: 冷月葬花魂    时间: 2015-3-1 10:58
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者: 若天明    时间: 2015-3-4 10:46
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 深爱那片海    时间: 2015-3-11 18:20
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者: 不帅    时间: 2015-3-19 06:40
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
作者: 乐观    时间: 2015-3-20 22:19
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
作者: 只想知道    时间: 2015-4-14 17:46
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
作者: 精灵巫婆    时间: 2015-4-25 09:06
Ps:以上纯属原创,如有雷同,纯属巧合
作者: admin    时间: 2015-5-7 22:30
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: 变相怪杰    时间: 2015-7-13 08:08
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 小魔女    时间: 2015-7-14 10:37
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 蒙在股里    时间: 2015-7-18 23:24
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2