谁一开始就是大神?

PHP 第67页

PHP

使用\Yii::$app->user->isGuest;登陆前状态为1登陆后如下报错[2.0]

Bobdear阅读(40)

使用\Yii::$app->user->isGuest; 登陆前状态为1 登陆后 重新返回刷新登陆页面 就以下报错
没有user表,我数据库表是users。但是这个user是在哪里调用的?
Database Exception – yii\db\Exception

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'qichunzhan.user' doesn't exist
The SQL being executed was: SELECT * FROM `user` WHERE (`id`='1') AND (`status`=10)
Error Info: Array
(
    [0] => 42S02
    [1] => 1146
    [2] => Table 'qichunzhan.user' doesn't exist
)
↵
Caused by: PDOException

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'qichunzhan.user' doesn't exist

in /Users/chenqi/NetBeansProjects/WEB/GitOschina/qichunzhan/vendor/yiisoft/yii2/db/Command.php at line 839

去User模型里把表改成users
那个user表最好不要动,楼主,除非熟悉了再动,我吃过很多亏.
应该在 common/models/user.php 在这里看看登录的
也有可能在你的loginform里面

yii2怎么设置网站logo?[2.0]

youthpony阅读(37)

yii2 怎么设置网站logo

在/layouts/main.php中如下定义
我的为什么不行啊,还是yii自带的logo
已解决,谢谢

我想问一下关于命名空间的事,麻烦了解的人进来看一下[2.0]

Bobelephant阅读(41)

命名空间
比如yii2.0某个控制器里要调用系统自带的控制器
use yii/web/Controller
请问这个后半部分是路径吗?
但是我查了一下这个文件,它是在’XXX/yii2/web/controller’这个目录下,它自己里面写的命名空间是namespace yii/web
这个倒是和使用时是对应的,可是却不是路径啊,就算是路径应该也是yii2/web/ 但是我两边都改成yii2却是出现问题,麻烦哪位明白的朋友跟我说一下命名空间这一块,谢谢了

yii2的命名空间完全取决于别名!多了解一下别名,就知道具体是怎么自动加载的了。楼上几个木说到点上。
还可以参见一下这个地址:http://www.yiichina.com/tutorial/395 里面写的很详细。
命名空间 跟路径应该没啥关系吧,它想怎么命名就怎么命名。
yii2的命名空间是根据它文件自己的命名空间决定怎么调用的。比如:就像你说的,use yii/web/Controller,它是在XXX/yii2/web/controller这个目录下,它自己写的命名空间是namespace yii/web,那么在其他的控制器中调用的话,命名空间就是:它自己的命名空间,加上它是属于什么文件。比如:它是属于控制器的,那么调用时的命名空间就是:文件自己的命名空间/文件类型(Controller/Model)。你可以在仔细看看,或者你看看第三方类是怎么调用的,它们的命名空间是如何写的,自己再试试,就找到感觉了。

高级怎么实现前后台分离?[2.0]

Hazellovely阅读(40)

类似这样的 
前台:http://www.demo.com/index.php
后台:http://www.demo.com/admin.php

我用的是该高级版,有front和backend两个模块,不会配置,求教!

你把www.demo.com所指向的目录配置到advanced目录下,
那么访问后台:http://www.demo.com/backend/web/index.php
访问到前台:http://www.demo.com/frontend/web/index.php
但是这样,url就比较长了,所以,你最好分配两个域名,比如后台域名为:backend.demo.com,然后这个域名目录直接指向到advanced/backend/web目录下,那么你访问的时候:http://backend.demo.com/index.php 就访问到后台
前台配置也类型,比如域名为frontend.demo.com,然后这个域名目录直接指向到advanced/frontend/web目录下,那么你访问的时候:http://frontend.demo.com/index.php 就访问到前台
生产环境中,这种方式用的也不少,一般把域名配置到公司首页,比如:www.demo.com,然后公司的管理后台用二级域名。
当然,还有其他的解决方案。看你习惯配置成哪种。
如果是本地环境,可以通过配置hosts文件,也可以通过端口来区分。
其实很好处理的,已经内置给你考虑周到了

debug出来的信息为什么有的重复,有的却不重复呢??[2.0]

ecycrab阅读(41)

debug出来的信息为什么有的重复,有的却不重复呢?? 我并没有将一个方法执行多次。

1

15:18:27.722	0.5 ms	SELECT	SELECT * FROM `config_items` WHERE (`name`='site_logo') AND (`categoryid`=1)
/var/www/html/1.php (83)
/var/www/html/index.php (78)
/var/www/html/RoomController.php (114)
[+] Explain

2

15:18:27.724	0.4 ms	SELECT	SELECT * FROM `config_items` WHERE (`name`='site_logo') AND (`categoryid`=1)
/var/www/html/1.php (83)
/var/www/html/index.php (78)
/var/www/html/RoomController.php (114)

345.png

系统里有好多关联操作,比如你进行一个操作时需要验证你是否已登录,是否是管理员等等.

这个删除语句要怎么改呀兄弟们快来![2.0]

HaHCherry阅读(40)

Info::deleteAll('id>:id',array(':id'=>2));我要删除ID大于2的数据库数据 结果系统提示我未定义的变量!咋回事呀 Info是模型层的名字

Info::deleteAll(['>','id',2])
这样

$app=newyii\web\Application($config);[2.0]

Aibytom阅读(43)

1.$app=new yii\web\Application($config);
2.

class Yii extends \yii\BaseYii
{
}

以上的

yii\web\Application
yii\BaseYii

是什么意思呢?

命名空间:http://php.net/manual/zh/language.namespaces.rationale.php
有何作用:避免命名重复;顾名思义,我定义多个区域(命名空间),彼此之间的区域互不干扰,但同区域下却不能有相同的命名;
命名空间, 他类似于指向某个目录,该目录下不能有同名的文件(相同的命名空间下不能有同名的类)一开始是为了解决类名重复问题。
后来用做类自动加载

对数据库数据进行更改操作的新手问题[2.0]

Leolovely阅读(38)

$demo=Info::find()->where(['id'=>2])->all();
        $demo=array('name'=>$model->name,'E_mail'=>$model->email,'phone'=>$model->phone);
        $info->save();

应该怎么改了 研究好久啦啊 运行不报错 数据库没有被更改 只是添加了一条空数据
已经解决 谢谢大家 真心感谢

若已经存在$id 记录,则更新,若不存在,则写入新数据记录。

gii数据库选择[2.0]

ACGnice阅读(41)

请问下使用gii生成代码时报错

Table Name
Table 'Country' does not exist.

在config/web.php里面是配置了多个数据库连接的,现在不知道怎么默认设置某一个数据库来进行gii生成

gii 上有一个Database Connection ID的值,默认是db,就是你web.php中配置的那个db,你的多数据库应该不叫db,叫什么,这个Database Connection ID就填什么
图床
没涉及到多库,不过你可以先只连接一个,用gii生成文件后再恢复多库

有关单例模式和安全性

WendyStone阅读(38)

PHP刚学半年,yii2摸索了也有几个月了,。但有两个问题一直困扰我- –
在慕课网上和同学了解一点防范sql注入,xss攻击啥的,也没了解透。。就是照着做了几个例子。还了解了单例模式工厂模式什么的。然后他们会在用yii2做东西时,自己再写单例、工厂、自己写那几个防sql注入防什么攻击的函数进去。但我一直觉得没必要。。。故来求证下。
1,用yii2 输入框传过来的值 存入数据库、对数据库操作,还需要防范sql注入啥的嘛。因为我感觉噶- -,yii2作为这么吊的一个框架这些基本的安全问题 ,底层啥的肯定都已经考虑到这些问题了吧?
2,new 一个model的时候,还需要自己写单例模式嘛。。

求解

。。说实话,yii框架本身对post没有任何过滤的, \Yii::$app->request->post()就是$_POST,看源码就知道了。不过你用框架自带的ar操作数据库,where条件不用字符串形式是会自己防sql注入的。使用框架自带的activeForm来提交表单能防csrf攻击,所有显示用户输入内容的地方严格使用Html::encodeHtmlPurifier::process来过滤能防xss。
至于new model使用单例。。呵呵。
1、安全:YII确实已经做了防范,只要用yii给出的接收数据方法就能起到一定的安全防护作用。
如:
yii2接收post数据 \Yii::$app->request->post() ,方法会过滤或者转义一些字符, 但是也会有些人依然用原生的 $_POST[] 来获取,这样写就跟框架本身没什么关系,是搬码猿的问题。所以用YII自带的方法是有一定的安全作用的,不需要自己去写。
可能是人家想给看教程的同学讲解原理,才会自己写过滤方法, 不然你只知道YII安全,但是为什么安全?安全在哪里?有没有了解呢?
2、单例模式是为了节省系统资源,一个类只能实例化一个对象。最经典的就是 数据库连接类:程序执行一次,打开一个连接就够了。
在YII框架中自己写单例模式看情况而定,反正我是没写过。
人家的视频教程我觉得应该是要讲解原理的东西,而不是说让你们这样做。
当然 还有一种情况,你的水平极高,你发现yii框架过滤的不够安全,你可以自己写安全方法。

登录

找回密码

注册