;

1.软件下载 https://www.wampserver.com/ 2.提示缺少c++运行库,需全部下载,Visual C++ Redistribuable Packages一共8个,x86和64都要安装 https://wampserver.aviatechno.net/

win11安装wamp 2023年11月26日
;

1.php代码部分 $auth = $_SERVER[‘HTTP_AUTHORIZATION’]; var_dump($auth); 此时可以看到打印为空 2.新建.htaccess文件 SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 此时就可以获取到authorization 3.备注 在阿里云虚拟主机中,创建的.htaccess文件在文件刷新后会消失,代码配置效果依然有效,说明文件被隐藏了

云虚拟主机php读取authorization 2022年4月13日
;

<?php // // A very simple PHP example that sends a HTTP POST to a remote site // $ch = curl_init(); $body = array(‘userName’=>’15555555555′,’password’=>’111111’); $postData = http_build_query($body); curl_setopt($ch, CURLOPT_URL,"http://xxxxxxxx.xxx/xx/xx"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,$postData); curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘Content-Type: application/x-www-form-urlencoded’)); // receive server response … curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec ($ch); curl_close…

php中使用curl处理x-www-form-urlencoded类型的post 2022年4月13日
;

1.相关设置 邮箱设置中开启,IMAP/SMTP服务,此时需要手机发送短信,返回一个随机密码 服务器地址需要加上ssl,ssl://smtp.163.com 端口465 2.其它 阿里云虚拟主机中到后台开启PHP函数fsockopen设置,此函数默认是关闭的 3.再 老版本的mail库会存在ereg不存在的报错,更换为preg_match并处理衍生报错即可 相关文章:https://www.cnblogs.com/blogxjc/p/10591894.html

php使用网易邮箱的smtp发送邮件 2021年1月15日
;

1.数据准备 (1.)页面数据可以直接复制的话直接复制,然后新建txt文本文件保存 (2.)不便于复制的数据,整个复制dom节点放入准备好的html文件,通过jquery进行数据筛选,数据拼接时候,用逗号,进行字段分割,使用\n换行。字符串拼接完成后在回显到页面中,此时可以得到格式化好的数据,直接复制后保存到txt文本文件中。 js部分 var str = ” var res = $(‘tr’).each(function(){ var code = $(this).find(‘td’).eq(0).text(); var name = $(this).find(‘td’).eq(1).text(); var row = code + ‘,’ + name + ‘\n’ str += row }); $(‘.result’).text(str); html部分 <div class="result" style="white-space: pre;"></div> 2.生成CSV文件 新建excel文件->数据->导入数据->选择数据源->上面生成的txt->生成->另存为csv文件 3,修改csv编码为utf-8(否则此处中文字符会报错) csv文件->打开方式->记事本->…

网页中采集数据保存为csv文件并导入phpmyadmin 2020年12月31日
;

1.问题描述 阿里云虚拟主机,数据库中的中文信息导入后都成了空的, 2.处理步骤 首先想到的是编码不一致,源数据库是utf8,因此设置设置阿里云数据库,相关操作 show variables like ‘character%’ /*查看编码方式*/ set names ‘utf8’ alter database name character set utf8 相关说明: character_set_client,character_set_connection,这两个是数据库操作导入或者导出解释字符集编码, character_set_results是客户端或者程序显示编码, character_set_database是数据库编码,尽量让这几个编码都统一,常用都设置成utf8编码。 执行set names ‘utf8’会同时设置character_set_client,character_set_connection,character_set_results的编码, 执行alter database name character set utf8;可以设置数据库编码 3,一顿操作后,发现依然无法正常显示,要么就是乱码 4.换个思路 既然目标数据库这么坑爹,那就源数据库导出时候换个编码,更换为gb2132后到处,再次执行导入操作可以正常显示…

阿里云虚拟主机,通过sql文件导入数据库后,包含中文的字段不显示 2019年8月18日
;

关键字 AUTOINCREMENT 只能用于整型(INTEGER)字段 CREATE TABLE fileInfo ( id INTEGER PRIMARY KEY AUTOINCREMENT, name STRING, status INTEGER NOT NULL );

sqllite创建自增字段 2018年8月15日
;

文件路径:’my.ini’ 修改为: default-storage-engine=INNODB

Specified key was too long; max key length is 1000 bytes 2018年7月30日
;

报错原因:抓取页面大小超过了600000 解决办法:文件头部找到MAX_FILE_SIZE修改即可 define(‘MAX_FILE_SIZE’, 6000000); 相关资料:https://github.com/samacs/simple_html_dom/blob/master/example/example_basic_selector.php 官方文档:http://simplehtmldom.sourceforge.net/

simple html dom 报错’Fatal error: Call to a member function find() on boolean in ‘的处理 2018年6月19日
;

mysql -u root -p //登录 mysql -h 112.65.203.33 -u root -p //h主机地址,登录远程数据库需要提供主机地址 show databases; //显示数据库 show tables; //显示表 show columns from user; //显示user表的所有字段 describe user; //describe和show columns from等效,是上面的快捷方式,注意此处表明不能是mysql的保留关键字,比如若表名为group,此命令会报错 show status; //显示广泛的服务器状态信息 help show; //显示所有的show语句 create database strapi; //创建 use strapi; //选择数据库 exit; //退出 注意事项:命令后有分号 select select distinct price from demo; //只返回不同的值 select price from demo limit 5; //限制5条 select price from demo limit 5,5; //下一个5条,第一个数为开始位置 select price from demo limit 5 offset 5; //同上一行,替代语法 sele…

mysql命令行操作 2018年5月24日
;

1.查看当前php环境 打开phpinfo(); 搜索Architecture (x64|x86) #x86是32位 x64是64位 搜索Thread Safety (enabled|disabled) #enabled是TS版本,disabled是NTS版本 搜索PHP Extension Build (API20131226,TS,VC11) #api版本,VC11是编译器版本 根据图上配置信息,我们需要找的php扩展就是php 5.6 VC11ts-x64 2.下载php_redis.dll 地址一:https://pecl.php.net/package/redis/2.2.7/windows 地址二:https://windows.php.net/downloads/pecl/releases/redis/2.2.7/ 3.文件及配置 将下载的文件解压,然后复制php_redis.dll到C:\wamp\bin\php\php5.6.31\ext 然后编辑apache的php.ini扩展C:\wamp64\bin\apache\apache2.4.27\bin extension=php_redis.dll 重启wamp后到phpinfo()中查看 4.php连接并测试redis数据库 <?php $redis = new R…

wamp下redis安装及配置 2018年3月10日
;

Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。 前序: 首先要明白PHPSESSID看似多次刷新都不会改变其实是没有删除本地相关联的cookie,删除的方法 session_destroy();//删除服务器端的session文件 setcookie(session_name(),”,time()-3600,’/’);//删除本地相关联的cookie session_unset();//清空内存中的cookie或者是$_SESSION = array(); 然后再刷新相应的页面你就会看到PHPSESSID会发生变化了,根据此可以得:如果session文件已经创建则不重新生成PHPSESSID,否则需要重新生成,生成规则,就看下边喽……! 现在经过测试应该是不是检测session文件是否存在,而是检测PHPSESSID的cookie是否存在并且是否未过期!特此更正! 可能PHP开发者心中多少都思考过这么两个问题: 种植在客户端浏览器中的PHPSESSIONID会出现重复吗? PHPSESSIONID安全性如何,有没可能被黑客轻易的仿造呢? 带上这个问题,我稍微注意了一下PHP的源码后,疑…

PHP中Session ID的实现原理 2018年2月8日
;

一、默认机制,用磁盘文件来实现PHP会话。php.ini配置:session.save_handler = files 1、session_start() A、 session_start()是session机制的开始,它有一定概率开启垃圾回收,因为session是存放在文件中,   PHP自身的垃圾回收是无效的,SESSION的回收是要删文件的,这个概率是根据php.ini的配置决定的,   但是有的系统是 session.gc_probability =0,这也就是说概率是0,而是通过cron脚本来实现垃圾回收。 session.gc_probability =1 session.gc_divisor =1000 session.gc_maxlifetime =1440//过期时间 默认24分钟 //概率是session.gc_probability/session.gc_divisor 结果 1/1000, //不建议设置过小,因为session的垃圾回收,是需要检查每个文件是否过期的。 session.save_path =//好像不同的系统默认不一样,有一种设置是 “N;/path” //这是随机分级存储,这个样的话,垃圾回收将不起作用,需要自己写脚本 B、 session会判断当前是否有$_COOKIE[s…

彻底理解PHP的SESSION机制 2018年2月7日
;

PHP中,如果要获取SESSION数据,必须要有对应的session_id,session_id的获取方式有两种 1.基于客户端的cookie 2.基于url 先说第一种情况,基于客户端的cookie.服务器端的脚本在开启session后,会依据php.ini来存储session,下面列举一些 session.save_handler 定义存储和获取与会话关联的数据的处理器的名字。默认为 files。如果设定为files(session.save_handler = files),则采用的是php内置机制,如果想自定义存储方式(比如存储到数据库中),则使用session_set_save_handler()进行自定义设置 session.save_path 定义了传递给存储处理器的参数(注释1)。如果选择了默认的 files 文件处理器,则此值是创建文件的路径。默认为 /tmp,也可以修改,比如session.save_path = “e:/wamp/tmp”。也可以使用session_save_path()在脚本中设定(一定在session_start前设定) 举例 假设脚本是session.php session_save_path(getcwd()."/session_folder");//为…

PHP SESSION机制,从存储到读取 2018年2月7日
;

1.路径 /etc/mysql/my.cnf 2.去掉log_bin的注释 log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M 3.重启mysql service mysql restart 4.生成文件 /var/log/mysqlmysql-bin.000001 mysqlbinlog可用于数据库被误删后的恢复

mysql开启binlog 2018年1月16日
;

public: 公开可见,用在类中,声明类的某个方法或变量属性可以直接在外部调用。 protected: 对象内部可见 (该对象的子对象同样可以访问) private: 对象自身内部可见 (不包含该对象的子对象,或者说private属性和方法不会被继承) global: 是在方法(函数)中,如果想要使用一个在方法外部声明的变量,可以使用global来声明。 static: 静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。 const: 可以把在类中始终保持不变的值定义为常量。 define(): 函数定义一个常量。 self: 指向当前类的指针 this: 指向当前对象的指针 parent: 指向父类的指针

public protected private global static const define self this parent 2018年1月15日
;

1.file_put_contents,file_get_contents $url = ‘http://example.com/image.jpg’; $img = ‘/my/folder/flower.jpg’; //路径加新的文件名,也可以为相对路径 file_put_contents($img, file_get_contents($url)); 备注:allow_url_fopen配置项需要为true 2.copy copy(‘http://example.com/image.jpg’, ‘local/folder/flower.jpg’); 3.curl $ch = curl_init(‘http://example.com/image.jpg’); $fp = fopen(‘/my/folder/flower.jpg’, ‘wb’); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); 4.加入调试信息 $img = ""; $img = file_get_contents($image); echo $img; //for…

php下载图片并保存 2018年1月7日
;

1.mysql $dbc=mysql_connect(‘localhost’,$user,$pass) or die(‘error!’); mysql_select_db("testdb", $dbc); mysql_query("SET NAMES ‘utf8’"); $query="select * from `testtable`"; $result=mysql_query($query,$dbc) or die(‘wrong’); while($row = mysql_fetch_array($result, MYSQL_ASSOC)){ print_r($row); } 2.mysqli 3.pdo try { $dbh = new PDO(‘mysql:host=localhost;dbname=testdb;charset=UTF8’, $user, $pass); foreach($dbh->query(‘SELECT * from testtable’) as $row) { print_r($row); } $dbh = null; } catch (PDOException $e) { print "Error!: " . $e-&gt…

mysql mysqli pdo语法对比 2017年12月30日
;

首先到http://www.cz88.net/ 下载一个最新的ip库,安装ip库后会生成一个快捷方式,如下图所示: 点击打开后,出现下图界面: 点击解压,会生成一个20多兆的文本文件,打开或者下载一个UltraEdit打开,另存为utf-8的文本文档,这样可以防止出现乱码。在此之前我们要修改一下php.ini的配置,不然中途可能会出现一些错误 默认情况下:MySQL导入文件大小有限制的,最大为2M,所以当文件很大时候,直接无法导入,下面就这个问题的解决列举如下: 在php.ini中修改相关参数: 影响MySQL导入文件大小的参数有三个: memory_limit=128M,upload_max_filesize=2M,post_max_size=8M 我比较懒,直接将这三个都改成了128。 首先创建数据库 CREATE TABLE ip_data ( ipstart INT UNSIGNED NOT NULL, ipend INT UNSIGNED NOT NULL, region VARCHAR(50) NOT NULL, address VARCHAR(100) NOT NULL, PRIMARY KEY (ipstart, ipend) ) TYPE = MyISAM; 首先在PhpMyAdmin里手动建一个名称为ip_data的数据库…

利用纯真IP库建立mysql ip数据库 2017年12月1日
;

1.文件大小限制 路径:/etc/php5/apache2/php.ini 修改: upload_max_filesize = 30M post_max_size = 30M 同时memory_limit必须大于以上两项,重启服务器否则无法生效 相关文档:https://docs.phpmyadmin.net/en/latest/faq.html#faq1-16 2,文件导入报错‘Invalid column count in CSV input on line 1’ 导致此问题时因为表格的字段和数据库字段没有对应,多少个字段csv中一行就有多少条数据(不能多也不能少),主键用0填充 时间字段:结构如下2000/11/11 09:00:00 3,用wps导出的csv中文乱码 csv文件->打开方式->记事本, 文件->另存为->编码utf-8 4,表头 表头部分发现会被当成数据插入,所以一律不要表头 5,总结 第一步:将表格数据对齐到数据库表结构,空的就补空列 第二步:文件另存为csv 第三步:用记事本打开csv另存为,编码改为utf-8 第四步:phpmyadmin导入

phpmyadmin导入svc文件的相关问题 2017年11月21日
;

服务器通过HTTP响应头Set-Cookie来告诉用户代理cookie的名、值、对应的路径、有效期等等,用户代理(一般就是浏览器)保存下来后,当向后端请求数据时,就会把对应的cookie放到请求头中发给服务器。 前端也可以通过JS来设置cookie。 所以只要设置好cookie之后,浏览器会自动在请求时附上cookie,并不需要你主动提交。 PHP中设置cookie PHP中设置Cookie的函数是setcookie(还有个setrawcookie并不常用)。 setcookie(‘hello’, ‘world’, time()+3600, ‘/test/’, ‘example.com’); 这样就设置了一个名为hello值为world,有效期为当前时间加上3600秒(也就是1个小时),域名为example.com,路径为/test/(代表只能在诸如http://example.com/test/a.php这样的路径下有效)的cookie。 具体参数请参考文档http://php.net/manual/zh/function.setcookie.php 服务器发送cookie 服务器会在响应的HTTP头中包含一个Set-Cookie头: Set-Cookie: hello=world; Expires=Sun, 13 Nov 2016 11:…

cookie的运行机制 2017年11月16日
;

传统的方案是,登录页和主页是单独的两个页面,登录成功后服务器生成用户信息对应的session,然后渲染主页数据,并通过响应头将sessionid传给浏览器并生成相应的cookie文件。这样下次请求页面时,浏览器会在http header带上相应的cookie,然后服务器根据cookie中的sessionid判断用户是否登录,再显示用户数据。

sesion验证的流程 2017年10月27日
;

1.jsonp jsonp只支持GET方式,type设为POST,也会自动变为GET 2.iframe 可以使用创建一个隐藏的iframe来实现,与ajax上传图片原理一样,较麻烦 3.服务端设置Access-Control-Allow 在被请求的Response header中加入 header(‘Access-Control-Allow-Origin:*’); header(‘Access-Control-Allow-Methods:POST’); header(‘Access-Control-Allow-Headers:x-requested-with,content-type’); Access-Control-Allow-Origin:* 表示允许任何域名跨域访问 如果需要指定某域名才允许跨域访问,只需把Access-Control-Allow-Origin:*改为Access-Control-Allow-Origin:允许的域名 例如:header(‘Access-Control-Allow-Origin:http://www.client.com’);

ajax跨域总结 2017年10月18日
;

步骤一:修改全局配置文件 路径:/etc/mysql/my.cnf bind-address = 127.0.0.1 修改为: bind-address = 0.0.0.0 步骤二:针对特定用户授权 (xshell内执行sql语句始终无反馈,不得已发现在phpmyadmin内可手动修改) phpmyadmin找到user一栏,接下来’Change Login Information’选项host改为’any host’ 命令行模式下修改: update user set host = ‘%’ where user = ‘root’; //注意=两边的空格 select host,user from user; //查看结果 grant命令相关 1.格式 grant 权限 on 数据库对象 to 用户 grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’; 2.示例 权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。 当权限1,权限2,…权…

mysql用户开启远程连接 2017年10月8日