北屋教程网

专注编程知识分享,从入门到精通的编程学习平台

zzzphp save.php save_content方法下sql注入

在本地搭建服务器,httpd-vhosts.conf 中设置本地绑定的域名:

其中,zzzphp为下载的zzzphp cms的内容。

然后,本机上的zzzphp cms的目录结构为如下:

在按照要求安装好cms后,本地cms的后台地址访问地址为admin264.

在登陆后台后,使用postman发送如下请求:

必须在cookie中设置登陆服务器后返回的cookie值,否则执行将失败:

该cookie值在成功登陆服务器后台后会自动获得。

5款工具,让你轻松创建并分享优美的项目源码

作为一名开发人员,经常会遇到一些分享和展示代码的需求。例如,在博客分享知识时、请教别人编码方面问题时,都需要用到代码的展示与分享。

对于我来说感受最为强烈的就是分享知识时,作为一名IT技术方面的分享者,为了方便读者的理解,经常会在分享的文章中涉及到代码片段,而很多平台在代码展示方面不统一、不规范,尤其是微信公众号自带的代码片段,可以称得上非常简陋。

初识PHP(1):PHP是什么

PHP,Hypertext Preprocessor,翻译过来就是超文本预处理器,是一种在服务器上执行的脚本语言。

PHP可以做什么?

python开发工具PyCharm最新版本新增功能介绍

PyCharmV2022.1支持自定义包存储库的身份验证、改进的 TypedDict 和 Docker 的新服务UI。

JetBrains重磅推出Junie AI智能体,编码效率再升级

IT之家 4 月 17 日消息,JetBrains 昨日(4 月 16 日)发布公告,宣布其 Junie AI 编码智能体已进入“生产就绪”(production-ready)状态,能处理编写代码和调试运行等多步骤任务。

JetBrains 同时还更新了旧版 AI Assistant,支持接入 Anthropic Claude 3.7 Sonnet 和 Google Gemini 2.5 Pro 等新模型,并新增聊天界面多文件编辑功能。

一篇文章带你了解PHP的学习使用

ThinkPHP 5实战

如何利用vscode高效开发PHP

用最近使用PhpStorm的激活码到期了,就琢磨着换一个编辑器。vscode评价挺好的而且轻量级免费开源,所以决定vscode开发PHP。

  1. vscode介绍
  2. vscode常用的PHP插件
  3. 安装插件
  4. vscode 配置自己习惯的快捷键

后端开发干货:PHP源码阅读技巧

作者:张勇,腾讯IEG后台开发工程师

写在前面

时光匆匆 光阴似箭,今年已经是小张做码农的第N个年头了,得益于世界上最好的语言(PHP),小张的头发依旧茂密。但是项目写了一个又一个,PHP、swoole用到飞起,这些年的成长却大不如从前。

php 发送微信订阅消息

<?php

namespace app\api\service;

use app\api\exception\ApiException;
use app\api\traits\Singleton;
use think\Cache;
use think\Log;

/**
 * 微信发送消息
 * Class ExpressService
 * @package app\api\service
 */
class WxMessageService extends BaseService
{
    private $appid = 'xxxxxx'; //填入服务号AppID
    private $appsecret = 'xxxxxxxxxxxxxxx'; //填入服务号AppSecret
    /**
     * @param string $openid 微信用户的openid
     * @param string $template_id 消息的模板id
     * @param array $data 需要的参数,为数组,类型为[key=>value],key为模板中的参数,value为参数的值
     */
    public function sendMessage($openid, $template_id, $data, $page_params=null)
    {
        $access_token_info = $this->getAccessTokenNoCode();
        $access_token = $access_token_info['access_token'];

        //要发送给微信接口的数据
        $send_data = [
            "touser" => $openid,
            "template_id" => $template_id,
        ];

        $demo_data = [];
        foreach($data as $k=>$v){
            $demo_data[$k] = [
                "value" => $v
            ];
        }
        $send_data['data'] = $demo_data;

        if(!empty($page_params)){
            $send_data['page'] = $page_params;
        }

        //print_r($send_data);die;
        $url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=".$access_token;
        $result = $this->curl_post($url,$send_data);//dump($result);exit;
        $result = json_decode($result, true);
        //print_r($result);
        if($result['errcode']==0){
            return true;
        }else{
            return false;
        }
    }



    private function getAccessTokenNoCode()
    {
        $wxAppID = $this->appid;
        $wxAppSecret = $this->appsecret;
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$wxAppID."&secret=".$wxAppSecret;
        $result = $this -> http_request($url);
        $result = json_decode($result, true);
        return $result;
    }

    private function http_request($url,$data=null){
        $curl = curl_init();
        curl_setopt($curl,CURLOPT_URL,$url);
        curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);
        curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);
        if(!empty($data)){
            curl_setopt($curl,CURLOPT_POST,1);
            curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
        }
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }

    private function curl_post($url, array $params = array())
    {
        $data_string = json_encode($params);//dump($data_string);exit;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt(
            $ch, CURLOPT_HTTPHEADER,
            array(
                'Content-Type: application/json'
            )
        );
        $data = curl_exec($ch);
        curl_close($ch);
        return ($data);
    }
}

用一个示例简单讲一下网站采集的的过程

随着时代的发展,社会越来越信息快速化,所以信息更新非常的迅速,这让很多站长在更新自家的网站信息时,显得太浪费时间,该怎么办呢?那就是通过采集将别家的信息录入到自家网站的数据库中,这样做可能对网站的优化会有一定的影响,但这不是我们今天讨论的话题,今天就用一个示例简单讲一下网站采集的的过程
我们先来看下面的一个实例,这是客户的网站要求采集太平洋网站的新闻,代码如下图所示(附说明):
<?php
header("content-type:text/html;charset=utf-8");//

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言