谁一开始就是大神?

PHP 第84页

PHP

Yii2.0验证码问题[2.0]

youthhope阅读(29)

public function actions()
{
    return [
          'captcha' => [
            'class' => 'yii\captcha\CaptchaAction',                 
            'fixedVerifyCode' => substr(mt_rand(1000,9999),0,4),//直到加了这个代码就出问题了
            'minLength' => 4,
            'maxLength' => 4,                
        ],
        'error' => [
            'class' => 'yii\web\ErrorAction',
        ],
    ];
}

本来一切正常,字母显示4个,能正常验证登录。
为了降低验证码难度,想改成4个数字,添加了这行代码
'fixedVerifyCode' => substr(mt_rand(1000,9999),0,4),
能正常显示4个数字了,但是输入正确的验证码后,就是提示验证码错误,这个该怎么排查原因?

使用 fixedVerifyCode 之后, 并没有写 session.
也就是说, 使用了 fixedVerifyCode 之后 生成验证码的时候直接返回了 fixedVerifyCode 的值, 验证的时候 又是拿你输入的 和 fixedVerifyCode的值做对比.. 而你的fixedVerifyCode 每次都变.
你看 fixedVerifyCode 注释, 讲的很清楚, 通常用在自动化测试 方便复制验证码的场景下使用.
非要使用四位数字的话, 继承并重写一下 yii\captcha\CaptchaAction 类里面的 生成验证码的策略吧.
“通常用在自动化测试 方便复制验证码的场景下使用”,不懂这句话是什么意思,求大神讲解。

问下如果yii2框架文件里头没有.bowerrc和.gitignore会不会造成什么问题?[2.0]

Hazelseagull阅读(27)

yii2里的.bowerrc和.gitignore没有会不会带来什么问题?

出了点问题把服务器上的yii重新从本地上传了,发现本地的.bowerrc和.gitignore(就最原始的basic目录下的这2个)怎么都上传不上去,然后我运行服务器上的代码,还是可以正常执行的,所以想问下这2个文件是做什么用的,没有的话,会不会带来什么问题?

.gitignore 是使用 Git 开发时,用于忽略不必要提交的文件,比如忽略程序自动产生的临时文件。
.bowerrc 是使用 Bower 的一个配置文件。
你的服务器可是 linux ?如果是的话,不是上传不了,是已经上传了,只不过是因为名称前有一个小点 .,被服务器隐藏了。linux 下名称前加个小点可用于隐藏文件。
这两个文件上传不到服务器也不要紧。

Yii2中如何让图片不显示图片名而是显示图片[2.0]

littlehappy阅读(29)

数据库里存的图片字段为:pic 格式是:C:\xampp\htdocs\weidu\v1.weidu.com/files/case02.jpg
index.php页面:
如何让图片显示,不是显示图片名,而是显示图片

你这个路径应该只有上传图片的那台设备上能看到..
看你在你的 folder 存甚麼路徑
從 web 下 的 /files/case02.jpg
好问题,没有标注功能,特来标记一下。
以下情况为数据库pic字段存的是图片文件名
经测试,可以使用
另外,DetailView内匿名函数不可用

为啥从github上clone下来的包里没有vendor文件夹?[2.0]

richnice阅读(30)

从yiisoft/yii2-app-advanced上clone下来文件运行失败,然后发现比yiichina提供的压缩包少了个vendor文件夹,复制过去后问题解决。
请问vendor文件夹是什么用的?为啥官方下载的反而没有提供?

突然翻到自己以前问的老问题,看到下面两个回答都说得很含糊,自己回复一下正解:vendor是composer下载的依赖库文件,yii2-app-advanced这个项目代码里,只有其自己的项目文件,而其依赖的yii框架等类库,都记录在composer.json里面,只要安装好composer,然后install或update一下就是可以了。

vendor,如其名字,是第三方提供的工具。
你下载的只是yii自身的代码。
需要配合必要的第三方工具才能正常运行。
具体安装方法,请参考你下载文档页面中的说明,或者查看本站文档中的安装一节。

地的做好的yii项目,为什么传到服务器打不开[1.1]

Jimdear阅读(32)

上传到服务器,打开域名提示

Warning: require_once(D:\wwwroot\91zhai\wwwroot/../yii1/framework/yii.php) [function.require-once]: failed to open stream: No such file or directory in D:\wwwroot\91zhai\wwwroot\index.php on line 14

Fatal error: require_once() [function.require]: Failed opening required 'D:\wwwroot\91zhai\wwwroot/../yii1/framework/yii.php' (include_path='.;C:\php5\pear') in D:\wwwroot\91zhai\wwwroot\index.php on line 14

导入的两个文件在服务器路径和你本地路径不同。
你在本地和服务器上路径不一样吧。

Yii::$app->controller->id报错,请大侠点[2.0]

acgapple阅读(35)

$controllerID = Yii::$app->controller->id;
$actionID = Yii::$app->controller->action->id;

报错

PHP Notice – yii\base\ErrorException
Trying to get property of non-object

首先, 这两行代码没什么问题.
你肯定是用错了地方,
module里面 实例化controller[createController] 之后, 才将controller绑定到Yii::$app
而绑定action到当前controller的节点 则在 controller runAction之后
因此 , 你在module没有执行 runAction 之前, Yii::$app->controllernull
所以 moduleinit 事件之前(包括init事件内), Yii::$app->controller 都是 null
controllerbeforeAction 事件之前(包括beforeACtion事件内), Yii::$app->controller->action 也是没值的;;;
调用的位置不对吧。
当前位置,没有那个对象.
在控制器和视图里都可以用的,在控制器里也可以直接用$this->controller->id获取~

自动登录没有用啊![2.0]

Jimapple阅读(31)

不是就这样就可以了吗?Yii::$app->user->login($user, $this->rememberMe ? 3600 * 24 * 10 : 0)
我勾选记住登录,名字是_identity的cookie是有的,这是自动登陆的凭证吧?
我的怎么没用,还要做其他什么操作吗?
我用的就是Yii自带的那套。

user的配置:

'user' => [
    'identityClass' => 'common\models\User',
    'enableAutoLogin' => true,
    'loginUrl' => ['user/login', 'ref' => 1],
    'authTimeout' => 1800,
],

User实现的IdentityInterface接口代码如下:

/**
 * 通过user id查找身份
 * 
 * @param user_id $id        	
 * @return Ambigous <\yii\db\static, NULL>
 */
public static function findIdentity($id) 
{
	return static::findOne ( [ 
			'user_id' => $id,
			'enabled' => self::STATE_ENABLED 
	] );
}

/**
 * 用token查找身份,这个方法暂时没有用处
 * 
 * @param string $token        	
 * @param string $type        	
 */
public static function findIdentityByAccessToken($token, $type = null) 
{
	return null;
}

/**
 * 取得可用用来验证用户身份的KEY,每个用户的key需要唯一
 * 
 * @return string
 */
public function getAuthKey() 
{
	return null;
}

/**
 * 取user id
 * 
 * @return number
 */
public function getId() 
{
	return $this->user_id;
}

/**
 * 验证authKey
 * 
 * @param string $authKey        	
 * @return boolean
 */
public function validateAuthKey($authKey) 
{
	return $this->getAuthKey () === $authKey;
}

搞定:

    $cookie->value = json_encode([
        $identity->getId(),
        $identity->getAuthKey(),
        $duration,
    ], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);

应用配置里面,对component[‘user’]的配置代码贴一下。
如果是你们自己实现的Identity类,把实现IdentityInterface的类代码也需要贴一下。这样才好方便你诊断问题。
我的没修改过,系统默认就支持记住14天。
确认下浏览器开启了cookie
回复见下面,莫名其妙提交两遍..

怎么用不同条件修改数据[2.0]

Cindypony阅读(35)

$this->updateAll($data, $where);

$data = [‘groupid’=>1];
//如 条件为 province=1, city=2
$where = [‘province’=>1, ‘city’=>2];

还想加个id in(1,2,3) 的条件进去 请教下怎么写

$where = ['province' => 1, 'city' => 2, 'id' => [1, 2, 3]]
Yii\db\Query
下面是官網的範例:
Where 使用方法可以詳閱
http://www.yiiframework.com/doc-2.0/yii-db-query.html
如果是小于,怎么写呢,大佬

GridView中如何判断图片是否已设置,如设置了则显示该图片,如设置则显示“设置”[2.0]

Cindyseagull阅读(29)

view中代码如下:img为model中的字段

<?= GridView::widget([
    'model' => $model,
     'tableOptions'=>['class'=>'table table-striped table-hover'],
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        'id',
        [
            'attribute'=>'img',      
            'format' => ['image',['width'=>'30','height'=>'30',]],
        ],

        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>

判断img属性是否为空,根据结果输出图片或提示
你好,这个$model是哪儿来的啊,我的怎么是未定义????

服务器上无法访问[2.0]

NiceLion阅读(31)

在本地一切访问正常,用git上传到服务器后会访问index.php出现空白,访问其他文件会报404的错误。

你可以看看 vendor 這檔案還在不在
通常在 .gitignore
這檔案裡面 會預設禁止上傳
或是你用了 dist 檔案夾裡的 js 也會有可能
信息量太少…
服务上初始化了没? 开下debug试试。

登录

找回密码

注册