网络安全练气篇——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); 
    }
    }
?>
相关推荐
远望清一色14 分钟前
基于MATLAB的实现垃圾分类Matlab源码
开发语言·matlab
weixin_4426434223 分钟前
推荐FileLink数据跨网摆渡系统 — 安全、高效的数据传输解决方案
服务器·网络·安全·filelink数据摆渡系统
confiself23 分钟前
大模型系列——LLAMA-O1 复刻代码解读
java·开发语言
XiaoLeisj35 分钟前
【JavaEE初阶 — 多线程】Thread类的方法&线程生命周期
java·开发语言·java-ee
杜杜的man38 分钟前
【go从零单排】go中的结构体struct和method
开发语言·后端·golang
幼儿园老大*39 分钟前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go
半桶水专家40 分钟前
go语言中package详解
开发语言·golang·xcode
llllinuuu41 分钟前
Go语言结构体、方法与接口
开发语言·后端·golang
cookies_s_s41 分钟前
Golang--协程和管道
开发语言·后端·golang
王大锤439143 分钟前
golang通用后台管理系统07(后台与若依前端对接)
开发语言·前端·golang