web安全学习笔记(9)

news/2024/5/18 0:06:53

记一下第十三课的内容。

准备工作:在根目录下创建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($_GET['a']) ? $_GET['a'] : 'login';$b = !empty($_GET['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中的代码含义。这是非常重要的。


http://www.mrgr.cn/p/75672633

相关文章

基于RAM的几何变换——平移

基于RAM的几何变换——平移 一、平移的基本概念平移的概念很好理解,但是在具体操作中可能会涉及到两个问题:平移量有正数也有负数,涉及到Verilog语法中的有符号数处理 平移会导致部分像素超出我们的显示范围,对这部分的像素应当做丢弃处理二、MATLAB实现实现代码和实验结果…

IIC总线读取温度湿度传感器数据实验

iic.c #include "iic.h"extern void printf(const char* fmt, ...); /** 函数名 &#xff1a; delay_us* 函数功能&#xff1a;延时函数* 函数参数&#xff1a;无* 函数返回值&#xff1a;无* */ void delay_us(void) //微秒级延时 {unsigned int i 2000;while(i-…

C++ stl容器list的底层模拟实现

目录 前言&#xff1a; 1.创建节点 2.普通迭代器的封装 3.反向迭代器的封装 为什么要对正向迭代器进行封装&#xff1f; 4.const迭代器 5.构造函数 6.拷贝构造 7.赋值重载 8.insert 9.erase 10.析构 11.头插头删&#xff0c;尾插尾删 12.完整代码简单测试 总结&…

Day104:漏洞发现-漏扫项目篇武装BURP浏览器插件信息收集分析辅助遥遥领先

目录 插件类-武装BurpSuite-漏洞检测&分析辅助 1、如何加载插件&#xff1a; 2、漏洞检测类&#xff1a; Fiora TsojanScan RouteVulScan APIKit 3、分析辅助类&#xff1a; 插件类-武装谷歌浏览器-信息收集&情报辅助 HackBar Heimdallr Wappalyzer FindS…

学会解压

1,自我疗愈 压力日志拒绝精神内耗

JavaSE图书管理系统实战

代码仓库地址&#xff1a;Java图书管理系统 1.前言 该项目将JavaSE的封装继承多态三大特性&#xff0c;使用了大量面向对象的操作&#xff0c;有利于巩固理解 &#xff08;1&#xff09;实现效果 2.实现步骤 第一步先把框架搭建起来&#xff0c;即创建出人&#xff1a;管理员和…

Java 集合(ArrayList、LinkedList、HashMap、HashSet、LinkedHashMap、LinkedHashSet)【补充复习】

Java 集合&#xff08;ArrayList、LinkedList、HashMap、HashSet、LinkedHashMap、LinkedHashSet&#xff09;【补充复习】 Java 集合概述Collection 接口继承树Map 接口继承树 Collection 接口方法使用 iterator 接口遍历集合元素使用 forearch 遍历集合元素 List 接口List 实…

git 拉取或者推送代码报错问题解决

报错截图:当推送远程时,提示无法访问github地址 原因:在拉取或者是提交项目时,会发生git的http和https代理,我们电脑本地已经存在SSL协议的协议,可以取消http和https代理 在git中运行: git config --global --unset http.proxy git config --global --unset https.proxy…

【VUE】使用Vue和CSS动画创建滚动列表

使用Vue和CSS动画创建滚动列表 在这篇文章中&#xff0c;我们将探讨如何使用Vue.js和CSS动画创建一个动态且视觉上吸引人的滚动列表。这个列表将自动滚动显示项目&#xff0c;类似于轮播图的方式&#xff0c;非常适合用于仪表盘、排行榜或任何需要在有限空间内展示项目列表的应…

【MYSQL锁】透彻地理解MYSQL锁

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;mysql专栏&#xff1a;小林同学的专栏 目录 1.锁 1.1 概述 1.2 全局锁 1.2.1 语法 1.2.1.1 加全局锁 1.2.1.2 数据备份 1.2.1.3 释放锁 1.2.1.4 特点 1.2.1.5 演示 1.3 表级锁 1.3.1 介绍 …

paddleocr图片文本识别

1. paddleocr  PaddleOCR 是一个基于 PaddlePaddle 深度学习框架的开源 OCR(Optical Character Recognition,光学字符识别)工具。它提供了一系列的预训练模型和工具,可以用于文本检测、文本识别和文本方向检测等任务。 提供了易于使用的 Python API,可以轻松地在你的项目…

Docker入门实战教程

文章目录 Docker引擎的安装Docker比vm虚拟机快 Docker常用命令帮助启动类命令镜像命令docker imagesdocker searchdocker pulldocker system dfdocker rmi 容器命令redis前台交互式启动redis后台守护式启动Nginx容器运行ubuntu交互式运行tomcat交互式运行对外暴露访问端口 Dock…

HarmonyOS NEXT应用开发之图片缩放效果实现

介绍 图片预览在应用开发中是一种常见场景,在诸如QQ、微信、微博等应用中均被广泛使用。本模块基于Image组件实现了简单的图片预览功能。 使用说明:双指捏合缩放图片大小 双击图片进行图片的大小切换 图片在放大模式下,滑动图片查看图片的对应位置效果图预览实现思路image组…

【python之DRF学习】三大方法之认证

title: 【python之DRF学习】三大方法之认证 date: 2024-04-17 21:00:56 星期三 updated: 2024-04-17 21:01:00 星期三 description: cover: 内置三大方法: drf之APIView内部的必须会经过的三大认证/方法: 认证、权限、频率一、认证组件 1、简介 登录认证的限制​ 认证组件…

软考——程序设计语言

1.低级语言和高级语言 计算机硬件只能识别由0、1组成的机器指令序列&#xff0c;即机器指令程序&#xff0c;因此机器指令是最基本的计算机语言。由于机器指令是特定的计算机系统所固有的、面向机器的语言&#xff0c;所以用机器语言进行程序设计时效率很低&#xff0c;程序的…

死锁

多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致俩个或者多个线程都在等待对方释放资源。 package syn;public class DeadLock {public static void main(String[] args) {Makeup s1 = new Makeup(0,"小明");Makeup s2 = new Makeup(…

腾讯音乐:说说Redis脑裂问题?

Redis 脑裂问题是指,在 Redis 哨兵模式或集群模式中,由于网络原因,导致主节点(Master)与哨兵(Sentinel)和从节点(Slave)的通讯中断,此时哨兵就会误以为主节点已宕机,就会在从节点中选举出一个新的主节点,此时 Redis 的集群中就出现了两个主节点的问题,就是 Redis …

服务器挖矿病毒解决ponscan,定时任务解决

服务器挖矿病毒解决ponscan&#xff0c;定时任务解决 挖矿病毒会隐藏chattr的操作权限&#xff0c;让我们无法删除病毒文件&#xff0c;杀掉病毒进程。所以要去下载chattr.c的文件&#xff0c;编译成a.out。然后再对原来的chattr文件的权限进行修改。然后覆盖掉它。 chattr.c …

新标准日本语 课后练习

自学错误可能较多&#xff0c;听力题不需要听力的就没听录音 第二十課 スミスさんはピアノを弾くことができます 練習&#xff11;&#xff0d;&#xff11; &#xff11;張さんは日本の歌を歌うことができます 张先生会唱日本歌 &#xff12;小野さんは自転車に乗ることがで…

centos7 安装 Mysql 5.7.28,详细完整教程

https://cloud.tencent.com/developer/article/18863391. 下载 MySQL yum包wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm 复制2.安装MySQL源rpm -Uvh mysql57-community-release-el7-10.noarch.rpm 复制3.安装MySQL服务端,需要等待一些时间yum ins…