网络安全练气篇——PHP编程语言基础

目录

PHP基础

一、PHP简介与环境搭建

什么是PHP?

PHP环境安装

代码编辑选择

二、基本语法

PHP基本语法操作

PHP变量与输出

啥是常量?

PHP注释

PHP单引号双引号声明

三、PHP表单

PHP表单

四、登录界面搭建与讲解

构建登陆页面

登陆页面端

服务器端


PHP基础

一、PHP简介与环境搭建

什么是PHP?

(外文名:PHP:Hypertext Preprocessor,中文名:"超文本预处理器") 是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用) 文档中去执行,执行效率比完全生成HTML标记的CGI要高许多,PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。 ​ 目前PHP在全球网页市场、手机网页市场还有为手机提供API程序接口)排名第一。 ​ PHP入门简单,学习入门易入手。

PHP环境安装

集成环境 ·PHPStudy ·小皮面板 ·XAMPP 同时,WINDOWS/LINUX 上同样可直接安装环境//在这里,建议选用PHPstudy 作为环境安装,官网地址为小皮面板(phpstudy) - 让天下没有难配的服务器环境!

代码编辑选择

选择PHP代码的编辑器时,这里给出两点建议。拥有代码高亮功能 ·不会进行自动提示(建议新手使用) 推荐 phpstorm notepad++ vscode

二、基本语法

PHP基本语法操作

html 复制代码
<!DOCTYPE html>
<html>
//这段代码为一个PHP文件实例,将该实例内容放置服务器端即可实现向浏览器输出"*刘华强*"的操作
<body>
<?php
echo"和我刘华强拼,你有这个实力吗";
 ?>
</body>
</htmI>

PHP变量与输出

php 复制代码
<?php
$iphone13 = 5880; 
//变量首字母不能是数字,同时,变量区分大小写
$iphone12 = 6088; 
// 把变量命名的有意义一点,否则就会给读者挖坑
$shen = $iphone13 + $iphone12echo $shen; 
// echo 是在PHP里面最常用的一个输出、显示功能的命令
?>

$ 叫作美元符

PHP中的变量必须以美元符开始

啥是常量?

顾名思义,就是长久不变的量 在PHP中,用define来定义一个常量如下

php 复制代码
<?php
 define('MY_NAME','我是雪野白香里');
echo MY_NAME;
?>

PHP注释

PHP注释

php 复制代码
// 表示单行注释
​
#号也表示单行注释,用的比较少。多行注释 (注释多行)
​
//afdasdfadsf  单行注释
​
/*
​
多行注释 这里是注释区域代码
​
*/

PHP单引号双引号声明

在PHP中,单引号双引号都可适用于字符串 更推荐使用单引号,双引号会解析其中的变量

两者具体的不同之处可以去查阅相关资料了解

php 复制代码
<?php
$byball = '兄弟,这瓜多少钱一斤';
$sellball = "两块钱一斤";
    
 ?>

三、PHP表单

PHP表单

该html文档够建立一个提交界面

我们利用post 提交方式向get_name.php

提交了名字以及性别资料,点击提交按钮进行提交

新建一个名为index.html的文件 放到PHPStudy网站根目录下

html 复制代码
<html>
    <head>
        <meta charset="utf-8">
        <title>问卷调查</title>
    </head>
    <body>
        <form action="whoami.php" method="post">
            你的名字:<input type="text" name="fname">
            多大:<input type="text" name="age">
            <input type="submit" value="提交">
        </form>
    </body>
</html>

通过网页输入localhost,直接访问到index.html该页面

四、登录界面搭建与讲解

新建一个名为whoami.php的文件放到PHPStudy网站根目录下

php 复制代码
<html>
    <body>
        你叫<?php echo $_post["fname"];?>啊<br>
        <?php echo $_POST["age"];?>有男朋友吗?
    </body>
</html>

构建登陆页面

利用input 表单就可以构建简单的登陆页面 <fieldset>标签: 框住标签内容

<legend>标签:为fieldset标签添加标题

<label>标签: 点击字体,会自动聚焦后面的控件 <li>标签:列表标签,上方的ul标签代表着下方i标签将内容无序显示,同时,ol标签则代表这有序显示

checkbox: 复选圆框表单元素

登陆页面端

html 复制代码
<html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        <form action="login.php" method="post">
    <fieldset>
        <legend>用户登录</legend>
        <ul>
         <li>
             <label>用户名:</label>
             <input type="text" name="username">
         </li>
            <li>
            <label>密码:</label>
            <input type="password" name="userpassword">
            </li>
            <li>
            <label></label>
            <input type="checkbox" name="remember" value="yes">7天之内自动登录
            </li>
            <li>
            <label></label>
            <input type="submit" name="login" value="登录">
            </li>
        </ul>
    </fieldset>
</form>
    </body>
</html>

服务器端

php 复制代码
<?php
header('Content-type:text/html;charset=utf-8');   
//开启session
session_start();
//处理用户登录信息
if(isset($_POST['login'])){
    //接收用户的登录信息
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
    //判断提交的登录信息
    if(($username == '')||($password =='')){
        //若为空,视为未填写,提示错误,并3秒后返回登录界面
        header('refresh:3; url=login.html');
        echo "用户名或密码不能为空,系统将在3秒后跳转到登录界面,请重新填写登录信息!";
        exit;
    }elseif(($username != 'username') || 
            ($password !='password')){
        #用户名或密码错误,同空的处理方式
        header('refresh:3; url=login.html');
        echo "用户名或密码错误,系统将在3秒后跳转到登录界面,请重新填写登录信息!";
        exit;
    }elseif(($username = 'username') && ($password = 'password')){
        #用户名和密码都正确,将用户信息存到Session中
        $_SESSION['username'] = $username;
        $_SESSION['islogin'] = 1;
        //若勾选7天内自动登录,则将其保存到Cookie并设置保留7天
     if($_POST['remember']  == "yes"){
         setcookie('username',$username,time()+7*24*60*60);
setcookie('code',md5($username.md5($password)),time()+7*24*60*60);
     }else{
         //没有勾选则删除Cookie
         setcookie('username','',time()-999);
         setcookie('code','',time()-999);
     }
        //处理完附加项目后跳转到登录成功的首页
        header('location:index.php');
    }
}
?>

接下来

使用MySQL数据库实现交互

php 复制代码
<?php
header('Content-type:text/html;charset=utf-8');   
//开启session
session_start();
//处理用户登录信息
if(isset($_POST['login'])){
    //接收用户的登录信息
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
    //判断提交的登录信息
    if(($username == '')||($password =='')){
        //若为空,视为未填写,提示错误,并3秒后返回登录界面
        header('refresh:3; url=login.html');
        echo "用户名或密码不能为空,系统将在3秒后跳转到登录界面,请重新填写登录信息!";
        exit;
    }
    //连接数据库
    //数据库用户名和密码是你自己的用户名和密码
    $con = mysqli_connect('localhost','root','123456');
    //验证数据库链接状态
    if(mysqli_errno($con)){
        echo "连接失败了,请重试".mysqli_error($con);
        exit;
    }
    //设置解码方式
    mysqli_set_charset($con,'utf8');
    //如果没有相对应的数据库,请记得打开数据库进行创建
    mysqli_select_db($con,'test');
    $sql = "select * from login where username = '$username' and password = '$password'";
    $result = mysqli_query($con,$sql);
    if(!$num){
         #用户名或密码错误,同空的处理方式
        header('refresh:3; url=login.html');
        echo "用户名或密码错误,系统将在3秒后跳转到登录界面,请重新填写登录信息!";
        exit;
    }
    else{
        #用户名和密码都正确,将用户信息存到Session中
        $_SESSION['username'] = $username;
        $_SESSION['islogin'] = 1;
        //若勾选7天内自动登录,则将其保存到Cookie并设置保留7天
     if($_POST['remember']  == "yes"){
         setcookie('username',$username,time()+7*24*60*60);
setcookie('code',md5($username.md5($password)),time()+7*24*60*60);
     }else{
         //没有勾选则删除Cookie
         setcookie('username','',time()-999);
         setcookie('code','',time()-999);
     }
        echo("登陆成功");
       mysqli_close($con); 
    }
    }
?>
相关推荐
2401_857439692 小时前
SSM 架构下 Vue 电脑测评系统:为电脑性能评估赋能
开发语言·php
SoraLuna3 小时前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
开发语言·macos·ui·华为·harmonyos
xlsw_3 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
独行soc3 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
Dream_Snowar4 小时前
速通Python 第三节
开发语言·python
高山我梦口香糖5 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
独行soc5 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
信号处理学渣5 小时前
matlab画图,选择性显示legend标签
开发语言·matlab
红龙创客5 小时前
某狐畅游24校招-C++开发岗笔试(单选题)
开发语言·c++
jasmine s5 小时前
Pandas
开发语言·python