当前位置:   article > 正文

web安全学习笔记(9)

web安全学习笔记(9)

记一下第十三课的内容。

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

一、函数声明与传参

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

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

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

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

比如说:

  1. <?php
  2. $a = 'hello';
  3. $b = 'world';
  4. echo '$a $b'; //输出$a $b
  5. echo "$a $b"; //输出hello world
  6. ?>

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

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

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

2.使用英文的点,即. 

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

三、三目运算符

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

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

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

四、代码实例:

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

reg.html如下:

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

function.php如下:

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

index.php如下:

  1. <?php
  2. require_once("./function.php");
  3. $a = !empty($a) ? $_GET['a'] : 'login';
  4. $b = !empty($b) ? $_GET['b'] : 'index';
  5. $f = $_SERVER['REQUEST_METHOD'];
  6. switch ($a) {
  7. case 'login':
  8. switch ($b) {
  9. #登录接口:
  10. case 'index':
  11. switch ($f) {
  12. case 'GET':
  13. require_once('./template/login.html');
  14. break;
  15. case 'POST':
  16. $username = $_POST['username'];
  17. $password = $_POST['password'];
  18. if ($username != 'admin' || $password != '123456') {
  19. alert($msg = '登录失败!', $url = './index.php?a=login&b=index');
  20. // die('<script>alert("登录失败!");location.href = "./index.php?a=login&b=index"</script>');
  21. }
  22. break;
  23. default:
  24. # code...
  25. break;
  26. }
  27. break;
  28. #注册接口:
  29. case 'reg':
  30. switch ($f) {
  31. case 'GET':
  32. require_once('./template/reg.html');
  33. break;
  34. case 'POST':
  35. #用户名
  36. $username = $_POST['username'];
  37. #密码
  38. $password1 = $_POST['password1'];
  39. #二次输入密码
  40. $password2 = $_POST['password2'];
  41. #如何将用户名输出到弹窗中?
  42. alert($msg = $username . '注册成功!', $url = './index.php?a=login&b=index');
  43. // die('<script>alert("'.$username.'注册成功!");location.href="./index.php?a=login&b=index"</script>');
  44. break;
  45. default:
  46. # code...
  47. break;
  48. }
  49. break;
  50. default:
  51. # code...
  52. break;
  53. }
  54. break;
  55. default:
  56. # code...
  57. break;
  58. }

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/403964
推荐阅读
相关标签
  

闽ICP备14008679号