谁一开始就是大神?

PHP 第118页

PHP

PHP如何使用Redis限制表单提交成功五次后不能再提交了?[2.0]

kensuper阅读(59)

PHP 如何使用 Redis 限制表单提交成功五次后不能再提交了?我发现这样写好像不行,不能判断是否入库成功

/**************/
//获取当前的ip,限制每个ip只能提交五次
$user_ip = Common_Common::getRealIp();
if($user_ip){
    //这个key记录该用户的访问次数
    $key = $user_ip;
    //定义限制次数
    $limit = 5;
    $redis = new \Redis();
    $redis->connect('127.0.0.1', 6379, 30);
    $check = $redis->exists($key);
    if($check){
        if(Service_VideoComment::add($row)){
            $redis->incr($key);  //键值递增
            $count = $redis->get($key);
            if($count > $limit){
                $return = array(
                    "status" => 0,
                    "msg"    => "温馨提示:您的信息已存在,请直接咨询在线客服!"
                );
                exit(json_encode($return));
            }
        }
    }else{
        if(Service_VideoComment::add($row)){
            $redis->incr($key);
        }
    }
}
/**************/

每次进来查一下这个ip的提交次数,如果大于等于5次,直接驳回。
不大于5在下面进行表单入库,入库成功后当前ip提交次数加1。
建议incrby放在最开始,判断返回值是否大于5

怎么判断PHP是yum安装还是编译安装的?[2.0]

NeoEagle阅读(54)

怎么判断PHP是yum安装还是编译安装的?

能搜到 说明是 yum 安装的
搜不到 说明不是 yum 安装的,也有可能是 其它包管理工具装的,比如 apt-get,brew 等等
是不是编译安装的,除了 装 的那个人,别人 无从知道
甚至 我可以到一个相同的操作系统上 copy 相关的文件过来,这个算 编译安装 么?
yum list installed
通过这个命令看看

请问一下各位这个为啥输出还是helloworld?[2.0]

fationseagull阅读(56)

<?php
class AppInfo
{
    private $props = array();

    private static $instance;

    //防止外界实例化对象
    private function __construct()
    {
    }
    //防止外界clone实例
    private function __clone()
    {
    }

    public static function getInstance()
    {
        if (empty(self::$instance)) {
            self::$instance = new self;
        }

        return self::$instance;
    }

    public function setProperty($key, $val)
    {
        $this->props[$key] = $val;
    }

    public function getProperty($key)
    {
        return $this->props[$key];
    }
}

$info = AppInfo::getInstance();
$info->setProperty("name","hello world");
unset($info);
$info2 = AppInfo::getInstance();
echo $info2->getProperty("name");

因为 $instance 是静态属性 第二次 getInstance() 时候返回的还是之前的对象
unset($info) 只会断开和 self::$instance的引用 不会销毁对象 因为你是先赋值给self::$instance 然后 $info = self::$instance
如果你用xdebug_debug_zval(‘info’); 看下的话 销毁之前refcount=2

发表的帖子需要如何删除?

AniEagle阅读(59)

如题,有管理员吗?发表的帖子需要删除如何操作?

右侧修改话题,或者打车去北京劫持舰长,让其删帖
yiichina的管理员好难找呀
找舰长!!!

Yii2登陆为什么用cookie,不用session呢?[2.0]

JackEagle阅读(54)

如题,新手不懂,请大家指教。谢谢了

不安全是因为cookie值未加密,你有特定的加密算法,别人解密不出来你就安全了,别人拿到的只是密文。如果对方要修改,必须先知道怎么加密的,才能伪造。
而session是因为储存在服务器上,就算我不加密,别人也拿不到,加密后当然更加安全。
楼上回答的很棒

Layout中的数据获取问题[2.0]

likelyStag阅读(60)

在 footer 中获取最近发布文章的标题,这个 footer 是在 layout 中的,这怎么办呢?

每个控制器都写一次读取数据库?

首先,楼上说的 “在基类控制器里获取” 这个方案 肯定是 可行的,这里 另外提供一个 低耦合 的方案
1、写一个行为,比如叫 app\lan\MyBehavior ,在这个 行为 中提供一个方法,比如叫 getLatestArticle,在这个方法里 读取数据库 返回 最近发布的文章
2、配置文件中,将这个行为附加到 当前的 控制器中,这样 每一个被请求的控制器 就都有了 getLatestArticle 这个方法
3、footer 里这样调用
对所有的控制器 不需要 任何代码的改动
在基类控制器里面获取就好了
缓存处理一下
我之前碰到过类似的情况,用的野路子,比较暴力。就是直接在 layout 文件中引入模型,在需要的地方查询并输出,这种做法可行,但是可能会破坏构架结构。。。

Linux的swap有什么作用,必须设置吗?[2.0]

ACGLion阅读(56)

Linux 的 swap 有什么作用,必须设置吗?

可以理解为虚拟内存,当自身物理内存不够用时,会临时占用位置存储数据。至于是否需要设置,看具体需求。

登录

找回密码

注册