j8typz 发表于 2024-10-4 12:43:10

0基本上手python、PHP编程,域自助服务台,自助改密解锁等功能


    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/3c6c8bba849b4266a9d7e33d16991226~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728207527&amp;x-signature=ZxUFcKInq59i%2BR8%2FD%2Fjc7KKrjo4%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">王工自研域自助服务台架构图,具备<span style="color: black;">长时间</span>未改密企业<span style="color: black;">微X</span>提醒、自助改密解锁等功能</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">全面对标宁盾微软AD自助修改<span style="color: black;">秘码</span><span style="color: black;">处理</span><span style="color: black;">方法</span></p><span style="color: black;">https://www.nington.com/solution-adpassword/</span>每年可为<span style="color: black;">机构</span>节省5W-10W元

    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">说明</span></strong><span style="color: black;">王工域控为windows2022,Self Service Password搭建在OracleLinux8上,python版本为python3最新版本,PHP为OracleLinux8默认源中的PHP7</span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">预览</span></strong><span style="color: black;"><span style="color: black;">通告</span>改密</span></p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/d7bfe9aadb8c4fa798d226dc47414842~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728207527&amp;x-signature=gGoj0u%2B7Jv0yXaQ%2Fg92izMPD1WM%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">自助改密</span></p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/f7efe0ae15ff44c59a7c17a5ebed503b~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728207527&amp;x-signature=45sjHPj2R4fAMdqpMBM%2BqWPX8KA%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/b7689e35693e4a409124d0b88a6b8542~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728207527&amp;x-signature=jYAOf1BCAPXbjUff9k%2BjGSEJ3oA%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/396e9ddd76474cc4a25f3104d4d7a594~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728207527&amp;x-signature=ealjP8OITh7YlYKlmY36rIVM0Fk%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/eb2e51948b77409da893f63daf5f4df8~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728207527&amp;x-signature=E4K0Y7398%2BwKi%2F3rWgoWCX6JCV4%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/aeeacbad9e53449abba96d3327ef9848~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728207527&amp;x-signature=%2FHfVWNlXO0W3nVv7Z6RxRrmDHHU%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">架构解析:</span></strong></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">1、域控上域账户<span style="color: black;">守护</span>pager属性(寻呼机),修改为企业<span style="color: black;">微X</span>ID</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">2、域控运行扫描脚本,<span style="color: black;">经过</span>计算上次修改<span style="color: black;">秘码</span>时间,超过指定日期,进行企业<span style="color: black;">微X</span>提醒;<span style="color: black;">倘若</span>未<span style="color: black;">守护</span>pager属性,写入日志</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">3、Self Service Password域控自助服务台二次<span style="color: black;">研发</span>,改为企业<span style="color: black;">微X</span>接收验证码改密</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">4、进行企业<span style="color: black;">微X</span>提醒时,先<span style="color: black;">查找</span>redis缓存,<span style="color: black;">倘若</span>access_token不存在,则获取一次,<span style="color: black;">倘若</span>存在,直接<span style="color: black;">运用</span>,缓存5400秒自动过期。</p>5、<span style="color: black;">创立</span>企业<span style="color: black;">微X</span>应用,可参考我的zabbix<span style="color: black;">文案</span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">搭建前提</span></strong></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">1、已<span style="color: black;">守护</span>域控pager属性为企业<span style="color: black;">微X</span>userid,此信息需要企业<span style="color: black;">微X</span>管理员后台<span style="color: black;">查找</span>。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">2、已正确<span style="color: black;">安排</span>Self Service Password,<span style="color: black;">能够</span>看我之前的<span style="color: black;">文案</span>。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">3、已<span style="color: black;">安排</span>redis,<span style="color: black;">意见</span><span style="color: black;">运用</span>docker<span style="color: black;">安排</span>,<span style="color: black;">必定</span>要设置redis<span style="color: black;">秘码</span></p>4、已为php<span style="color: black;">增多</span>php-redis扩展
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">docker一键<span style="color: black;">安排</span>redis</span></strong><span style="color: black;">红帽系系统默认为podman替代docker</span></p><span style="color: black;">podman</span> <span style="color: black;">pull redis</span>
    <span style="color: black;">podman</span> <span style="color: black;">run --restart=always -p 6379:6379 --name myredis -d redis --requirepass passwd@123</span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">扫描脚本:</span></strong></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">扫描脚本<span style="color: black;">一样</span>有两部分<span style="color: black;">构成</span>,<span style="color: black;">第1</span>部分是powershell脚本,用于获取域用户信息</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">可指定OU、可自定义要获取的用户属性,生成的文件放在C盘根目录下1.txt,与python脚本对应</p>
    <span style="color: black;"><span style="color: black;">adgetuser.ps1</span></span>Get-ADUser -Filter <span style="color: black;">Name -like "*"</span> -SearchBase <span style="color: black;">"OU=测试组,OU=用户OU,DC=90apt,DC=com"</span> -Properties * | Select-<span style="color: black;">Object</span> name,passwordlastset,pager &gt; c:<span style="color: black;">/1.txt</span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">运行结果</span></p>
    <span style="color: black;">name</span> <span style="color: black;">passwordlastset</span> <span style="color: black;">pager</span>
    <span style="color: black;">----</span> <span style="color: black;">---------------</span> <span style="color: black;">-----</span>王忘杰<span style="color: black;">1</span> <span style="color: black;">2023</span>/<span style="color: black;">5</span>/<span style="color: black;">18</span> <span style="color: black;">16</span><span style="color: black;">:39</span><span style="color: black;">:05</span> <span style="color: black;">WangWangJie1</span>
    王忘杰<span style="color: black;">2</span> <span style="color: black;">2022</span>/<span style="color: black;">9</span>/<span style="color: black;">26</span> <span style="color: black;">16</span><span style="color: black;">:50</span><span style="color: black;">:41</span> <span style="color: black;">WangWangJie2</span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">第二部分是扫描<span style="color: black;">通告</span>脚本,由主python文件和配置文件ad.config<span style="color: black;">构成</span>,运行后生成errlog.txt日志文件</p>
    <span style="color: black;"><span style="color: black;">ad.config</span></span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">属性说明</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">corpid:</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">appsecret:</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">agentid:</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">content:内容1</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">content1:内容2</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">content2:内容3</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">admin:闲置属性</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">ip:redis<span style="color: black;">位置</span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">port:redis端口</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">passwd:redis<span style="color: black;">秘码</span></p>passwddate:<span style="color: black;">秘码</span>多少天未修改进行提醒
    {
    <span style="color: black;">"corpid"</span> : <span style="color: black;">"xxxx"</span>,
    <span style="color: black;">"appsecret"</span> : <span style="color: black;">"xxxx"</span>,
    <span style="color: black;">"agentid"</span> : <span style="color: black;">"xxxx"</span>,
    <span style="color: black;">"content"</span> : <span style="color: black;">"亲爱的 "</span>,
    <span style="color: black;">"content1"</span> : <span style="color: black;">" 域用户 :\n您的计算机域账户<span style="color: black;">已然</span>超过 "</span>,
    <span style="color: black;">"content2"</span> : <span style="color: black;">" 天<span style="color: black;">无</span>修改<span style="color: black;">秘码</span>了(电脑登录<span style="color: black;">秘码</span>),请您立即更改。\n重置<span style="color: black;">秘码</span>过程请遵循以下原则:\n○<span style="color: black;">秘码</span>长度最少 8 位;\n○<span style="color: black;">秘码</span>中不可<span style="color: black;">显现</span><span style="color: black;">机构</span>和<span style="color: black;">自己</span>中英文拼写\n○<span style="color: black;">秘码</span>符合<span style="color: black;">繁杂</span>性<span style="color: black;">需要</span>(大写字母、小写字母、数字和符号四种中必须有三种)\n操作方式:\n您<span style="color: black;">能够</span><span style="color: black;">经过</span> 自助<span style="color: black;">秘码</span>服务台http://xx/修改<span style="color: black;">秘码</span>,在<span style="color: black;">机构</span>内网中,手机、笔记本、台式机均可<span style="color: black;">拜访</span>"</span>,
    <span style="color: black;">"admin"</span> : <span style="color: black;">"xxxx"</span>,
    <span style="color: black;">"ip"</span> : <span style="color: black;">"xxxx"</span>,
    <span style="color: black;">"port"</span> : <span style="color: black;">"xxxx"</span>,
    <span style="color: black;">"passwd"</span> : <span style="color: black;">"xxxx"</span>,
    <span style="color: black;">"passwddate"</span> : xx
    }<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">主python文件</span></p>import requests,json,redis,<span style="color: black;">time</span>,logging
    from datetime import datetime, timedelta

    def get_weixintoken():
    #获取<span style="color: black;">微X</span>token
    token_url =<span style="color: black;">https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=</span> + <span style="color: black;">config</span>[<span style="color: black;">0</span>] + <span style="color: black;">&amp;corpsecret=</span> + <span style="color: black;">config</span>[<span style="color: black;">1</span>]
    req = requests.get(token_url)
    accesstoken = req.json()[<span style="color: black;">access_token</span>]
    <span style="color: black;">return</span>accesstoken

    def get_redistoken():
    readredis = redis.Redis(connection_pool=redis.ConnectionPool(host=<span style="color: black;">config</span>[<span style="color: black;">7</span>],port=<span style="color: black;">config</span>[<span style="color: black;">8</span>],password=<span style="color: black;">config</span>[<span style="color: black;">9</span>],decode_responses=True))
    <span style="color: black;">if</span> readredis.get(<span style="color: black;">key</span>) == None:
    readredis.set(<span style="color: black;">key</span>, get_weixintoken(),ex=<span style="color: black;">5400</span>)
    <span style="color: black;">return</span> (readredis.get(<span style="color: black;">key</span>))
    <span style="color: black;">else</span>:
    <span style="color: black;">return</span> readredis.get(<span style="color: black;">key</span>)

    def post_weixin(userweixin,content):
    body = {
    <span style="color: black;">"touser"</span>: userweixin,
    <span style="color: black;">"msgtype"</span>: <span style="color: black;">"text"</span>,
    <span style="color: black;">"agentid"</span>: <span style="color: black;">config</span>[<span style="color: black;">2</span>],
    <span style="color: black;">"text"</span>: {
    <span style="color: black;">"content"</span>: content
    }
    }
    postweixin = requests.post(
    <span style="color: black;">https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=</span>+get_redistoken(),data=json.dumps(body))
    <span style="color: black;">return</span>(postweixin.text)

    def get_config():
    <span style="color: black;">config</span> = json.loads(<span style="color: black;">open</span>(<span style="color: black;">"ad.config"</span>, encoding=<span style="color: black;">utf-8</span>).<span style="color: black;">read</span>())
    <span style="color: black;">return</span> [<span style="color: black;">config</span>[<span style="color: black;">corpid</span>],<span style="color: black;">config</span>[<span style="color: black;">appsecret</span>],<span style="color: black;">config</span>[<span style="color: black;">agentid</span>],<span style="color: black;">config</span>[<span style="color: black;">content</span>],<span style="color: black;">config</span>[<span style="color: black;">content1</span>],<span style="color: black;">config</span>[<span style="color: black;">content2</span>],<span style="color: black;">config</span>[<span style="color: black;">admin</span>],<span style="color: black;">config</span>[<span style="color: black;">ip</span>],<span style="color: black;">config</span>[<span style="color: black;">port</span>],<span style="color: black;">config</span>[<span style="color: black;">passwd</span>],<span style="color: black;">config</span>[<span style="color: black;">passwddate</span>]]

    def user_check():
    f = <span style="color: black;">open</span>(<span style="color: black;">"C:\\1.txt"</span>, <span style="color: black;">"r"</span>, encoding=<span style="color: black;">utf-16</span>)
    <span style="color: black;">lines</span> = f.readlines()
    f = <span style="color: black;">open</span>(<span style="color: black;">errlog.txt</span>, <span style="color: black;">w</span>)
    <span style="color: black;">for</span> line <span style="color: black;">in</span> <span style="color: black;">lines</span>:
    try:
    x = line.replace(<span style="color: black;">"/"</span>, <span style="color: black;">"-"</span>)
    y = x.split()
    time_1 = y[<span style="color: black;">1</span>]
    time_2 = <span style="color: black;">time</span>.strftime(<span style="color: black;">"%Y-%m-%d"</span>, <span style="color: black;">time</span>.localtime())
    time_1_struct = datetime.strptime(time_1,<span style="color: black;">"%Y-%m-%d"</span>)
    time_2_struct = datetime.strptime(time_2, <span style="color: black;">"%Y-%m-%d"</span>)
    day = (time_2_struct - time_1_struct).days
    userweixin = y[<span style="color: black;">3</span>]
    username= y[<span style="color: black;">0</span>]
    <span style="color: black;">if</span> day &gt; <span style="color: black;">config</span>[<span style="color: black;">10</span>]:
    day = str(day)
    <span style="color: black;">time</span>.sleep(<span style="color: black;">1</span>)
    try:
    post = post_weixin(userweixin,<span style="color: black;">config</span>[<span style="color: black;">3</span>]+username+<span style="color: black;">config</span>[<span style="color: black;">4</span>]+day+<span style="color: black;">config</span>[<span style="color: black;">5</span>])
    postjson=json.loads(post)
    <span style="color: black;">if</span> postjson[<span style="color: black;">errmsg</span>] != <span style="color: black;">"ok"</span>:
    f.<span style="color: black;">write</span>(<span style="color: black;">"发送失败,可能<span style="color: black;">微X</span>号错误 "</span> + userweixin+<span style="color: black;">"\n"</span>)

    except :
    None<span style="color: black;">else</span>:
    None
    except:
    f.<span style="color: black;">write</span>(<span style="color: black;">"<span style="color: black;">无</span><span style="color: black;">微X</span>号 "</span>+ line)
    f.<span style="color: black;">close</span>()



    <span style="color: black;">config</span> = get_config()
    #post_weixin()
    user_check()<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">脚本<span style="color: black;">运用</span></span></strong><span style="color: black;">编译为EXE文件,和ad.config,放在域控服务器<span style="color: black;">经过</span><span style="color: black;">按时</span>任务运行<span style="color: black;">就可</span>。</span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">Self Service Password企业<span style="color: black;">微X</span>脚本</span></strong><span style="color: black;">项目目录</span><span style="color: black;"><span style="color: black;"><span style="color: black;">/usr/share/self-service-password/</span></span></span>配置文件<span style="color: black;"><span style="color: black;"><span style="color: black;">/usr/share/self-service-password/conf/config.inc.local.php</span></span></span>配置文件中修改短信<span style="color: black;">通告</span>方式</p><span style="color: black;">## SMS</span>
    <span style="color: black;"># Use sms</span>
    $use_sms = <span style="color: black;">true</span>;
    <span style="color: black;"># SMS method (mail, api)</span>
    $sms_method = <span style="color: black;">"api"</span>;
    $sms_api_lib = <span style="color: black;">"lib/weixin.inc.php"</span>;
    <span style="color: black;"># GSM number attribute</span>$sms_attributes =<span style="color: black;">array</span>( <span style="color: black;">"pager"</span> );<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">编写企业<span style="color: black;">微X</span><span style="color: black;">通告</span>脚本</span></strong><span style="color: black;"><span style="color: black;"><span style="color: black;">/usr/share/self-service-password/lib/weixin.inc.php</span></span></span></p><span style="color: black;"><span style="color: black;">&lt;?php</span>
      <span style="color: black;">//连接本地的 Redis 服务</span>
      <span style="color: black;"><span style="color: black;">function</span> <span style="color: black;">get_token</span><span style="color: black;">()</span></span>{
      $redis = <span style="color: black;">new</span> Redis();
      $redis-&gt;connect(<span style="color: black;">修改用自己的IP<span style="color: black;">位置</span></span>, 修改用自己的端口);
      $redis-&gt;auth(<span style="color: black;">修改用自己的redis<span style="color: black;">秘码</span></span>);
      $key = $redis-&gt;get(<span style="color: black;">"key"</span>);
      <span style="color: black;">if</span> ($key)
      {
      <span style="color: black;">return</span> $key;
      }
      <span style="color: black;">else</span>
      {
      $url=<span style="color: black;">https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=修改用自己的&amp;corpsecret=修改用自己的</span>;
      $jsondb = file_get_contents($url);
      $jsondb = json_decode($jsondb,<span style="color: black;">true</span>);
      $key = $jsondb[<span style="color: black;">access_token</span>];
      $redis-&gt;set(<span style="color: black;">"key"</span>, $key);
      $redis-&gt;expire(<span style="color: black;">"key"</span>, <span style="color: black;">5400</span>);
      <span style="color: black;">return</span> $key;
      }
      }

      <span style="color: black;"><span style="color: black;">function</span> <span style="color: black;">send_sms_by_api</span><span style="color: black;">($mobile, $message)</span> </span>{
      $postdata = <span style="color: black;">array</span>(
      <span style="color: black;">touser</span> =&gt; <span style="color: black;">"$mobile"</span>,
      <span style="color: black;">msgtype</span> =&gt; <span style="color: black;">text</span>,
      <span style="color: black;">agentid</span> =&gt; <span style="color: black;">修改用自己的</span>,
      <span style="color: black;">text</span> =&gt; <span style="color: black;">array</span>(
      <span style="color: black;">content</span> =&gt; <span style="color: black;">"$message"</span>
      )

      );

      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, <span style="color: black;">https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=</span> . get_token());
      curl_setopt($ch, CURLOPT_POST, <span style="color: black;">true</span>);
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postdata));
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,<span style="color: black;">0</span>);
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, <span style="color: black;">2</span>);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER,<span style="color: black;">true</span>);
      $errmsg = json_decode(curl_exec($ch))-&gt;errmsg;
      <span style="color: black;">if</span> ($errmsg==<span style="color: black;">"ok"</span>)
      {
      <span style="color: black;">return</span> <span style="color: black;">1</span>;
      }
      <span style="color: black;">else</span>
      {
      <span style="color: black;">return</span> <span style="color: black;">0</span>;
      }


      }<span style="color: black;">?&gt;</span></span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">修改中文<span style="color: black;">表示</span></span></strong><span style="color: black;"><span style="color: black;">例如</span>把短信修改成企业<span style="color: black;">微X</span>,可直接修改语言文件</span></p>/usr/share/<span style="color: black;">self</span>-service-password/lang/zh-CN.inc.php<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">PHP安装redis扩展</span></strong></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">总结</span></strong><span style="color: black;">简单</span></p>




qzmjef 发表于 2024-10-24 07:27:30

你字句如珍珠,我珍藏这份情。
页: [1]
查看完整版本: 0基本上手python、PHP编程,域自助服务台,自助改密解锁等功能