首页
关于
Search
1
给你10个市场数据调研报告的免费下载网站!以后竞品数据就从这里找!
182 阅读
2
php接口优化 使用curl_multi_init批量请求
144 阅读
3
《从菜鸟到大师之路 ElasticSearch 篇》
107 阅读
4
2024年备考系统架构设计师
104 阅读
5
PHP 文件I/O
92 阅读
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
登录
Search
标签搜索
php函数
php语法
性能优化
安全
错误和异常处理
问题
vue
Composer
Session
缓存
框架
Swoole
api
并发
异步
正则表达式
php-fpm
mysql 索引
开发规范
协程
dafenqi
累计撰写
786
篇文章
累计收到
30
条评论
首页
栏目
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
副业
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
页面
关于
搜索到
138
篇与
的结果
2023-08-12
PHP curl 携带cookie请求抓取源码,模拟登陆
PHP curl 携带cookie请求抓取源码,模拟登陆function request_url_data($data) #获取保存COOKIE { $cookieSuccess = __DIR__."/cookie.txt";#cookie保存文件地址 $data['user'] = '用户名'; $data['pwd'] = '密码'; $requesturl = 'http://GET登陆提交地址?'.http_build_query($data); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $requesturl); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieSuccess); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $data=curl_exec($ch); curl_close($ch); return $data; } function get_list($requesturl)#携带COOKIE请求获取登陆后的内容 { $cookieSuccess = __DIR__."/cookie.txt"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $requesturl); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieSuccess); //使用上面获取的cookies curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $data=curl_exec($ch); curl_close($ch); return $data; }
2023年08月12日
13 阅读
0 评论
0 点赞
2023-08-12
添加一个mysql用户并给予权限
老板:让你添加一个mysql用户并给予权限这么费劲吗?前言今天,程序员小王被老板训了一顿,还被扣了 1k 的工资,原因就是因为有一个项目已经上线,客户这边要求给数据库新添加一个用户,并给予用户某些权限,但是小王由于对这么方面有点生疏,都是现百度现实现,导致工作效率低,引发了老板的不满。小王痛定思痛,下决心要搞明白 mysql 的创建用户及授权,经过查阅各种资料学习, 小王对此了解的八九不离十了,从而在老板面前硬了起来……一、新建一个用户老板:给我新建一个用户joytom,密码设置为123321,并任意远程主机都能访问,五分钟完成,实现不了就给我提桶走人!小王会心一笑,对创建用户的命令早已滚瓜烂熟了,于是熟练的操作了起来:1、创建用户命令:CREATE USER ‘username‘@’host’ IDENTIFIED BY ‘password’;属性名 含义username 登陆用户名host 指定可访问的 ip,如果指定所有 ip 都能访问,将其设为通配符 % 即可。password 登陆密码,如果密码为空则无需密码2、创建用户mysql> CREATE USER 'joytom'@'%' IDENTIFIED BY '123321';Query OK, 0 rows affected (0.00 sec)查看一下是否创建成功:mysql> select user,host from user;userhostcopytest%joytom%test%root127.0.0.1root::1 localhostrootlocalhost vm-8-5-centosrootvm-8-5-centos10 rows in set (0.00 sec)3、从另一台服务器上远程登录一下:[root@instance-lzmtqrkn ~]# mysql -h 创建用户的服务器公网ip -P 3306 -u joytom -p123321Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 784Server version: 5.6.49-log Source distributionCopyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;Databaseinformation_schema1 row in set (0.03 sec)查看一下数据库,发现是没有权限的,只能看到 information_schema 数据库。二、为用户授权创建完用户后……老板:好,比以前有进步了,那你再给joytom这个用户设置一个权限,只允许查询和修改copytest数据库中的student表。小王信手拈来,又熟练的操作了一波:1、给用户授权命令grant privileges on database.tablename to “username”@’host’;privileges:用户的操作权限,如 SELECT,INSERT,UPDATE 等,如果要授予所的权限则使用 ALL。属性名 含义privileges 用户的操作权限,如 SELECT,INSERT,UPDATE 等,如果要授予所的权限则使用 ALL。database 如果不指定数据库,直接 . 即可,如果指定数据库但不指定表名,则 database.* 即可。username 登陆的用户名host 给予授权的主机 ip,例如我想让用户A的ip使用joytom用户所授予的权限,但是不想让用户B的ip来使用joytom用户的权限。2、给 joytom 用户授可查、改的权限。mysql> grant select,update on copytest.student to "joytom"@'%';Query OK, 0 rows affected (0.00 sec)3、另一台服务器去测试:发现能看到 copytest 数据库:mysql> show databases;Databaseinformation_schemacopytest2 rows in set (0.04 sec)查看一下 copytest 数据库中的 student 表:mysql> use copytest;Database changedmysql> select * from student;idname1王2李3张3 rows in set (0.04 sec)修改一下 student 表:mysql> update student set name = '小王' where id = 1;Query OK, 1 row affected (0.04 sec)Rows matched: 1 Changed: 1 Warnings: 0mysql> select * from student;idname1小王2李3张3 rows in set (0.04 sec)那删除一下 student 表中的数据呢:mysql> delete from student where id = 1;ERROR 1142 (42000): DELETE command denied to user 'joytom'@'xxxxxx' for table 'student'发现没有删除的权限,只能进行查询和修改。4、在给 joytom 用户增加一个查看视图的权限mysql> grant SHOW VIEW on copytest.student to "joytom"@'%';Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.01 sec)之前是只有查询和修改的权限,现在在查看一下:mysql> show grants for 'joytom'@'%';Grants for joytom@%GRANT USAGE ON . TO 'joytom'@'%' IDENTIFIED BY PASSWORD '*437F1809645E0A92DAB553503D2FE21DB91270FD'GRANT SELECT, UPDATE, SHOW VIEW ON copytest.student TO 'joytom'@'%'2 rows in set (0.00 sec)发现,已经有了查看视图的权限。三、撤销用户权限老板:咳咳,很好,现在 joytom 不是有三个权限了么(查询,修改,查询视图),那你把查询视图的权限给去掉,只留查询和修改。小王心中暗喜,这我都学了,很基础的啊……1、撤销用户权限命令revoke privileges ON database.tablename FROM ‘username‘@’host’;撤销(revoke)的和授予(grant)的基本一样,除了 revoke(对应 grant)和 from(对应 to)2、撤销 joytom 用户的查看视图的权限mysql> revoke SHOW VIEW on copytest.student from "joytom"@'%';Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)再次查看:mysql> show grants for 'joytom'@'%';Grants for joytom@%GRANT USAGE ON . TO 'joytom'@'%' IDENTIFIED BY PASSWORD '*437F1809645E0A92DAB553503D2FE21DB91270FD'GRANT SELECT, UPDATE ON copytest.student TO 'joytom'@'%'2 rows in set (0.00 sec)发现已经没了查看视图的权限。grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。四、删除一个用户老板:把 joytom 这个用户删掉让我看看。小王:好嘞,40 秒完事。1、删除用户命令drop user username@host2、删除用户先查看一下现在的所有用户:mysql> select user,host from user;userhostcopytest%joytom%test%root127.0.0.1root::1 localhostrootlocalhost vm-8-5-centosrootvm-8-5-centos10 rows in set (0.00 sec)删除 joytom:mysql> drop user joytom@'%';Query OK, 0 rows affected (0.00 sec)再次查看,发现已经没了 joytom 这个用户:mysql> select user,host from user;userhostcopytest%test%root127.0.0.1root::1 localhostrootlocalhost vm-8-5-centosrootvm-8-5-centos10 rows in set (0.00 sec)五、修改用户的密码老板:把 joytom 这个用户密码修改一下。小王:好嘞老板。1、修改用户密码命令set PASSWORD FOR ‘username‘@’%’ = PASSWORD (‘要修改的密码’)2、修改用户SET PASSWORD FOR 'joytom'@'%' = PASSWORD('123123');六、密码过期和锁定用户老板大喜:非常好非常好,加薪 2k,继续努力,另外给其它同事讲一下密码过期和锁定用户的问题。感谢老板,我会继续努力,我这就去整理一下课件。1、关于密码过期在 MySQL5.6.6 版本起,增加了 password_expired 功能,它允许设置 MySQL 数据库用户的密码过期时间。这个特性已经添加到 mysql.user 数据表,它的默认值是”N”,表示已禁用密码过期功能强制设置为密码过期:mysql> ALTER USER 'joytom'@'%' PASSWORD EXPIRE;Query OK, 0 rows affected (0.00 sec)强制设置密码过期后,虽然能够登陆,但是一切权限都为空了。2、关于 mysql5.7 锁定用户在创建的时候锁定用户:CREATE USER 'username'@'host' account unlock;已存在的时候锁定用户:ALTER USER 'joytom'@'%' ACCOUNT LOCK;解锁账号:ALTER USER 'joytom'@'%' ACCOUNT UNLOCK七、权限常用关键字老板:现在你对 mysql 的权限管理掌握的还算可以了,咳咳,今天下班前给我整理一个权限常用关键字,整理不好就加会班吧。小王想,幸亏这个我在学的时候就已经整理过啊,看样今天不用加班了!
2023年08月12日
14 阅读
0 评论
0 点赞
2023-08-12
如何用 PHP 获取目录大小
如何用 PHP 获取目录大小function GetDirectorySize($path){ $bytestotal = 0; $path = realpath($path); if($path!==false && $path!='' && file_exists($path)){ foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){ $bytestotal += $object->getSize(); } } return $bytestotal; }
2023年08月12日
6 阅读
0 评论
0 点赞
2023-08-12
原生php递归删除文件+文件夹
原生php递归删除文件+文件夹<?php function deldir($dirname){ if(file_exists($dirname)) {//判断是否存在文件夹 $dir=opendir($dirname);//打开文件夹 while($filename=readdir($dir)){//读取123文件夹里面的数据 if($filename!="." && $filename!=".."){//除去.并且..除外 $file=$dirname."/".$filename; if(is_dir($file)){ deldir($file); //使用递归删除子目录,就是说判断123文件夹里面有没有文件夹,如果有遍历然后删除 }else{ echo '删除文件<b>'.$file.'</b>成功<br>'; unlink($file); } } } closedir($dir); echo '删除目录<b>'.$dirname.'</b>成功<br>'; rmdir($dirname); } } deldir('D:3');//比如文件在d盘的123目录下 ?>
2023年08月12日
9 阅读
0 评论
0 点赞
2023-08-12
PHP的可调用类型(callable)总结
PHP的可调用类型(callable)总结// 1 普通函数 call_user_func('my_function'); // 2类的静态方法 call_user_func(['MyClass', 'myCallbackMethod']); // 3对象方法 call_user_func([new MyClass(), 'myCallbackMethod']); //4类的静态方法(2) call_user_func('MyClass::myCallbackMethod'); //5匿名函数 call_user_func(function(){echo '匿名函数';}); //6箭头函数 call_user_func(fn() =>print('箭头函数')); //7相对关系 call_user_func(array('B', 'parent::who')); // 8: Objects implementing __invoke can be used as callables class C { public function __invoke($name) { echo 'Hello ', $name, "\n"; } }$c = new C(); call_user_func($c, 'PHP!'); ?>其它用法:call_user_func(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0 call_user_func(array(__NAMESPACE__ .'\Foo', 'test')); // As of PHP 5.3.0 class myclass { static function say_hello() { echo "Hello!\n"; } } $classname = "myclass"; call_user_func(array($classname, 'say_hello')); call_user_func($classname .'::say_hello'); // As of 5.2.3 $myobject = new myclass(); call_user_func(array($myobject, 'say_hello'));
2023年08月12日
12 阅读
0 评论
0 点赞
1
...
17
18
19
...
28