至尊技术网 - Get https://www.zzwws.cn/tag/Get/ PHP连接数据库,通过接受post请求实现增删改查 https://www.zzwws.cn/archives/4954/ 2020-11-18T15:00:00+08:00 1.html文件:<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Cache-Control" content="no-cache"> <title>PHP连接数据库实现增删改查</title> </head> <body> <div> <input type="text" name="daiHao" placeholder="代号"> <input type="text" name="keMu" placeholder="科目"> <input type="text" name="jieShu" placeholder="节数"> <button class="tianJia">添加</button> <button class="shanChu">删除</button> <button class="xiuGai">修改</button> <button class="chaZhao">查找</button> </div> <p>提示:添加可以填3个,删除只填代号,修改可以填科目和节数然后需要改哪个填代号,查询填科目和节数。</p> <table> <tbody> <!-- <tr> <th>代号</th> <th>科目</th> <th>节数</th> </tr> --> </tbody> </table> <script src="https://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script> <script> function teVal(){ daiHao = $('[name="daiHao"]').val(); keMu = $('[name="keMu"]').val(); jieShu = $('[name="jieShu"]').val(); arr = '<tr><th>代号</th><th>科目</th><th>节数</th></tr>'; } $.post('1.php',{a: 'synr'},function(ret){ teVal(); // console.log(ret); if(ret[0].code == '200'){ // alert(ret[0].msg); for(var i = 1;i < ret.length;i++){ arr += '<tr><td>'+ret[i].c_id+'</td><td>'+ret[i].c_name+'</td><td>'+ret[i].t_id+'</td></tr>'; } $('tbody').html(arr); }else{ alert(ret[0].msg); } }) //添加 $('.tianJia').on('click',function(){ teVal(); if(keMu == '' && jieShu == ''){ alert('请输入你要添加的内容!'); }else if(daiHao == ''){ alert('请输入你要添加的内容!'); }else{ $.post('1.php',{a: 'tianJia',c_id: daiHao,c_name: keMu,t_id: jieShu},function(ret){ // console.log(ret); if(ret.code == '200'){ alert(ret.msg); location.reload(); }else{ alert(ret.msg); } }) } }) //删除 $('.shanChu').on('click',function(){ teVal(); if(daiHao != ''){ var res = confirm('是否删除?'); if(res){ $.post('1.php',{a: 'shanChu',c_id: daiHao},function(ret){ if(ret.code == '200'){ alert(ret.msg); location.reload(); }else{ alert(ret.msg); } }) } }else{ alert('请输入你要删除的代号!'); } }) //修改 $('.xiuGai').on('click',function(){ teVal(); if(keMu != '' || jieShu != ''){ var res = confirm('是否修改?'); if(res){ $.post('1.php',{a: 'xiuGai',c_id: daiHao,c_name: keMu,t_id: jieShu},function(ret){ // console.log(ret); if(ret.code == '200'){ alert(ret.msg); location.reload(); }else{ alert(ret.msg); } }) } }else{ alert('请输入你要修改的内容!'); } }) //查找 $('.chaZhao').on('click',function(){ teVal(); if(keMu != '' || jieShu != ''){ $.post('1.php',{a: 'chaZhao',c_id: daiHao,c_name: keMu,t_id: jieShu},function(ret){ // console.log(ret) if(ret[0].code == '200'){ // alert(ret[0].msg); for(var i = 1;i < ret.length;i++){ arr += '<tr><td>'+ret[i].c_id+'</td><td>'+ret[i].c_name+'</td><td>'+ret[i].t_id+'</td></tr>'; } $('tbody').html(arr); }else{ alert(ret[0].msg); } }) } }) </script> </body> </html> 1.php文件:<?php $conn = mysqli_connect('localhost','cs','123456','cs','3306');//主机名或 IP 地址,MySQL用户名,MySQL密码,规定默认使用的数据库,MySQL服务器的端口号,规定 socket 或要使用的已命名 pipe if (!$conn) { die("连接错误: " . mysqli_connect_error()); } // var_dump($conn); mysqli_query($conn,"set names utf8");//设置数据库编码为utf8 header('content-type: application/json;charset=utf-8');//输出为json格式,并设置编码为utf-8 //全局 $c_id = isset($_POST['c_id']) ? trim($_POST['c_id']) : ''; $c_name = isset($_POST['c_name']) ? trim($_POST['c_name']) : ''; $t_id = isset($_POST['t_id']) ? trim($_POST['t_id']) : ''; //添加 function tianJia(){ $conn = $GLOBALS['conn'];//引用全局作用域中可用的全部变量 $c_id = $GLOBALS['c_id']; $c_name = $GLOBALS['c_name']; $t_id = $GLOBALS['t_id']; $sql = "insert into course (c_id,c_name,t_id) values ('$c_id','$c_name','$t_id')";//添加 $result = mysqli_query($conn,$sql); if($result){ return json_encode(array('code' => '200','msg' => '添加成功')); }else{ return json_encode(array('code' => '400','msg' => '添加失败')); } } //删除 function shanChu(){ $conn = $GLOBALS['conn']; $c_id = $GLOBALS['c_id']; $sql = "delete from course where c_id='$c_id'";//删除 $result = mysqli_query($conn,$sql); if($result){ return json_encode(array('code' => '200','msg' => '删除成功')); }else{ return json_encode(array('code' => '400','msg' => '删除失败')); } } //修改 function xiuGai(){ $conn = $GLOBALS['conn']; $c_id = $GLOBALS['c_id']; $c_name = $GLOBALS['c_name']; $t_id = $GLOBALS['t_id']; if($c_name != ''){ $s = "c_name='$c_name'"; }else if($t_id != ''){ $s = "t_id='$t_id'"; }else if($c_name != '' && $t_id != ''){ $s = "c_name='$c_name',t_id='$t_id'"; } $sql = "update course set $s where c_id='$c_id'";//修改 $result = mysqli_query($conn,$sql); if($result){ return json_encode(array('code' => '200','msg' => '修改成功')); }else{ return json_encode(array('code' => '400','msg' => '修改失败')); } } //查找 function chaZhao(){ $conn = $GLOBALS['conn']; $c_id = $GLOBALS['c_id']; $c_name = $GLOBALS['c_name']; $t_id = $GLOBALS['t_id']; if($c_name != ''){ $s = "c_name='$c_name'"; }else if($t_id != ''){ $s = "t_id='$t_id'"; }else if($c_name != '' && $t_id != ''){ $s = "c_name='$c_name' and t_id='$t_id'"; } $sql = "select * from course where $s";//查找 $result = mysqli_query($conn,$sql); $arr = array();//建一个空数组 $arr[] = array('code' => '200','msg' => '查找成功');//赋值到空数组里 while ($row = mysqli_fetch_assoc($result)) {//通过while循环获取 $arr[] = $row; } if($result){ return json_encode($arr); }else{ return json_encode(array('code' => '400','msg' => '查找失败')); } } //所有内容 function synr(){ $conn = $GLOBALS['conn']; $sql = 'select * from course'; $result = mysqli_query($conn,$sql); $arr = array(); $arr[] = array('code' => '200','msg' => '获取成功'); while ($row = mysqli_fetch_assoc($result)) {//通过while循环获取 $arr[] = $row; } // print_r($arr); if($result){ return json_encode($arr); }else{ return json_encode(array('code' => '400','msg' => '获取失败')); } } //转换成数组 // $result = mysqli_query($conn,$sql);//对数据库执行一次查询 // $row = mysqli_fetch_array($result,MYSQLI_ASSOC);//函数从结果集中取得一行作为关联数组,或数字数组。 MYSQLI_ASSOC,MYSQLI_NUM,MYSQLI_BOTH(默认) // print_r($row); //mysqli_fetch_assoc($result);//关联数组 //mysqli_fetch_row($result);//数字数组 //错误提示 function bc(){ return json_encode(array('code' => '400', 'msg' => '操作失败')); } $a = isset($_POST['a']) ? trim($_POST['a']) : ''; switch ($a){ case "tianJia": // 添加 echo tianJia(); break; case "shanChu": // 删除 echo shanChu(); break; case "xiuGai": // 修改 echo xiuGai(); break; case "chaZhao": // 查找 echo chaZhao(); break; case "synr": echo synr(); break; default: echo bc(); mysqli_close($conn);//关闭先前打开的数据库连接 } ?> 数据库表下载地址:https://zhizun.lanzoux.com/iuicqiiigxi php判断是否有get、post参数的方法 https://www.zzwws.cn/archives/4935/ 2020-11-11T15:15:00+08:00 第一种方法:if(is_array($_GET)&&count($_GET)>0){//判断是否有get参数。 if(isset($_GET["page"])){//判断所需要的参数是否存在,isset用来检测变量是否设置,返回true or false echo $_GET["page"];//存在 } } if(is_array($_POST)&&count($_POST)>0){//判断是否有post参数。 if(isset($_POST["page"])){//判断所需要的参数是否存在,isset用来检测变量是否设置,返回true or false echo $_POST["page"];//存在 } } 第二种方法:三元运算符$page = isset($_GET['page']) ? trim($_GET['page']) : '';//判断是否有get参数,没用就为空。 echo $page; $page = isset($_POST['page']) ? trim($_POST['page']) : '';//判断是否有post参数,没用就为空。 echo $page; 第三种方法:if(!empty($_GET)){//判断是否有get参数。 echo $GET;//存在 } if(!empty($_POST)){//判断是否有post参数。 echo $POST;//存在 } php判断请求来源地址并且限制非法来源请求 https://www.zzwws.cn/archives/4922/ 2020-11-09T19:59:00+08:00 第一种:通过获取上一个页面链接来判断//获取顶级域名 function getTopHost($url){ $url = strtolower($url); //首先转成小写 $hosts = parse_url($url); $host = $hosts['host']; //查看是几级域名 $data = explode('.', $host); $n = count($data); //判断是否是双后缀 $preg = '/[\w].+\.(com|net|org|gov|edu)\.cn$/'; if(($n > 2) && preg_match($preg,$host)){ //双后缀取后3位 $host = $data[$n-3].'.'.$data[$n-2].'.'.$data[$n-1]; }else if($n > 1){ //非双后缀取后两位 $host = $data[$n-2].'.'.$data[$n-1]; } return $host; } $strUrl = isset($_SERVER['HTTP_REFERER']) ? trim($_SERVER['HTTP_REFERER']) : ''; if($strUrl != ''){ $strUrl = getTopHost($strUrl); // echo $strUrl; $all_Array = ['zzwws.cn'];//允许请求的主域名,多个域名用,分开 $isContains = in_array($strUrl,$all_Array); if(!$isContains){ exit(json_encode(['code' => 0, 'msg' => '禁止请求'])); } } 第二种:设置只允许Ajax跨域访问(PHP获取无效)if(isset($_SERVER['HTTP_ORIGIN'])){ $origin = $_SERVER['HTTP_ORIGIN']; $strUrl = parse_url($origin); $allow_origin = ['localhost', 'www.zzwws.cn'];//只允许请求的域名 if (in_array($strUrl['host'], $allow_origin)) { header('Access-Control-Allow-Origin:' . $origin); } } 第三种:设置个密钥请求(适合PHP获取)if(!empty($_GET) || !empty($_POST)){ $key = '0f1VFZE47z';//密钥 if($_GET['key'] == $key || $_POST['key'] == $key){ echo json_encode(['code' => 1,'msg' => '请求成功']); }else{ exit(json_encode(['code' => 0, 'msg' => '禁止请求'])); } } 第四种:使用hieroglyphy验证请求hieroglyphy下载地址:https://zhizun.lanzoui.com/iwGb7wt7mwh<?php session_start(); if(empty($_POST)){ include 'hieroglyphy.php'; $addsalt = md5(mt_rand(0, 999) . time()); $_SESSION['addsalt'] = $addsalt; $hieroglyphy = new hieroglyphy(); $addsaltJs = $hieroglyphy->hieroglyphyString($addsalt); }else{ if(empty($_SESSION['addsalt']) || $_POST['hashsalt'] != $_SESSION['addsalt']){ exit(json_encode(['code' => 0,'msg' => '验证失败,请刷新页面重试'])); } exit(json_encode($_POST));//验证通过 } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script> <script> hashsalt = <?php echo $addsaltJs;?>; $.post('index.php',{time: <?php echo time();?>,hashsalt: hashsalt},function(res){ console.log(res); },'json') </script> </body> </html> 第五种:js生成签名,PHP验证签名(推荐)<?php if(!empty($_POST)){ $key = '密钥';//密钥 $second = 5;//每次请求有效期,单位秒 $domain = ['cs.zzwws.xyz']; if(!in_array(parse_url($_SERVER['HTTP_REFERER'])['host'],$domain)){ exit(json_encode(['code' => 0,'msg' => '禁止请求'])); } if($_POST['time'] <= time()-$second || !check_sign($_POST['param'].$_POST['time'],$_POST['sign'])){ exit(json_encode(['code' => 0,'msg' => '验证失败,请刷新页面重试'])); }else{ exit(json_encode(['code' => 1,'msg' => '验证成功'])); } } function check_sign($text,$sign) { global $key; if(empty($_SERVER['HTTP_REFERER'])){ return false; } $host = parse_url($_SERVER['HTTP_REFERER'])['host']; if($sign != md5($text.$host.$key)){ return false; }else{ return true; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/blueimp-md5/2.18.0/js/md5.min.js"></script> <script> // js生成签名,这些需要加密,加密平台:https://www.jsjiami.com/,使用最牛加密,密钥需要包含特殊字符 function sign(text){ return md5(text+location.host+'密钥'); } // js生成签名,这些需要加密,加密平台:https://www.jsjiami.com/,使用最牛加密,密钥需要包含特殊字符 timestamp = Date.parse(new Date())/1000; $.post('2.php',{param: 'cs',time: timestamp,sign: sign('cs'+timestamp)},function(res){ console.log(res); },'json') </script> </body> </html> php获取网页内容,curl 发起get、post请求 https://www.zzwws.cn/archives/4885/ 2020-11-04T16:12:00+08:00 获取指定的内容,主要还是用到preg_match_all()函数,只执行一次正则表达式也可以用preg_match()函数!1.html代码如下<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Cache-Control" content="no-cache"> <title>测试</title> </head> <body> <div class="box">测试</div> <div class="box">测试2</div> <div class="box">测试3</div> <div class="box">测试4</div> <div class="box">测试5</div> </body> </html> php代码如下$str = file_get_contents('1.html'); preg_match_all ('/<div class="box">(.*)<\/div>/U', $str, $pat_array); // print_r($pat_array[1][0]); for($i=0;$i<count($pat_array[0]);$i++){ print_r($pat_array[1][$i].'<br>'); } // 输出结果: // 测试 // 测试2 // 测试3 // 测试4 // 测试5 preg_match_all方法正则多个条件前后的//也可以用##的,如$regex1 = '#<strong>(.*?)</strong>#';,用了#后,这里面的</strong>就可以不用转义了!$s='<a class="js-tongjic" href="afhdfhdfh.html" monitor-shortpv-c="215874"> <img src="/image/1.png"/> <strong>123456</strong> <img src="/image/2.png"/> <strong>654321</strong></a>'; $regex = '/class="js-tongjic" href="(.*?)"[\s\S]*?src="(.*?)"[\s\S]*?<strong>(.*?)<\/strong>[\s\S]*?src="(.*?)"[\s\S]*?<strong>(.*?)<\/strong>/'; preg_match_all($regex, $s, $matche); echo '<pre>'; print_r($matche); 使用curl发送get、post请求curl把HTTP协议都封装成了很多函数,直接传相应参数即可,降低了编写HTTP协议字符串的难度。前提:在php.ini中要开启curl扩展。/** * curl获取数据 * * @param string $url 链接 * @param string|array $post post提交的数据 * @param string $cookie 模拟cookie * @param string $referer 来源地址 * @param string $proxy 模拟ip或者代理ip * @param integer $header 1显示请求头,0不显示 * @param string $userAgent 模拟用户浏览器信息 * @param array $httpheader 模拟请求头 * @param int $timeout 超时时间 * @return string|array 返回页面数据 */ function get_curl($url, $post = '', $cookie = '', $referer = '', $proxy = '', $header = 0, $userAgent = '', $httpheader = [], $timeout = 10) { $curl = curl_init(); // 配置curl中的http协议->可配置的荐可以查PHP手册中的curl_ curl_setopt($curl, CURLOPT_URL, $url); if ($post) { // POST数据 curl_setopt($curl, CURLOPT_POST, 1); // 把post的变量加上 if (is_array($post)) { curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post)); } else { curl_setopt($curl, CURLOPT_POSTFIELDS, $post); } if (is_string($post) && $arr = json_decode($post, true)) { if (is_array($arr)) { $httpheader[] = 'Content-Type: application/json; charset=utf-8'; $httpheader[] = 'Content-Length: ' . strlen($post); } } } if ($referer) { $httpheader[] = 'Referer: ' . $referer; //模拟来路 $httpheader[] = 'Origin: ' . $referer; } else { $httpheader[] = 'Referer: ' . $url; //模拟来路 $httpheader[] = 'Origin: ' . $url; } if ($cookie) { $httpheader[] = 'Cookie: ' . $cookie; //模拟cookie } if ($proxy) { $proxy = explode(':', $proxy); if (!empty($proxy[1])) { curl_setopt($curl, CURLOPT_PROXY, $proxy[0]); //代理服务器地址 curl_setopt($curl, CURLOPT_PROXYPORT, $proxy[1]); //代理服务器端口 } $httpheader[] = 'X-FORWARDED-FOR: ' . $proxy[0]; //模拟ip $httpheader[] = 'CLIENT-IP: ' . $proxy[0]; //模拟ip } else { $httpheader[] = 'X-FORWARDED-FOR: ' . $_SERVER['REMOTE_ADDR']; //模拟ip $httpheader[] = 'CLIENT-IP: ' . $_SERVER['REMOTE_ADDR']; //模拟ip } if ($header) { curl_setopt($curl, CURLOPT_HEADER, TRUE); //获取响应头信息 } if ($userAgent) { $httpheader[] = 'User-Agent: ' . $userAgent; //模拟用户浏览器信息 } else { $httpheader[] = 'User-Agent: ' . (!empty($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'); } $parseUrl = parse_url($url); if (!empty($parseUrl['host'])) { $host = 'Host: ' . $parseUrl['host']; if(!empty($parseUrl['port'])){ $host .= ':'.$parseUrl['port']; } $httpheader[] = $host; } curl_setopt($curl, CURLOPT_HTTPHEADER, $httpheader); //模拟请求头 curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); //只需要设置一个秒的数量就可以 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //返回字符串,而非直接输出到屏幕上 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); //跟踪爬取重定向页面 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_ENCODING, ''); //解决网页乱码问题 // 执行这个请求 $ret = curl_exec($curl); if ($header) { $headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE); $header = substr($ret, 0, $headerSize); $body = substr($ret, $headerSize); $ret = array(); $ret['header'] = $header; $ret['body'] = $body; } curl_close($curl); return $ret; } //get获取 $data = get_curl('https://www.baidu.com/'); //post获取 $data = get_curl('https://www.baidu.com/',[id => 1,'url' => 'www.zzwws.cn']);// 或者get_curl('https://www.baidu.com/','id=1&url=www.zzwws.cn'); //发起json数据post请求 $data = get_curl('https://www.zzwws.cn/',"{'id': 1,'url': 'https://www.zzwws.cn/'}"); 获取重定向跳转后的urlfunction redirect_url($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // 不需要页面内容 curl_setopt($ch, CURLOPT_NOBODY, 1); // 不直接输出 curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 返回最后的Location curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_exec($ch); $info = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL); curl_close($ch); return $info; }