2025erp系统开源免费进销存系统搭建教程/功能介绍/上线即可运营软件平台源码
系统介绍
基于ThinkPHP与LayUI构建的全方位进销存解决方案
本系统集成了采购、销售、零售、多仓库管理、财务管理等核心功能模块,旨在为企业提供一站式进销存管理体验。借助详尽的报表分析和灵活的设置选项,企业可实现精细化管理,提升运营效率。
技术框架
- 后端:采用ThinkPHP框架,确保系统稳定可靠、易于扩展。
- 前端:运用LayUI前端框架,打造美观、易用的用户界面。
功能概览
采购管理
- 支持采购订单、采购入库单等操作,实现采购流程的全程跟踪与管理。
销售管理
- 包括销货单、销货退货单等功能,助力企业提升销售效率和客户满意度。
零售管理
- 支持零售单、零售退货单、服务单、积分兑换单等多种零售场景,满足企业多样化需求。
仓库管理
- 提供库存查询、库存盘点、库存预警等功能,确保库存数据的准确性和及时性。
财务管理
- 涵盖收款单、付款单、其他收入单、其他支出单等财务操作,实现财务精细化管理。
报表分析
- 提供详尽的数据报表和单据核销功能,为企业决策提供有力支持。
系统设置
- 包括基础资料、辅助资料、高级设置等选项,助力企业轻松完成系统配置和个性化定制。
开源版下载与联系方式
下载地址:
点可云ERP-V6.0开源进销存系统https://gitee.com/yimiaoOpen/nodcloud
功能概览与截图:点可云-专注于行业软件开发与综合服务 – 一秒云软件中心化繁为简,引领高效新纪元!点可云公司及一秒开源团队感谢您的支持,开源地址在下方 文字不多,但可能对您的业务有帮助,辛苦您花费几分钟阅读一下!如果多我们有什么建议和反馈 可以联系下面的客服微信。购买等…https://2024.okmg.cn/277.html
安装教程
- 下载代码:
- 点击GIT开源社区里的右侧发行版,下载所需版本(任选一种压缩方式)。
- 点击GIT开源社区里的右侧发行版,下载所需版本(任选一种压缩方式)。
- 配置站点:
- 打开宝塔面板,点击添加站点。
- 配置站点信息,输入域名,勾选创建MySQL,选择PHP版本5.6-7.3。
- 确定后,进入刚创建的站点目录。
- 打开宝塔面板,点击添加站点。
- 上传并解压代码:
- 上传下载好的代码压缩包。
- 解压后,将代码从
nodcloud-6.0.6
目录剪切到根目录。
- 上传下载好的代码压缩包。
- 检查与配置:
- 确保代码在根目录。
- 检查下方检测项目,确保均为绿色(如有红色项,按要求修改)。
- 伪静态勾选
thinkphp
,避免登录无反应问题。伪静态勾选 thinkphp,否则会出现点击登录没有反应的问题
至此安装完成,请尽情的使用吧!!!
- 确保代码在根目录。
至此,安装完成!请尽情使用!
附带部分代码参考
<?php
//通用函数库
//获取系统版本号
function get_ver(){return file_get_contents($_SERVER['DOCUMENT_ROOT'].DS.'application'.DS.'index'.DS.'ver');
}
//获取文件夹大小
function get_dir_size($dir){static $sizeResult = 0;$handle = opendir($dir);while (false!==($FolderOrFile = readdir($handle))) { if($FolderOrFile != "." && $FolderOrFile != "..") { if(is_dir("$dir/$FolderOrFile")){ $sizeResult += get_dir_size("$dir/$FolderOrFile"); }else{ $sizeResult += filesize("$dir/$FolderOrFile"); } } } closedir($handle); return round(($sizeResult/1048576),2);
}
//二维数组返回指定键名集合
function array_field($arr,$key){$data=array();foreach ($arr as $arr_vo) {$arr=array();foreach ($key as $key_vo) {if(isset($arr_vo[$key_vo])){$arr[$key_vo]=$arr_vo[$key_vo];}}$data[]=$arr;}return $data;
}
//递归获取指定ID树状数组结构
function find_tree_arr($mode,$arr){static $tree=array();foreach ($arr as $vo) {$sub=db($mode)->where(['pid'=>$vo])->select()->toarray();array_push($tree,$vo);if(!empty($sub)){$more=find_tree_arr($mode,array_column($sub,'id'));}}return $tree;
}
//获取文件目录列表,该方法返回数组
function getDir($dir){$dirArray[]=NULL;if (false!=($handle=opendir($dir))){$i=0;while(false!==($file = readdir($handle))){//去掉.|..|以及带.xxx后缀的文件if($file!="."&&$file!=".."&&!strpos($file,".")){$dirArray[$i]=$file;$i++;}}closedir ($handle);//关闭句柄}return $dirArray;
}
//数组指定条件搜索
//$data数据内容,$arr搜索条件['key|key1'=>['in|eq','val']]
//in是包含,eq是等于
function searchdata($data,$arr){$info=[];if(is_array($data) && is_array($arr)){foreach ($data as $data_vo){$nod=true;//初始化状态foreach ($arr as $key=>$arr_vo){//判断多键值$val='nod_initial';foreach (explode('|',$key) as $key_vo) {$val=$val==='nod_initial'?$data_vo[$key_vo]:$val[$key_vo];}//val取值成功if($val!=='nod_initial'){if($arr_vo[0]=='in'){//包含判断strstr($val, $arr_vo[1])||($nod=false);}else if($arr_vo[0]=='eq'){//相等判断$val==$arr_vo[1]||($nod=false);}}}$nod&&(array_push($info,$data_vo));//加入数据}}return $info;
}
//多表多条件find查询
//$arr [['table'=>'plug','where'=>['only'=>1]]]]
function more_table_find($arr){$resule=false;//默认未找到foreach ($arr as $vo) {$find=db($vo['table'])->where($vo['where'])->find();if(!empty($find)){$resule=true;//找到数据break;}}return $resule;
}
//删除目录
function removedir($dirName){if(!is_dir($dirName)){return false;}$handle=@opendir($dirName);while(($file=@readdir($handle))!==false){if($file!='.'&&$file != '..'){$dir=$dirName.DS.$file;is_dir($dir)?removedir($dir):@unlink($dir);}}closedir($handle);return rmdir($dirName);
}
//生成插件秘钥
function get_plug_key($time){$key=config('api_key');//私有秘钥return md5($time.'|'.$key);
}
//HTML代码压缩
function compress_html($string) {$string = str_replace("\r\n", '', $string);$string = str_replace("\n", '', $string);$string = str_replace("\t", '', $string);$pattern = ["/> *([^ ]*) *</","/[\s]+/","/<!--[^!]*-->/","/\" /","/ \"/","'/\*[^*]*\*/'"];$replace = [">\\1<"," ","","\"","\"",""];return preg_replace($pattern, $replace, $string);
}
//CSS代码压缩
function compress_css($string) {$string = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $string);$string = str_replace(["", "\r", "\n", "\t", ' ', ' ', ' '], '', $string);return $string;
}
//构造SQL-返回设置项的指定处理方式
//$info原始数据内容,$set设置项,$model数据表,$full是否允许为空(默认不允许)
//md5:MD5加密|like:包含查询|full_like:不为空包含查询|in:包含查询(传入数组)
//full_dec_1:不为空内容减1|stime和etime:时间区间查询|full_eq:不为空等于数据
//full_name_py_link:不为空扩展包含查询|full_division_in:不为空分割集合查询
//full_goodsclass_tree_sub:不为空商品分类集合查询//continue:不处理跳过
function get_sql($info,$set=[],$model,$full=true){$sql=[];//预设返回数据$field=db($model)->getTableFields();//读取数据表字段信息array_push($field,'start_time','end_time');//加入时间字段//循环数据foreach ($info as $info_key=>$info_vo) {//判断数据字段是否存在if(!in_array($info_key,$field)){continue;}//判断字段是否需要单独处理if(isset($set[$info_key])){//需要处理,判断类型if($set[$info_key]=='md5'){//md5加密$sql[$info_key]=md5($info_vo);}elseif($set[$info_key]=='like'){//包含查询$sql[$info_key]=['like','%'.$info_vo.'%'];}elseif($set[$info_key]=='full_like'){//不为空包含查询empty($info_vo)||($sql[$info_key]=['like','%'.$info_vo.'%']);}elseif($set[$info_key]=='in'){//包含查询$sql[$info_key]=['in',$info_vo];}elseif($set[$info_key]=='full_dec_1'){//不为空内容减1empty($info_vo)||($sql[$info_key]=$info_vo-1);}elseif($set[$info_key]=='stime' || $set[$info_key]=='etime'){//时间查询if(!isset($sql['time'])){$time_key='time';//时间字段KEY$start_time=$info[array_search("stime",$set)];//取出开始时间KEY并读取数值$end_time=$info[array_search("etime",$set)];//取出结束时间KEY并读取数值$egt=['egt',strtotime($start_time)];//大于等于$elt=['elt',strtotime($end_time)+86399];//小于等于(加当天)if(!empty($start_time) && empty($end_time)){//开始时间不为空,结束时间为空$sql[$time_key]=$egt;}elseif(!empty($end_time) && empty($start_time)){//结束时间不为空,开始时间为空.$sql[$time_key]=$elt;}elseif(!empty($end_time) && !empty($start_time)){//开始时间不为空,结束时间不为空$sql[$time_key]=[$egt,$elt];}}}elseif($set[$info_key]=='full_eq'){//不为空等于数据empty($info_vo)||($sql[$info_key]=$info_vo);}elseif($set[$info_key]=='full_name_py_link'){//不为空扩展包含查询empty($info_vo)||($sql['name|py']=['like','%'.$info_vo.'%']);}elseif($set[$info_key]=='full_division_in'){//不为空分割集合查询empty($info_vo)||($sql[$info_key]=['in',explode(",",$info_vo)]);}elseif($set[$info_key]=='full_goodsclass_tree_sub'){//不为空分割集合查询empty($info_vo)||($sql[$info_key]=['in',tree_sub('goodsclass',$info_vo)]);}elseif($set[$info_key]=='continue'){//不处理跳过continue;}}else{//无需单独处理//判断是否允许空值if($full){if(is_array($info_vo)||!preg_match('/^\s*$/',$info_vo)){$sql[$info_key]=$info_vo;}}else{$sql[$info_key]=$info_vo;}}}return $sql;
}
//同步SQL字段
//$exclude:需要排除的字段
function syn_sql($info,$model,$exclude=[]){$sql=[];//读取数据表字段信息if(empty(Session('syn_sql_'.$model))){$field=db($model)->getTableFields();Session('syn_sql_'.$model,$field);}else{$field=Session('syn_sql_'.$model);}foreach ($info as $key=>$vo) {//判断数据字段是否存在if(in_array($key,$field) && !in_array($key,$exclude)){//排除ID等于0的if($key=='id' && empty($vo)){continue;}else{$sql[$key]=$vo;}}else{continue;}}return $sql;
}
//判断字段存在并不为空
function isset_full($arr,$key){if(isset($arr[$key])&&!empty($arr[$key])){return true;}else{return false;}
}
//计算多维数组最多数组数量
function CalArrMaxCount($arr){static $nums = 0;//对多维数组进行循环foreach ($arr as $vo) {if(is_array($vo)){$count=count($vo);//判断是否多维数组if ($count==count($vo,1)) {$count > $nums&&($nums=$count);}else{CalArrMaxCount($vo);}}}return $nums;
}
//删除超时文件|危险功能-慎用
//$path='skin/upload/xlsx/'del_time_file
function del_time_file($path,$time=30){$filesnames=scandir($path);//获取文件目录$now=time();//当前时间foreach ($filesnames as $key=>$name){//排除掉..if ($key>1){$nod=$path.$name;//文件路径if ($now-filectime($nod)>$time){unlink($nod);}}}
}
//优化小数位
function opt_decimal($val){$val=bcsub($val,0,config('decimal'));//统一小数位$arr=explode('.',$val);if(count($arr)>1){if($arr[1]=='00'){$val=$arr[0];}else{$nod=str_split($arr[1]);foreach (array_reverse($nod,true) as $key=>$vo) {if($vo=='0'){unset($nod[$key]);}else{break;}}$val=$arr[0].'.'.implode('',$nod);}}return $val;
}
//计算二维数组字段总和
//$tab_data,['total','actual','money']
function get_sums($arr,$keys){$resule=[];foreach ($keys as $key) {$list = array_column($arr, $key);$resule[$key]=array_sum($list);}return $resule;
}
//导出EXCEL
function export_excel($file_name,$data,$down=true){vendor("Execl.PHPExcel");$PHPExcel=new PHPExcel();//实例化$cellname=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'];//列标识$shell=$PHPExcel->getActiveSheet (0);//当前工作簿$shell->setTitle ('NODCLOUD.COM');//工作簿名称$shell->getDefaultColumnDimension()->setWidth(13);//设置默认行宽$shell->getDefaultRowDimension()->setRowHeight(16);//设置默认行高$shell->getDefaultStyle()->getFont()->setName('宋体');//设置默认字体$shell->getPageMargins ()->setTop (0.2);//设置上边距$shell->getPageMargins ()->setBottom (0.2);//设置下边距$shell->getPageMargins ()->setLeft (0.2);//设置左边距$shell->getPageMargins ()->setRight (0.2);//设置右边距//循环加入数据$rownums=1;//初始化行数$max_cell=CalArrMaxCount($data);//获取多维数组最多数组数量//循环增加数据foreach ($data as $data_vo) {//判断数据类型if($data_vo['type']=='title'){//标题行$cellnums=0;//初始化列数$shell->mergeCells ($cellname[$cellnums].$rownums.':'.$cellname[$max_cell-1].$rownums);//合并单元格$shell->setCellValue ($cellname[$cellnums].$rownums,$data_vo['info'])->getStyle ($cellname[$cellnums].$rownums)->applyFromArray (['font'=>['bold'=>true,'size'=>12],'alignment'=>['horizontal'=>PHPExcel_Style_Alignment::HORIZONTAL_CENTER]]);//设置内容|居中|粗体|12号$shell->getRowDimension($rownums)->setRowHeight(28);//设置行高$rownums++;//自增行数}elseif($data_vo['type']=='node'){//节点行$cellnums=0;//初始化列数//设置背景色$shell->getStyle($cellname[$cellnums].$rownums.':'.$cellname[$max_cell-1].$rownums)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('e7e6e6');;//设置背景颜色;foreach ($data_vo['info'] as $data_info) {$shell->setCellValue ($cellname[$cellnums].$rownums,$data_info);$cellnums++;//自增列数}$shell->getRowDimension($rownums)->setRowHeight(16);//设置行高$rownums++;//自增行数}elseif($data_vo['type']=='table'){//表格数据$key_arr=[];//循环增加表头$cellnums=0;//初始化列数foreach ($data_vo['info']['cell'] as $cell_key=>$cell_vo) {$shell->setCellValue ($cellname[$cellnums].$rownums,$cell_vo)->getStyle ($cellname[$cellnums].$rownums)->applyFromArray (['font'=>['bold'=>true],'alignment'=>['horizontal'=>PHPExcel_Style_Alignment::HORIZONTAL_CENTER]]);//设置内容|居中|粗体;array_push($key_arr,$cell_key);//加入键值$cellnums++;//自增列数}$shell->getRowDimension($rownums)->setRowHeight(16);//设置标题行高$rownums++;//自增行数//循环增加表格数据头foreach ($data_vo['info']['data'] as $data_vo) {$cellnums=0;//初始化列数$RowHeight=16;//是否存在扩展信息foreach ($key_arr as $key_vo) {if(is_array($data_vo[$key_vo])){//扩展信息if($data_vo[$key_vo]['type']=='img'){//图像$drawing=new PHPExcel_Worksheet_Drawing();$drawing->setPath ($data_vo[$key_vo]['info']);//设置图像路径$drawing->setOffsetX (3);//设置X偏移距离$drawing->setOffsetY (3);//设置Y偏移距离$drawing->setWidth (98);//设置图像宽度$drawing->setCoordinates ($cellname[$cellnums].$rownums)->setWorksheet ($shell);//设置内容$imginfo=getimagesize($data_vo[$key_vo]['info']);//读取图像信息$NodHeight=$imginfo[1]/($imginfo[0]/86);//计算行高|按照宽度缩放比例缩放$NodHeight>16&&($RowHeight=$NodHeight);//最小高度16}}else{//文本信息$shell->setCellValueExplicit($cellname[$cellnums].$rownums,$data_vo[$key_vo],PHPExcel_Cell_DataType::TYPE_STRING);//设置内容并指定文本格式}$cellnums++;//自增列数}$shell->getRowDimension($rownums)->setRowHeight($RowHeight);//设置数据行高$rownums++;//自增行数}}}//设置边框$shell->getStyle ('A1:'.$cellname[$max_cell-1].($rownums-1))->applyFromArray (['borders'=>['allborders'=>['style'=>PHPExcel_Style_Border::BORDER_THIN]],'alignment'=>['vertical'=>PHPExcel_Style_Alignment::VERTICAL_CENTER]]);//输出文件ob_get_contents()&&(ob_end_clean());//清除缓冲区,避免乱码$writer=PHPExcel_IOFactory::createWriter ($PHPExcel,'Excel2007');//判断文件操作if($down==true){//直接下载header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$file_name.'.xlsx"');header("Content-Disposition:attachment;filename=$file_name.xlsx");//attachment新窗口打印inline本窗口打印$writer->save ('php://output');exit;}else{//保存文件$file_path=ROOT_PATH.'skin/file/xlsx/'.$file_name.'.xlsx';$writer->save ($file_path);return $file_path;//返回文件路径}
}
//获取xlsx文件数据
function get_xlsx($file){vendor("Execl.PHPExcel");$reader=PHPExcel_IOFactory::createReader ('Excel2007')->setReadDataOnly (true)->load ($file);//简易方式加载xlsx文件$resule=$reader->getSheet (0)->toArray (null,false,false,true);//获取首个工作簿信息并转为数组//过滤空白行foreach ($resule as $key=>$vo) {if(count(array_unique($vo))==1){unset($resule[$key]);}}array_walk_recursive($resule,function(&$nod){$nod===null?($nod=''):$nod=htmlentities($nod);});//NULL转空白字符|拦截XSSreturn $resule;
}
//获取通用正则
function get_regex($nod){$regex=['empty'=>"/^\s*$/g",//空判断'tel'=>"/^1\d{10}$/",//手机号判断'phone'=>"/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/",//座机号判断'tax'=>"/^[A-Z0-9]{15}$|^[A-Z0-9]{17}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/",//税号判断'number'=>"/^[0-9]*$/",//数字组合判断'plus'=>"/^\d+(\.\d{1,2})?$/",//含0正数判断最多2位小数'email'=>"/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/",//邮箱判断'time'=>"/^(19|20)\d{2}-(0?\d|1[012])-(0?\d|[12]\d|3[01])$/",//时间正则"numerical"=>"/^(\-)?\d+(\.\d{1,2})?$/",//正负数值2位小数];return $regex[$nod];
}
//汉字转拼音
//$type[head:首字母|all:全拼音]
function zh2py($text,$type='head'){$nod=new \org\zh2py();$resule=$nod::encode($text,$type);return strtolower($resule);//返回结果转小写}
//生成条形码
//$type[true:直接输出|false:保存文件]
function txm($text,$type=true){$file_name=time().'_'.mt_rand();//当前时间戳加随机数$file_path=$_SERVER['DOCUMENT_ROOT'].'/skin/images/code/'.$file_name.'.png';$root=$_SERVER['DOCUMENT_ROOT'];require_once($root.'/vendor/Barcode/BCGFontFile.php');require_once($root.'/vendor/Barcode/BCGColor.php');require_once($root.'/vendor/Barcode/BCGDrawing.php');// 条形码的编码格式require_once($root.'/vendor/Barcode/BCGcode128.barcode.php');// 加载字体大小$font=new \BCGFontFile ($_SERVER['DOCUMENT_ROOT'].'/vendor/Barcode/Arial.ttf',18);//颜色条形码$color_black=new \BCGColor (0,0,0);$color_white=new \BCGColor (255,255,255);$drawException=null;try {$code=new \BCGcode128 ();$code->setScale (2);$code->setThickness (30);// 条形码的厚度$code->setForegroundColor ($color_black);// 条形码颜色$code->setBackgroundColor ($color_white);// 空白间隙颜色$code->setFont ($font);// $code->parse ($text);// 条形码需要的数据内容}catch (Exception $exception){$drawException=$exception;}//根据以上条件绘制条形码$drawing=new \BCGDrawing ('',$color_white);if ($drawException){$drawing->drawException ($drawException);}else {$drawing->setBarcode ($code);$drawing->draw ();}// 生成PNG格式的图片if ($type){$drawing->finish (\BCGDrawing::IMG_FORMAT_PNG ,$file_path,$type);exit;}else {$drawing->finish (\BCGDrawing::IMG_FORMAT_PNG ,$file_path,$type);return $file_path;}
}
//生成二维码
//$type[true:直接输出|false:返回文件地址]
function ewm ($text,$type=true){$file_name=time().'_'.mt_rand();//当前时间戳加随机数vendor ("phpqrcode.phpqrcode");$size='6';$level='H';$padding=2;$nod=$_SERVER['DOCUMENT_ROOT'].'/skin/images/code/'.$file_name.'.png';$re=QRcode::png ($text,$nod,$level,$size,$padding);if ($type){ob_end_clean();//清除缓冲区,避免乱码header('Content-Type:image/png');imagepng(imagecreatefromstring(file_get_contents($nod)));exit ;}else {return $nod;}
}
//递归查询数据表树结构归属数据
function tree_sub ($model,$id){static $resule=[];$db=db($model);$info=$db->where(['pid'=>$id])->column ('id');foreach ($info as $vo) {$sub=$db->where(['pid'=>$vo])->column ('id');if(empty($sub)){array_push($resule,$vo);}else{tree_sub($model,$vo);}}array_push($resule,$id);return $resule;
}
//多维数组重组指定字段一维数组
function arraychange($arr,$key){return array_unique(array_column($arr,$key));
}
//查询数组指定字段合并赋值
//$type merge 组合 intersect 交集
function sql_assign(&$sql,$field,$data,$type='merge'){if(isset($sql[$field])){if($type=='merge'){$arr=array_merge($sql[$field][1],$data);}elseif($type=='intersect'){$arr=array_intersect($sql[$field][1],$data);}$data=array_unique($arr);}$sql[$field]=['in',$data];
}
//合并单个二维数组
function arr_merge($arr){$resule=[];foreach ($arr as $vo) {$resule=array_merge($resule,$vo);}return array_unique($resule);
}
//压缩文件为ZIP并下载
function file_to_zip($zip_name,$file_arr,$down=true){del_time_file('skin/file/zip/');empty($file_arr)&&(die('[ 文件数据为空 ]'));//空数据检验$path="skin/file/zip/".$zip_name.".zip";$zip=new ZipArchive();if ($zip->open($path,ZIPARCHIVE::CREATE)!==TRUE) {exit('创建压缩文件失败!');}foreach ($file_arr as $file_vo) {$zip->addFile($file_vo,basename($file_vo));}$zip->close();if($down){header("Cache-Control: max-age=0");header("Content-Description: File Transfer");header('Content-disposition: attachment; filename='.basename($path)); //文件名header("Content-Type: application/zip"); //zip格式的header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件header('Content-Length: '.filesize($path)); //告诉浏览器,文件大小@readfile($path);//输出文件;exit;}else{return true;}
}
//二维数组删除KEY指定条件数组
function arrs_key_del(&$arr,$condition){foreach ($arr as $key=>$vo) {//匹配数据if(isset($vo[$condition[0]]) && $vo[$condition[0]]==$condition[1]){unset($arr[$key]);}}
}
//GET POST提交
function http($url,$param,$action="GET"){$ch=curl_init();$config=array(CURLOPT_RETURNTRANSFER=>true,CURLOPT_URL=>$url); if($action=="POST"){$config[CURLOPT_POST]=true; }$config[CURLOPT_POSTFIELDS]=http_build_query($param);curl_setopt_array($ch,$config);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);$result=curl_exec($ch); curl_close($ch);return $result;
}
相关文章:

2025erp系统开源免费进销存系统搭建教程/功能介绍/上线即可运营软件平台源码
系统介绍 基于ThinkPHP与LayUI构建的全方位进销存解决方案 本系统集成了采购、销售、零售、多仓库管理、财务管理等核心功能模块,旨在为企业提供一站式进销存管理体验。借助详尽的报表分析和灵活的设置选项,企业可实现精细化管理,提升运营效…...

Android实战经验篇-busybox小工具
Android开发系列文章请转如下链接 Android实战经验篇-系列文章 Android Display Graphics系列文章-汇总 俗话说“工欲善其事,必先利其器!” 在原生Android系统中,提供的基础调试命令是基于toybox的。支持的命令不够全面,而Busy…...

上海艾一公司-运维工程师知识点备战
1.AD域控(ActionDirectory活动目录) ad域的作用:批量管理主机和用户(所以数量要多用这个才合适) 前置1:VM安装Windows镜像 2.IT资产管理 3.会议室管理...

【网络安全】Web安全基础- 第一节:web前置基础知识
目录 前言一、 中间件1.1消息中间件1.2数据库中间件1.3web服务器中间件1.4应用服务器中间件1.5远程过程调用中间件 二、源码**组成部分:**1、**前端(客户端)代码:**2、**后端(服务器端)代码**:3…...

数仓开发那些事_番外(2)
一闪在摸爬滚打了数年后,结合去年获得了个优秀员工,现在负责数据开发一面。 神州员工:一闪,你们还缺人不,不想当外包了。 一闪:我只负责招开发,实施的招聘我参与不了哇。(所以你能…...

Linux常用指令-----下
Linux常用指令------上 Linux常用指令------中 Linux系列 文章目录 Linux系列前言一、more指令二、less指令三、head指令和tail指令四、grep指令五、zip指令和unzip指令六、tar指令1、打包压缩2. 预览3. 解压解包 前言 在上一篇博客中,我給大家介绍了cat指令&#…...

MySQL通过binlog日志进行数据恢复
记录一次阿里云MySQL通过binlog日志进行数据回滚 问题描述由于阿里云远程mysql没有做安全策略 所以服务器被别人远程攻击把数据库给删除,通过查看binlog日志可以看到进行了drop操作,下面将演示通过binlog日志进行数据回滚操作。 1、查询是否开始binlog …...

【AIGC】与模型对话:理解与预防ChatGPT中的常见误解
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯模型的工作原理和用户期望差异人工智能模型的基本工作原理认知上的局限与误解用户期望与模型实际能力的差距精确理解用户意图的重要性实际应用中的建议 &…...

字符2
strncpy n表示最多拷贝n个字符到目标字符串,当源字符串的字符个数不够时,就拷贝\0直至拷贝n个(源字符串不一定有\0),相对strcpy更加安全 char* strncpy (char* destination, const char* source, size_t n); strncat 当源字符串…...

25年宁德时代社招在职晋升Verify测评SHL题库:语言理解+数字推理考什么?
宁德时代的社招测评采用Verify系统,主要分为两大核心部分:语言理解和数字推理。 1. **语言理解部分**:包括阅读理解、逻辑填空和语句排序等题型。要求应聘者在17分钟内完成30题,旨在考察应聘者的阅读速度、理解准确性和逻辑性。 …...

数据转换:连接数据孤岛,释放信息价值
引言 在当今这个数据驱动的时代,数据转换已成为企业获取竞争优势的关键。随着数据量的爆炸性增长,不同来源、不同格式的数据需要被整合和转换,以便于分析和决策。本文将探讨数据转换的重要性、常见方法、工具以及最佳实践。 数据转换的重要…...

提升PHP技能:18个实用高级特性
掌握PHP基础知识只是第一步。 深入了解这18个强大的PHP特性,将显著提升您的开发效率和代码质量。 1、超越 __construct() 的魔法方法 虽然 __construct() 为大多数开发者所熟知,PHP 却提供了更多强大的魔术方法,例如: class Da…...

MySQL基础操作(2)
目录 1. CONCAT() 2. 3. ! 或 <> 4. IS NULL 5. IS NOT NULL 6. BETWEEN ... AND ... 7. LIKE 8. ORDER BY 9. LIMIT 10. LENGTH() 11. SUBSTR() 12. UPPER() 13. LOWER() 14. CONCAT_WS() 15. REPLACE() 16. INSTR() 17. TRIM() 18. IFNULL() 19. SY…...

Windows环境 (Ubuntu 24.04.1 LTS ) 国内镜像,用apt-get命令安装RabbitMQ
一、环境 Windows11 WSL(Ubuntu 24.04.1) 二、思路 1 用Windows中的Ubuntu安装RabbitMQ,贴近Linux的线上环境; 2 RabbitMQ用erlang语言编写的,先安装erlang的运行环境; 2 用Linux的apt-get命令安装,解决软件依赖…...

web网页前后端交互方式
参考该文, 一、前端通过表单<form>向后端发送数据 前端是通过html中的<form>表单,设置method属性定义发送表单数据的方式是get还是post。 如使用get方式,则提交的数据会在url中显示;如使用post方式,提交…...

LN61C 高精度 低功耗 小封装 电压检测芯片
1、产品概述 LN61C 系列芯片是使用 CMOS 技术开发的高精度、低功耗、 小封装电压检测芯片。检测电压在小温度漂移的情况下保持 极高的精度。客户可选择 CMOS 输出或 Open Drain 输出。 2、产品特点 高精度: 2% 低功耗:2.0A ( VIN1.5V …...

自动驾驶控制与规划——Project 2: 车辆横向控制
目录 零、任务介绍一、环境配置二、算法三、代码实现四、效果展示 零、任务介绍 补全src/ros-bridge/carla_shenlan_projects/carla_shenlan_stanley_pid_controller/src/stanley_controller.cpp中的TODO部分。 一、环境配置 上一次作业中没有配置docker使用gpu,…...

Bootstrap-HTML(五)图像基础样式
Bootstrap-HTML(五)图像基础样式 前言一、圆角图片二、圆形图片三、缩略图四、对齐图像五、图片居中六、响应式图片 前言 在之前的博客中,我们已经详细了解了 Bootstrap5 中诸多实用的组件和样式类,比如徽章与表格等,…...

bain.js(十二):RNN神经网络实战教程 - 音乐乐谱生成 -人人都是作曲家~
系列文章: (一):可以在浏览器运行的、默认GPU加速的神经网络库概要介绍(二):项目集成方式详解(三):手把手教你配置和训练神经网络(四)…...

Endnote | 查看文献所在分组
软件版本:Endnote X8 第一种方式: 在文献上右键——记录摘要,即可在弹出页面上看到自定义和智能组的分组情况。 第二种方式: 在菜单栏点击文献——记录摘要,也可以查看分组情况。 注: 新版本的endnote软件…...

DateRangePickerDialog组件的用法
文章目录 概念介绍使用方法示例代码我们在上一章回中介绍了DatePickerDialog Widget相关的内容,本章回中将介绍DateRangePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的DateRangePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为…...

数据库合并操作:深入理解 MERGE INTO 语句
在数据管理和操作中,我们常常面临着将源数据合并到目标表中的需求。无论是对现有记录进行更新,还是对缺失的记录进行插入,甚至有时候需要删除不再符合条件的记录,这些操作通常都需要多条 SQL 语句来完成。然而,SQL 中有…...

联发科MTK8788_MT8788安卓核心板安兔兔跑分_安卓主板方案商
MT8788安卓核心板具有集成的蓝牙、fm、WLAN和gps模块,是一个高度集成的基带平台,包括调制解调器和应用处理子系统,启用LTE/LTE-A和C2K智能设备应用程序。该芯片集成了工作在2.0GHz的ARM Cortex-A73、最高可达2.0GHz的ARM Cortex-A53和功能强大…...

计算机网络技术基础:6.数据传输方式
数据传输是指利用信号把数据从发送端传送到接收端的过程,通常可以从多个不同的角度对数据传输方式进行描述。 一、并行传输和串行传输 数据在信道上传输时,按照使用信道的多少可以分为串行传输和并行传输两种方式。 1.串行传输 在计算机中,…...

免费开源了一个图床工具 github-spring-boot-starter
文章目录 第一步,新建一个SpringBoot项目第二步,在pom文件里面引入jar包第三步,配置你的github信息github.authorization1、进入github官网,登录账号,点击头像,选择setting2、选择[Developer Settings](htt…...

Mysql之YUM安装时GPG 密钥报错问题处理
一、背景说明 使用YUM安装mysql5.7的时候报错,报错信息提示未安装公钥。博主查看/etc/yum.repos.d/mysql-community.repo配置文件中关于公钥的配置,确实启用了公钥验证,博主再排查过程中还是走了一些弯路,最终顺利解决了ÿ…...

Hw亮度省电
1. 亮度控制策略 /decompile-hw/decompile/app/HwPowerGenieEngine3/src/main/res/xml/backlight_policy.xml <?xml version"1.0" encoding"utf-8"?> 2 <backlight_policy xmlns:android"http://schemas.android.com/apk/res/android&qu…...

【信息系统项目管理师-论文真题】2015下半年论文详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论题一:大项目或多项目的成本管理解题思路写作要点论题二:项目的采购管理解题思路写作要点论题一:大项目或多项目的成本管理 随着移动互联网、物联网、云计算、大数据等新一代信息技术的广泛应用,我国目前…...

django的model中定义【记录修改次数】的这个字段该用什么类型
django中定义对于某个文章应用的数据库中使用到记录修改次数的这个字段 如models.py中的配置 from django.db import models from django.utils import timezone from django.contrib.postgres.fields import ArrayFieldclass Article(models.Model):# Titlestitle_cn model…...

windows openssl编译x64版libssl.lib,编译x64版本libcurl.lib,支持https,vs2015编译器
不要纠结,直接选择用perl编译! 告诫想要用弄成vs编译版的,暂时先别给自己增加麻烦 告诫,以下执行的每一步,都不要纠结 先安装环境 nasm 64位版本 https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/nasm-…...