web安全学习笔记(9)

记一下第十三课的内容。

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

一、函数声明与传参

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

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

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

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

比如说:

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

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

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

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

2.使用英文的点,即.

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

echo $a;
echo $concat_cb;

三、三目运算符

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

php 复制代码
$a = !empty($a) ? $_GET['a'] : 'login';

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

四、代码实例:

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

reg.html如下:

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 复制代码
<?php
#自定义函数
#系统函数
#函数传参
function alert($msg, $url){
    return die('<script>alert("'.$msg.'");location.href = "'.$url.'"</script>');
}

index.php如下:

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,尚且没想明白,有待商榷。

相关推荐
波音彬要多做22 分钟前
41 stack类与queue类
开发语言·数据结构·c++·学习·算法
m0_748256781 小时前
WebGIS实战开源项目:智慧机场三维可视化(学习笔记)
笔记·学习·开源
红色的山茶花1 小时前
YOLOv9-0.1部分代码阅读笔记-loss.py
笔记
南七澄江2 小时前
各种网站(学习资源及其他)
开发语言·网络·python·深度学习·学习·机器学习·ai
胡西风_foxww3 小时前
【es6复习笔记】Promise对象详解(12)
javascript·笔记·es6·promise·异步·回调·地狱
无泡汽水4 小时前
漏洞检测工具:Swagger UI敏感信息泄露
python·web安全
机智的叉烧8 小时前
前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习
人工智能·学习·机器学习
量子-Alex9 小时前
【多模态聚类】用于无标记视频自监督学习的多模态聚类网络
学习·音视频·聚类
吉大一菜鸡9 小时前
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
笔记·学习·fpga开发
WTT001110 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf