也启用了验证码,不支持小数

2019-07-13 作者:编程   |   浏览(80)

本文分享PHP的session在使用过程中的锁和并发的问题,与之相关的现象有请求阻塞、session数据丢失、session数据读不到。

本文讲述了win7安装php框架Yii的方法。分享给大家供大家参考,具体如下:

什么时候使用串行化?

分享一个辅助函数,使用php尽可能识别出字符串中的数字,

我登录不了了
某天,我准备登录我们一个后台系统,前去解决一个bug,在账户密码验证码都准确输入的情况下,我登录不上,经过多次实验发现主要有两个错误信息:

有人问我win7安装yii老是报错,花了10分钟装了一下,现在做程序的自学能力这么差了?我对框架这些东西不是很感冒,框架这类东西,个人觉得效率都不咋地,集成的东西多,并且有很多我们并不需要。如果自己没有开发过框架的话,用框架还是有些好处的,可以规范代码。

在网络中传输对象的时候 向数据库中保存文件的时候

先上代码

  • csrf验证失败
  • 验证码错误【我对码神起誓我用半角输入了我看到的验证码,且顺序一致,无多加字符】

1、下载yii

今天我们要提到四个函数

function checkNatInt($str) {
  $map = array(
    '一' => '1','二' => '2','三' => '3','四' => '4','五' => '5','六' => '6','七' => '7','八' => '8','九' => '9',
    '壹' => '1','贰' => '2','叁' => '3','肆' => '4','伍' => '5','陆' => '6','柒' => '7','捌' => '8','玖' => '9',
    '零' => '0','两' => '2',
    '仟' => '千','佰' => '百','拾' => '十',
    '万万' => '亿',
  ); 

  $str = str_replace(array_keys($map), array_values($map), $str);
  $str = checkString($str, '/([d亿万千百十] )/u');

  $func_c2i = function ($str, $plus = false) use(&$func_c2i) {
    if(false === $plus) {
      $plus = array('亿' => 100000000,'万' => 10000,'千' => 1000,'百' => 100,'十' => 10,);
    }  

    $i = 0;
    if($plus)
    foreach($plus as $k => $v) {
      $i  ;
      if(strpos($str, $k) !== false) {
        $ex = explode($k, $str, 2); 
        $new_plus = array_slice($plus, $i, null, true);
        $l = $func_c2i($ex[0], $new_plus);
        $r = $func_c2i($ex[1], $new_plus);
        if($l == 0) $l = 1;
        return $l * $v   $r;
      }
    }

    return (int)$str;
  }
  return $func_c2i($str);
 }

 //来自uct php微信开发框架,其中的checkString函数如下
 function checkString($var, $check = '', $default = '') {
  if (!is_string($var)) {
    if(is_numeric($var)) {
      $var = (string)$var;
    }
    else {
      return $default;
    }
  }
  if ($check) {
     return (preg_match($check, $var, $ret) ? $ret[1] : $default);
  }

  return $var;
}

我们的系统 我们的系统是基于phalcon 2.0.8 开发的,如你所见,我们在表单域加入了防止csrf攻击的域。也启用了验证码。

全部串行化

实现效果如下。

<input type="hidden" 
  name="{{ security.getTokenKey() }}"
  value="{{ security.getToken() }}"/>
<img src="/login/getCaptcha" id="img-captcha"/> 

2、使用yiic来生成web目录

1.serialize(对象名) 将指定的类对象串行化 $str=serialize($per) //将per对象串行化,结果返回给$str
2.unserialize(串行化后的返回值) 返回结果是对象 $per=unserialize($str);

echo checkNatInt('九百六十万'); //普通中文数字,9600000
echo checkNatInt('壹亿柒仟万零捌佰肆拾'); //大写中文数字,170000840


echo checkNatInt('学好PHP拿百万年薪'); //句子中的数字, 1000000
echo checkNatInt('今年春运发送人次达26亿'); //数字和汉字混合出现,2600000000

echo checkNatInt('两只小蜜蜂'); //口语化数字,2
echo checkNatInt('万万没想到'); //复古的表达方式,100000000

我首先对这两个组件进行查阅,发现他们都是将数据存于session:

C:Windowssystem32>f:/wamp/www/yii/framework/yiic webapp f:/wamp/www/web
Create a Web application under 'F:wampwwwweb'? [yes|no] yes
   mkdir F:/wamp/www/web/assets
   mkdir F:/wamp/www/web/css
  generate css/bg.gif
  generate css/form.css
  generate css/ie.css
  generate css/main.css
  generate css/print.css
  generate css/screen.css
   mkdir F:/wamp/www/web/images
  generate index-test.php

局部串行化

注意事项

# phalcon/security.zep
# Security::getToken()
let session = <SessionInterface> dependencyInjector->getShared("session"); 
session->set(this->_tokenValueSessionID, token); 
$this->session->set('admin_get_captcha_action', $captcha);

如果有提示:php.exe不是内部命令,那是缺少了环境变量。

3.__sleep() 串行化某对象的部分属性。

不支持小数

本文由小鱼儿玄机30码发布于编程,转载请注明出处:也启用了验证码,不支持小数

关键词: 小鱼儿玄机30码