Laravel CURD返回值

26. February 2018 Laravel 0
save() 返回布尔值 insert()返回布尔值 delete()返回布尔值 destroy()返回删除条数 update()返回更新条数 Eloquent ORM方法返回值 create()返回Model对象 all()返回Eloquent集合 get( ) 返回Eloquent集合 find( ) 返回Model对象 first()返回Model对象

PHP中isset,empty,array_key_exists布尔值问题

02. February 2018 PHP 0
<?php /** * Created by PhpStorm. * User: lijian * Date: 1/25/18 * Time: 4:47 PM */ $a=1; $b=0; $c=”; $d=null; $e=false; var_dump(isset($a)); var_dump(isset($b)); var_dump(isset($c)); var_dump(isset($d)); var_dump(isset($e)); var_dump(isset($f)); echo ‘————-‘.”n”; var_dump(empty($a)); var_dump(empty($b)); var_dump(empty($c)); var_dump(empty($d)); var_dump(empty($e)); var_dump(empty($f)); echo ‘——-Array——‘.”n”; $data[‘a’]=1; $data[‘b’]=0; $data[‘c’]=”; $data[‘d’]=null; $data[‘e’]=false; var_dump(array_key_exists(‘a’,$data)); var_dump(array_key_exists(‘b’,$data)); var_dump(array_key_exists(‘c’,$data)); var_dump(array_key_exists(‘d’,$data)); var_dump(array_key_exists(‘e’,$data)); var_dump(array_key_exists(‘f’,$data)); 输出结果: bool(true) bool(true) bool(true) bool(false) bool(true) ...

PHP 基础知识

02. February 2018 PHP 0
1.Get和Post区别 ①Get幂等,Post不幂等(幂等是指同一个请求方法执行多次和仅执行一次的效果完全相同)。 ②Get是从服务器上获取数据,post是向服务器传送数据。 Get适合传送小数据,IE下url长度限制2083(2K+35),Http协议规范没有对url长度限制,不同浏览器对url长度限制不尽相同,Chrome这种主流浏览器,正常使用最好在4096(4k)以下,有人     统计最高可到7675,具体数据不知。 Post没有长度限制,但受服务器配置限制,如post_max_size,也受脚本执行时间,内存等限制。 除此之外,还有 PUT:在服务器更新资源(客户端提供改变后的完整资源) PATCH:在服务器更新资源(客户端提供改变的属性) DELETE:从服务器删除资源 HEAD:获取资源的元数据 OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的 ③Get 只接受ASCII字符,URL对所有人可见。Post没有限制,通过请求header请求。当然抓包的话,可以看到。 ④Get请求方式,浏览器把http header 和data一起发送出去,服务器相应200,返回数据。 Post请求,浏览器先发送header,服务器相应100 (Continue 初始的请求已经接受,客户应当继续发送请求的其余部分),浏览器再发送data,服务器相应200,返回数据。 2.Cookie 和 Session 的区别和关系 ①cookie存在浏览器,根据请求的路径自动发送(包括Ajax请求),请求在服务器端进行处理。 session是存在服务器的,用于区分会话和不同用户的访问,session可存在内存,数据库,文件中。session id存在cookie中,服务器端根据客户端发过来的cookie中的session id来判断保持会话。 ②cookie 数量和大小有限制,不同浏览器对同一网站下最大cookie数不相同,每个域名cookie限制为20个不在正确,最少也是30.大小限制4K。超出后内容将丢失。Session 无此限制。 3.单引号和双引号的区别 双引号中可以包含字符串变量,能被解释器替换。单引号中的内容看成普通字符串,即使有变量也不会被解释器替换。 4.isset 和 empty 的区别 参考:‘https://www.wizardcode.cn/2018/02/02/45.html’ php中 零,空字符串,false,null ,不存在的变量 在empty中都返回true。 php中,null和不存在的变量在isset中返回false。 php数据中,键名存在,键值为null,可通过array_key_exists判断是否存在。 5.echo、print_r、print、var_dump 之间的区别 echo 可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。 print 函数print打印一个值,如果字符串成功显示则返回true,否则返回false。 print_r() 可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印”n”。 var_dump() ...

Laravel 获取图片数组并自定义存储

23. January 2018 Laravel 0
控制器: $schooldetail = CollegeDetail::find($id); if ($request->hasFile(‘imgs’)) { $imgs = $request->file(‘imgs’); foreach ($imgs as $key => $value) { $path = $value->storeAs($id . ‘/photos’, Uuid::uuid1()->getHex() . ‘.jpg’, “college”); $img[] = explode(‘/’, $path)[2]; } if (empty($schooldetail->imgs)) { $schooldetail->imgs = implode(‘,’, $img); } else { $schooldetail->imgs = $schooldetail->imgs . ‘,’ . implode(‘,’, $img); } } 视图: <form action=”/updatecollegedetail” id=”testform” ...

Laravel 数据库通知实例

23. January 2018 Laravel 0
完成官方文档的先决条件后,打开创建好的通知类(通常存在 app/Notifications 文件夹里) 格式化数据库通知,官方实例 public function toArray($notifiable) { return [ \'invoice_id\' => $this->invoice->id, \'amount\' => $this->invoice->amount, ]; } 初次之外,其他可用代码如下: public function via($notifiable)//设置消息频道为 database{ return [\'database\']; } public $invoice; public function __construct($invoice=\'\')//invoice为控制器方法中出过来的数据,在构造函数中赋值给invoice { $this->invoice=$invoice;  } 在控制器中定义方法: public function test() { $invoice[\'id\']=100; $invoice[\'amount\']=200;        $user = User::find(1);//指定用户,也可为当前登录用户。 $user->notify(new InvoicePaid($invoice)); } 至此数据库消息通知完毕。

Laravel 文件存储问题整理

23. January 2018 Laravel 0
if (isset($data[\'avatar\'])) { $file=$request->file(\'avatar\'); $path = $file->storeAs(\'avatar\', $data[\'id\'].$file->getClientOriginalExtension()); $member->avatar = $avatar.$path; } $file->getClientOriginalExtension() 获取文件扩展名 $file->getClientOriginalName() 获取文件原始名称 $file->getClientMimeType() 获取文件类型 $file->getClientSize() 获取文件大小 更多函数在 vendor/symfony/http-foundation/File/UploadedFile.php 自定义磁盘路径 \'college\' => [ \'driver\' => \'local\', //使用local驱动 \'root\' => \'../public/img/colleges\', //此选项为文件存储路径,推荐使用相对路径,可以把目标文件存储到任意位置. \'url\' => env(\'APP_URL\').\'/storage\',// \'visibility\' => \'public\', ], root默认使用的storage_path设置路径,文件目录在/storage下,若在storage之外储存文件,推荐使用相对路径,如上. url设置的路径为root的符号链接,即root对应url的地址.通过访问url地址可以定向到root下. 若不生效,试下config:clear  

Laravel 邮件发送问题整理

23. January 2018 Laravel 0
class SendEmail extends Mailable { use Queueable, SerializesModels; public $order; public function __construct($code) { $this->order=$code; } public function build() { return $this->view(\'emails.email\')->subject(\'欢迎您使用Myuniuni\'); } } 通过构造函数赋值order,我用在随机验证码中。 在view后面通过使用subject 给邮件设置标题。 若邮件发送使用SSL, 若MAIL_HOST=smtp.mxhichina.com,则 MAIL_ENCRYPTION=ssl 若MAIL_HOST=https://smtp.mxhichina.com,则MAIL_ENCRYPTION=

Laravel Cookie使用&&记住我问题总结

23. January 2018 Laravel 0
当访问laravel网站后,系统默认在本地写入两条Cooike,名字分别为XSRF-TOKEN和laravel_session,Value通过加密存储,若value值一经修改,laravel则废弃失效 当用户在登陆时选择记住我时,成功登陆以后会下入另一条Cookie,名为remember_web_59b*,其有效期为五年,这显然是不安全的,你会发现把cookie添加到另外一台 电脑或浏览器,刷新一下就可以成功登陆,而且是一劳永逸,而真正用户不知情。使用cookie登陆本身就有安全问题,暂不考虑这些因素,在现有的cookie上进一步加强 安全。     第一步:登陆成功后增加一个cookie,作为登录序列,在数据库user表中增加listorder字段 protected function loginList() { $listcode = time(); $op = User::find(Auth::id()); $op->listorder = $listcode; if ($op->save() > 0) {            $loginlist = Cookie::queue(\'loginlist\', $listcode, 1000000);//在客户端写入cookie } } 在LoginController重写redirectTo protected function redirectTo() { $this->loginList(); return \'/home\'; } 使用密码成功登陆后可在客户端和数据库插入对应的值,通过cookie登录,不经过LoginController 第二步:在HomeController中,构造函数加入了auth中间件,故只有认证通过的用户可访问。路由home对应HomeController的index方法 public function index(Request $request) { $loginlist = ...

Laravel 用户认证问题总结

23. January 2018 Laravel 0
当登录成功以后,再次访问登录或注册url,会被重定向到首页,原因是使用了中间件,如下: app/Http/Middleware/RedirectIfAuthenticated.php中的handle方法 public function handle($request, Closure $next) { if ($this->auth->check()) { return redirect(\'/logged\'); } return $next($request); } 修改redirect的参数,可重定向到指定页面。 路由文件 web.php中 Auth:routes() 为路由键组,对应/vendor/laravel/framework/src/Illuminate/Routing/Router.php public function auth() { // Authentication Routes... $this->get(\'login\', \'[email protected]\')->name(\'login\'); $this->post(\'login\', \'[email protected]\'); $this->post(\'logout\', \'[email protected]\')->name(\'logout\'); // Registration Routes... $this->get(\'register\', \'[email protected]\')->name(\'register\'); $this->post(\'register\', \'[email protected]\'); // Password Reset Routes... $this->get(\'password/reset\', \'[email protected]\')->name(\'password.request\'); $this->post(\'password/email\', \'[email protected]\')->name(\'password.email\'); $this->get(\'password/reset/{token}\', \'[email protected]\')->name(\'password.reset\'); $this->post(\'password/reset\', \'[email protected]\');   ...

Laravel 手动创建分页 对数组分页返回

23. January 2018 Laravel 0
public function paginatorArray(Request $request) { $data = Redis::hgetall(Auth::id()); $perPage = 10; $currentPage = 1; $total = count($data); if ($request->has(‘page’)) { $current_page = $request->input(‘page’); $current_page = $current_page <= 0 ? 1 : $current_page; $current_page = $current_page > ($total/$perPage)+1 ? 1 : $current_page; } else { $current_page = 1; } $item = array_slice($data, ($current_page – 1) * ...