网络安全练气篇——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); 
    }
    }
?>
相关推荐
BingoGo21 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack21 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
cipher1 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
一次旅行4 天前
网络安全总结
安全·web安全