web安全学习笔记(9)

记一下第十三课的内容。

准备工作:在根目录下创建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.mzph.cn/news/823277.shtml

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

相关文章

机器学习引领金融革命:重塑金融服务领域新格局,开启智能化新篇章

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

element-ui报表合计逻辑踩坑

element-ui报表合计逻辑踩坑 1.快速实现一个合计 ​ Element UI所提供的el-table中提供了方便快捷的合计逻辑实现&#xff1a; ​ https://element.eleme.cn/#/zh-CN/component/table ​ 此实现方法在官方文档中介绍详细&#xff0c;此处不多赘述。 ​ 这里需要注意&#x…

【AIGC调研系列】MiniMax 稀宇科技的abab 6.5 系列模型与国外先进模型相比的优缺点

MiniMax稀宇科技的abab 6.5系列模型与国外先进模型相比&#xff0c;具有以下优缺点&#xff1a; 优点&#xff1a; abab 6.5系列模型采用了MoE&#xff08;Mixture of Experts&#xff09;架构&#xff0c;这是国内首个采用此架构的大模型&#xff0c;标志着MiniMax在自然语言…

【C语言】万字讲解函数栈帧的创建与销毁

目录 前言 一、什么是函数栈帧&#xff1f; 二、理解函数栈帧能解决什么问题呢 三、函数栈帧的创建和销毁解析 3.1 什么是栈&#xff1f; 3.2 认识相关寄存器和汇编指令 3.3 剖析函数栈帧的创建和销毁 3.3.1 esp寄存器与ebp寄存器的重要性 3.3.2 函数的调用堆栈 3.3.…

2024-4-17-ARM作业

温湿度数据采集应用&#xff1a; si7006.h: #ifndef __SI7006_H__ #define __SI7006_H__#include"i2c.h" void delay(int ms); void si7006_init(); short si7006_read_tem(); unsigned short si7006_read_hum();#endif i2c.h: #ifndef __I2C_H__ #define __I2C_…

SAP MRP-MD01与MRP LIVE-MD01N简介

自从SAP推出HANA以后,无论在做项目还是在面试的时候都会遇到一个问题,就是MRP和MRP LIVE 有什么区别。通常顾问都知道MRPLIVE是运行在内存中的,运行效率会优于传统的MRP。经历了很多家的公司都是HANA的系统,基本都很少会用到MRP LIVE,百分之98%都还是在用传统的MRP在跑物料…

利用 Python 开发手机 App 实战

Python语言虽然很万能&#xff0c;但用它来开发app还是显得有点不对路&#xff0c;因此用Python开发的app应当是作为编码练习、或者自娱自乐所用&#xff0c;加上目前这方面的模块还不是特别成熟&#xff0c;bug比较多&#xff0c;总而言之&#xff0c;劝君莫轻入。 准备工作 …

c++的学习之路:24、 二叉搜索树概念

摘要 本章主要是讲一下二叉搜索树的实现 目录 摘要 一、二叉搜索树概念 二、 二叉搜索树操作 1、二叉搜索树的查找 2、二叉搜索树的插入 3、二叉搜索树的删除 三、二叉搜索树的实现 1、插入 2、中序遍历 3、删除 4、查找 四、二叉搜索树的递归实现 1、插入 2、删…

Leetcode刷题之合并两个有序数组

Leetcode刷题之合并两个有序数组 一、题目描述二、题目解析 一、题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数…

P1101 单词方阵

# 单词方阵 ## 题目描述 给一 n*n的字母方阵,内可能蕴含多个 `yizhong` 单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着 8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉,因此有可能共用字母。输出时,将不是单词的字母用 `*` 代替,以突…

MongoDB快速启动

两种方法: 方式 1 &#xff1a;命令行参数方式启动服务 在 bin 目录中打开命令行提示符&#xff0c;输入如下命令&#xff1a; (mongod --dbpath..\data\db) mongod --dbpath..\data\db 方式 2 &#xff1a;配置文件方式启动服务 在解压目录中新建 config 文件夹&#xff0…

去哪网拿去花不能提现,只能用于透支消费,那么拿去花提现是怎么实现呢?

去哪网拿去花不能提现&#xff0c;只能用于透支消费&#xff0c;那么拿去花提现是怎么实现呢&#xff1f; 申请携程拿去花之后&#xff0c;有一些人就会想着把钱提现出来拿去用。一般来说&#xff0c;他们都是通过线下门店来提现拿去花&#xff0c;拿去花允许用户先消费后付款&…

财富是对认知的奖赏,不是勤劳的补偿,那怎么提升认知呐?

在经济学著作《贫穷的本质》中&#xff0c;作者阿比吉特班纳吉和埃斯特迪弗洛通过深入调查和研究&#xff0c;揭示了贫穷的多重面貌&#xff0c;并探讨了穷人为何难以摆脱贫困的困境。这本书的核心观点之一是&#xff0c;贫穷并非仅仅由缺乏勤劳造成&#xff0c;而是与个人和群…

「2024前端」常见面试题之JavaScript

1. 原型链和原型链的继承&#xff0c;前端的继承方式有哪些&#xff1f; 原型链和原型链的继承 在JavaScript中&#xff0c;原型链是实现继承的一种机制。每一个对象都有一个原型对象&#xff0c;从原型对象继承方法和属性。这些对象可以作为其他对象的原型&#xff0c;形成一…

Python文件操作大全

1 文件操作 1.1 文件打开与关闭 1.1.1 打开文件 在Python中&#xff0c;你可以使用 open() 函数来打开文件。以下是一个简单的例子&#xff1a; # 打开文件&#xff08;默认为只读模式&#xff09; file_path example.txt with open(file_path, r) as file:# 执行文件操作…

LeetCode-二叉树修剪

每日一题 今天遇到的题比较简单&#xff0c;是一道二叉树的题。 题目要求 给定一个二叉树 根节点 root &#xff0c;树的每个节点的值要么是 0&#xff0c;要么是 1。请剪除该二叉树中所有节点的值为 0 的子树。 节点 node 的子树为 node 本身&#xff0c;以及所有 node 的…

ARM-学习day8

使用温湿度采集&#xff0c;控制灯&#xff0c;风扇和马达. lic.h #ifndef __IIC_H__ #define __IIC_H__#include"stm32mp1xx_gpio.h" #include"stm32mp1xx_rcc.h"#define SET_SDA_OUT do{GPIOF->MODER & (~(0x3 << 30)); \GPIOF->M…

6. Mysql里面的GTID 全局事务标识 介绍

GTID学习记录 来源 知乎阿里云&#xff1a;MySQL 基于GTID复制实现的工作原理MySQL的GTID主从搭建及内部原理MySQL5.7杀手级新特性&#xff1a;GTID原理与实战 文章目录 1 什么是GTID2 GTID的组成部分3 GTID如何产生4 GTID的工作原理5 GTID的生成和使用由以下几步组成&#xf…

Linux学习随笔

进程 每个进程都有对应的文件句柄空间&#xff0c;以及一个用户栈和内核栈 冷、热启动 "冷启动"是指将电子设备从完全关机的状态重新启动的过程。在开发板的上下文中&#xff0c;冷启动通常意味着关闭电源然后重新打开&#xff0c;或者通过物理按钮或者开关来触发重…

appium2报错:Failed to create session. ‘automationName‘ can‘t be blank

1、问题概述&#xff1f; 今天在window环境中安装了appium2.5.2版本&#xff0c;通过appium inspector连接真机的时候报错如下&#xff1a; Failed to create session. automationName cant be blank 原因分析&#xff1a;这是因为appium2的比appium1有了很大的改进&#xff…