php学习笔记

1, 自动创建控制器:

php artisan make:controller Photo/PhotoController

资源控制器处理的行为

动词路径动作路由名称
GET/resourceindexresource.index
GET/resource/createcreateresource.create
POST/resourcestoreresource.store
GET/resource/{resource}showresource.show
GET/resource/{resource}/editeditresource.edit
PUT/PATCH/resource/{resource}updateresource.update
DELETE/resource/{resource}destroyresource.destroy

2、php验证的密码自动会用hash之后密码去和数据库做对比。

  所以生成密码的时候记得用 Hash::make 生成的密码 。

// use Hash
// Hash::make($pwd);

3、去除csrf验证,接口不能访问的方法:

  

VerifyCsrfToken.php->
/**
         * Determine if the session and input CSRF tokens match.
         *
         * @param  \Illuminate\Http\Request  $request
         * @return bool
         */
        protected function tokensMatch($request)
        {
            return true;
//              $token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN');
//
//              if ( ! $token && $header = $request->header('X-XSRF-TOKEN'))
//              {
//                      $token = $this->encrypter->decrypt($header);
//              }
//
//              return StringUtils::equals($request->session()->token(), $token);
        }

  3、上传图片

前端:

<RaisedButton label="上传头像" onClick={this.handleUpImg} primary={true}>
                        <input className="upInput" type="file" ref="upimg">

                        </input>
                    </RaisedButton>

  

handleUpImg = () => {
        let finput = this.refs.upimg;
        finput.onchange = (() => {
            let fl = finput.files[0];
            if (fl.size > 2097152) {
                finput.value = "";
                this._notificationSystem.addNotification({
                    title: '提示',
                    message: "请选择不大于2M的图片!",
                    autoDismiss: 3,
                    level: 'info',
                    position: 'tr'
                })
                return;
            }
            if (finput.value.match(/\.(jpg|jpeg|JPG|JPEG)(\?.*)?$/)) {
                this.setState({imgFile: finput.files[0]});
            } else {
                finput.value = "";
                this._notificationSystem.addNotification({
                    title: '提示',
                    message: "请选择正确的图片格式!",
                    autoDismiss: 3,
                    level: 'info',
                    position: 'tr'
                })
            }
        });
        finput.click();
    }

  

handleSet = () => {
        let staff = this.state.currentStaff;
        console.log('-------->save', staff);
        let formData = new FormData();
        formData.append('headImg', this.state.imgFile);
        formData.append('id', staff.id + '');
        formData.append('email', staff.email);
        formData.append('phone', staff.phone);
        managerService.saveStaff(formData).then(res => {
            if (res.flag == '1') {
                this.handleClose_set();
                this._notificationSystem.addNotification({
                    title: 'Success',
                    message: '保存成功!',
                    autoDismiss: 3,
                    level: 'success',
                    position: 'tr'
                })
            }
        })
    }

  php:

$staff = $request::input('staff');
        $id = $request::input('id');
        $phone = $request::input('phone');
        $headimg = $request::file('headImg');
        $email = $request::input('email');
        $res = null;
        $info = "保存成功!";
        if (isset($id)) {
            $path='photos/upload/';
            if ($request::hasFile('headImg')&&$request::file('headImg')->isValid())
            {
                $clientName = $headimg->getClientOriginalExtension();
                $clientName = time().md5('picture').'.'.$clientName;
                $headimg->move($path,$clientName);
                $imgurl =  'http://'.$_SERVER['HTTP_HOST'].'/public/'.$path.$clientName;
            }
            else
                $imgurl = '';
            $res = DB::update('update ac_user set headimg=?,email=?,phone=? where ,
                [$imgurl, $email, $phone, $id]);
            $info = $imgurl;
        } else {
            $list = DB::select('select *from ac_user where loginname=? or name=?', [$staff['loginName'], $staff['name']]);
            if (count($list) > 0) {
                $res = false;
                $info = "用户名或姓名已存在!";
            } else {
                $res = DB::insert('insert into ac_user (loginname,name,headimg,email,password) values (?, ?,?,?,?)',
                    [$staff['loginName'], $staff['name'], "", "", Hash::make('123456')]);
                if (!$res)
                    $info = "保存失败!";
            }
        }
        return \Response::json(['info' => $info, flag => $res]);

  4、部署须知:

将laravel项目的文件拷贝到服务器根目录即可。修改config->database.php中的数据库配置:

'host'      => env('DB_HOST', 'localhost'),
注:host要配置为:服务器提供的数据库地址。

5、这个一定要收藏: 配置url访问时,一并走具有react路由的index.html

在项目根目录下创建文件 .htaccess

内容为:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [L]
</IfModule>