web安全学习笔记(9)

news2025/6/26 21:34:58

记一下第十三课的内容。

准备工作:在根目录下创建template目录,将login.html放入其中,在该目录下新建一个reg.html。在根目录下创建一个function.php

一、函数声明与传参

PHP中的函数定义和其他语言基本上是相同的。我们编辑function.php

<?php
#自定义函数
#系统函数
#函数传参
function alert($msg, $url){
    return die('<script>alert("'.$msg.'");location.href = "'.$url.'"</script>');
}

二、PHP中字符与变量的拼接

首先我们要知道,在php里声明一个字符串有2种方式,一种是用单引号,一种是用双引号。两者最大的区别就是当字符串中包含变量时,单引号不能输出变量的值,而是直接输出变量名,双引号就可以输出变量的值。

比如说:

<?php
$a = 'hello';
$b = 'world';
echo '$a $b';  //输出$a $b
echo "$a $b"; //输出hello world
 ?>

以上引用自PHP的字符串拼接_php拼接字符串-CSDN博客

了解了以上内容之后,我们学习两种字符串的拼接操作:

1.通过双引号与变量进行拼接

2.使用英文的点,即. 

<?php
#PHP中字符串的拼接操作
#方法1:双引号
$b = '789';
$a = "123 $b 456";  //在双引号中变量还是变量,在单引号中,变量变为字符串
$c = '123456';
#方法2:用英文的点
$concat_cb = $c . $b;

echo $a;
echo $concat_cb;

三、三目运算符

PHP中的三目运算符仍旧与其他语言类似,对于其语法不多赘述。下面用一个例子来说明:

$a = !empty($a) ? $_GET['a'] : 'login';

以上语句的意思是,如果$a非空,那么就将通过GET传参的方式获得的变量a的值的值赋给$a,否则将'login'赋给变量$a。这实际上就是if...else的简写。

四、代码实例:

文件目录层级结构如下图:

reg.html如下:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<form method = "post" action="http://172.20.10.3/index.php?a=login&b=reg">
    用户名:<input type = "text" name = "username" value="admin"><br><br>
    密  码:<input type = "password" name = "password1" value="123456"><br><br>
    再次输入:<input type = "password" name = "password2" value="123456"><br><br>
    <input type = "submit" value = "立即注册">
</form>

function.php如下:

<?php
#自定义函数
#系统函数
#函数传参
function alert($msg, $url){
    return die('<script>alert("'.$msg.'");location.href = "'.$url.'"</script>');
}

index.php如下:

<?php
require_once("./function.php");
$a = !empty($a) ? $_GET['a'] : 'login';

$b = !empty($b) ? $_GET['b'] : 'index';

$f = $_SERVER['REQUEST_METHOD'];
switch ($a) {
    case 'login':
        switch ($b) {
            #登录接口:
            case 'index':
                switch ($f) {
                    case 'GET':
                        require_once('./template/login.html');
                        break;
                    case 'POST':
                        $username = $_POST['username'];
                        $password = $_POST['password'];
                        if ($username != 'admin' || $password != '123456') {
                            alert($msg = '登录失败!', $url = './index.php?a=login&b=index');
                            // die('<script>alert("登录失败!");location.href = "./index.php?a=login&b=index"</script>');
                        }
                        break;

                    default:
                        # code...
                        break;
                }
                break;
            #注册接口:
            case 'reg':
                switch ($f) {
                    case 'GET':
                        require_once('./template/reg.html');
                        break;
                    case 'POST':
                        #用户名
                        $username = $_POST['username'];
                        #密码
                        $password1 = $_POST['password1'];
                        #二次输入密码
                        $password2 = $_POST['password2'];
                        #如何将用户名输出到弹窗中?
                        alert($msg = $username . '注册成功!', $url = './index.php?a=login&b=index');
                        // die('<script>alert("'.$username.'注册成功!");location.href="./index.php?a=login&b=index"</script>');
                        break;

                    default:
                        # code...
                        break;
                }
                break;
            default:
                # code...
                break;
        }
        break;

    default:
        # code...
        break;
}

要着重理解index.php中的代码含义,但是如果在一开始使用三目运算符对变量$a和$b进行赋值,似乎无法正确跳转至reg.html,尚且没想明白,有待商榷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1584091.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTP与HTTPS:深度解析两种网络协议的工作原理、安全机制、性能影响与现代Web应用中的重要角色

HTTP (HyperText Transfer Protocol) 和 HTTPS (Hypertext Transfer Protocol Secure) 是互联网通信中不可或缺的两种协议&#xff0c;它们共同支撑了全球范围内的Web内容传输与交互。本文将深度解析HTTP与HTTPS的工作原理、安全机制、性能影响&#xff0c;并探讨它们在现代Web…

AI大模型引领未来智慧科研暨ChatGPT自然科学高级应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

修复 Windows 上的 PyTorch 1.1 github 模型加载权限错误

问题: 在 Windows 计算机上执行示例 github 模型加载时,生成了 master.zip 文件的权限错误(请参阅下面的错误堆栈跟踪)。 错误堆栈跟踪: 在[4]中:en2de = torch.hub.load(pytorch/fairseq, transformer.wmt16.en-de, tokenizer=moses, bpe=subword_nmt) 下载:“https://…

Linux网络的封包和拆包

一般使用socket 到令牌环网然后向上逐渐拆包 MTU:最大的传输单元 以太网&#xff1a;1500 mss&#xff1a;网络类型&#xff0c;线路&#xff0c;以及特性相关

SpringCloudAlibaba-概述(一)

目录地址&#xff1a; SpringCloudAlibaba整合-CSDN博客 记录SpringCloudAlibaba的整合过程 一、简单概述一下项目情况 项目主要有4个模块和4个微服务&#xff1b; 项目结构如下&#xff1a; mall&#xff1a;父工程 -- common&#xff1a;公共组件&#xff0c;存放公用的实…

Vue.js------vue基础

1. 能够了解更新监测, key作用, 虚拟DOM, diff算法2. 能够掌握设置动态样式3. 能够掌握过滤器, 计算属性, 侦听器4. 能够完成品牌管理案例 一.Vue基础_更新监测和key 1.v-for更新监测 目标&#xff1a;目标结构变化, 触发v-for的更新 情况1: 数组翻转情况2: 数组截取情况3…

专为玄学设计的7B大模型:依托10,000+高质量指令,全面覆盖玄学领域的大模型

前言 现如今&#xff0c;AI大模型已经无孔不入&#xff0c;连玄学领域也"在劫难逃"。前有新闻称数百万人正在"求神拜佛"般地与ChatGPT交流&#xff0c;后又有教堂聘请"AI传教士"协助神职人员进行宗教仪式。可以说&#xff0c;"科学的尽头就…

51单片机学习笔记16 小型直流电机和五线四相电机控制

51单片机学习笔记16 小型直流电机和五线四相电机控制 一、电机分类二、小型直流电机控制1. 简介2. 驱动芯片ULN2003D3. 代码实现dc_motor_utils.cmain.c 三、五线四相步进电机控制1. 步进电机工作原理2. 构造3. 极性区分4. 驱动方式5. 28BYJ-48步进电机&#xff08;1&#xff0…

python统计分析——一般线性回归模型

参考资料&#xff1a;python统计分析【托马斯】 当我想用一个或多个其他的变量预测一个变量的时候&#xff0c;我们可以用线性回归的方法。 例如&#xff0c;当我们寻找给定数据集的最佳拟合线的时候&#xff0c;我们是在寻找让下式的残差平方和最小的参数(k,d)&#xff1a; 其…

什么是容器安全,该怎么进行容器安全的检测防护

随着容器技术的迅速发展和普及&#xff0c;越来越多的企业开始采用容器化解决方案来优化应用部署、提高资源利用率和降低成本。然而&#xff0c;在对大规模部署和使用容器应用来提升业务系统开发速度的时候&#xff0c;大量的数据对象、多种安全风险都需要检测&#xff0c;容器…

头歌-机器学习 第11次实验 softmax回归

第1关&#xff1a;softmax回归原理 任务描述 本关任务&#xff1a;使用Python实现softmax函数。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.softmax回归原理&#xff0c;2.softmax函数。 softmax回归原理 与逻辑回归一样&#xff0c;softmax回归同样…

设计模式之迭代器模式(下)

3&#xff09;使用内部类实现迭代器 1.JDK中的迭代器示例 为了能够让迭代器可以访问到聚合对象中的数据&#xff0c;还可以将迭代器类设计为聚合类的内部类 package java.util;public abstract class AbstractList<E> extends AbstractCollection<E> implements…

Electron 桌面端应用的使用 ---前端开发

Electron是什么&#xff1f; Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。 入门…

Adobe After Effects 2024 v24.3 macOS 视频合成及特效制作软件 兼容 M1/M2/M3

Adobe After Effects 是一款适用于视频合成及特效制作软件,是制作动态影像设计不可或缺的辅助工具,是视频后期合成处理的专业非线性编辑软件。 macOS 12.0及以上版本可用 应用介绍 Adobe After Effects简称 AE 是一款适用于视频合成及特效制作软件,是制作动态影像设计不可或缺…

Linux CentOS 安装 MySQL 服务教程

Linux CentOS 安装 MySQL 服务教程 1. 查看系统和GNU C库(glibc)版本信息 1.1 查询机器 glibc 版本信息 glibc&#xff0c;全名GNU C Library&#xff0c;是大多数Linux发行版中使用的C库&#xff0c;为系统和应用程序提供核心的API接口。在Linux系统中&#xff0c;特别是在…

Vue3 使用ElementUI 显示异常

element提供的样例不能正常显示&#xff0c;需要进行配置 1.npm install element-plus --save 2.main.js // main.ts import { createApp } from vue import ElementPlus from element-plus //全局引入 import element-plus/dist/index.css import App from ./App.vue const …

恶意软件现在扫描公司内部的网络是否存在严重漏洞

Palo Alto Networks 的专家发现 &#xff0c;攻击者最近越来越多地采用所谓的“扫描攻击”。此类攻击由恶意软件发起&#xff0c;旨在识别目标网络中的漏洞。 此外&#xff0c;大多数此类攻击的来源是安全网络中的合法设备。犯罪黑客是如何如此狡猾地欺骗计算机专家的呢&#…

Vue2(十五):replace属性、编程式路由导航、缓存路由组件、路由组件独有钩子、路由守卫、history与hash

一、router-link的replace属性 1、作用&#xff1a;控制路由跳转时操作浏览器历史记录的模式 2、浏览器的历史记录有两种写入方式&#xff1a;分别为push和replace&#xff0c;push是追加历史记录&#xff0c;replace是替换当前记录。路由跳转时候默认为push 3、如何开启repla…

Day20_学点儿JavaEE_Cookie、Session

0 会话技术简介 生活中会话 我&#xff1a; 小张&#xff0c;你会跳小苹果码&#xff1f; 小张&#xff1a; 会&#xff0c;怎么了&#xff1f; 我&#xff1a; 公司年会上要表演节目&#xff0c;你教教我把 小张&#xff1a;没问题&#xff0c;一顿饭而已。 我&#xff1a; …

面向对象设计原则实验之“迪米特法则”

每一个软件单位对其它单位都只有最少的知识&#xff0c;而且局限于那些与本单位密切相关的软件单位。 某软件公司所开发 CRM 系统包含很多业务操作窗口。在这些窗口中某些界面控件之间存在复杂的交互关系&#xff0c;一个控件事件的触发将导致多个其他界面控件产生响应。例如&…