web-php

news2024/11/15 12:25:44

目录

基础

注释

php程序的组成

php的数据类型

php代码的运行

代码

显示时间

输出账户名和密码

后端对前端的数据进行验证处理代码

连接数据库的代码

前后端代码相结合验证,实现登录接口验证

login.html

login.php

register.html

register.php

error.html

php函数

mysqli_query

mysqli_fetch

echo和print_r的区别

var_dump

header

JS


基础

注释

第一种:/*多行注释风格*/
第二种://单行注释风格
第三种:#单行注释风格。

php程序的组成

        从功能的角度,完整的PHP程序可以划分为三个组成部分:数据的采集、数据的处理和数据的输出。

php的数据类型

        PHP数据类型分为四种:标量数据类型、复合数据类型、特殊数据类型和伪类型。
          其中标量数据类型共有四种:布尔型、整型、浮点型和字符串型;
          复合数据类型共有两种:数组和对象;
          特殊数据类型有资源数据类型和空数据类型;
          伪类型通常在函数的定义中使用。

php代码的运行

http://127.0.0.1/data.php
#要把代码挡在WWW文件夹下面才能进行解析。格式为ip+路径

代码

显示时间

<?php
    echo date("Y-m-d日 H:i分s秒");
?>

输出账户名和密码

<?php
    $username=$_GET["username"];
    $password=$_GET["password"];
    echo $username;
    echo "<br>";
    echo $password;
?>

后端对前端的数据进行验证处理代码

连接数据库的代码

<?php
    $username=$_GET["username"];
    $password=$_GET["password"];
    echo $username;
    echo "<br>";
    echo $password;
    echo "<br>";
?>

<?php
    $link=mysqli_connect('localhost','root','root');
#用来连接数据库的字符串
    if($link){
        echo '数据库连接成功';
    }else{
        echo '数据库连接失败';
    }
    mysqli_set_charset($link,'utf8');
    mysqli_select_db($link,'hackbiao');
    $sql="insert into hackbiao values('$username','$password')";
    $res=mysqli_query($link,$sql);
    var_dump($res);
    //var_dump() 函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
    mysqli_close($link);
//在前端显示的bool就是res
?>

 报错提示

        如果数据库可以连接成功,但是一直就是插入失败的话,就要考虑是不是因为插入的表中没有这个要插入的字段名所导致的。刚开始一直插失败,就是因为要插入的那张表中存在的字段名与我要插入的字段名不一致导致的。

前后端代码相结合验证,实现登录接口验证

login.html

<html>
    <head>
        <meta charset="utf-8">
        <title>login</title>
        <style type="text/css">
            div{
                text-align: center;
                color: black;
            }
        </style>
        <script type="text/javascript">
            function check(){
                if(document.getElementById("form").username.value.length==0){
                    alert("输入不能为空");
                }else
                    document.getElementById("form").submit();
            }
        </script>
    </head>
    <body>
        <div>
            <h1><b>欢迎来到登陆界面</b></h1>
        </div>
        <div>
            <form action="login.php" id="form" name="form" method="get">
                账号:<input type="text" id="username" name="username" maxlength="20" size="25" placeholder="请输入账号">
                <br><br>
                密码:<input type="password" id="password" name="password" size="25" placeholder="请输入密码">
                <br><br>
                <input type="button" onclick="check()" value="登陆">
                <a href="register.html">
                    <input type="button" value="注册">
                </a>
                <!--这里一定不能写submit按钮,用这个按钮的话会直接连接login.php文件,不能触发我们的超链接-->
                


            </form>
            
        </div>

    </body>
</html>

login.php

<?php
    $username=$_GET["username"];
    $password=$_GET["password"];
    echo "$username";
    echo "<br>";
    echo $password;
    echo "<br>";
?>

<?php
    $link=@mysqli_connect('localhost','root','root');
#用来连接数据库的字符串
    if($link){
        echo '数据库连接成功';
        echo '<br>';
    }else{
        echo '数据库连接失败';
        echo '<br>';
    }

    mysqli_set_charset($link,'utf8');
    mysqli_select_db($link,'hackbiao');
    $sql="select * from hackbiao where username='$username'";
    //搜索:通过定义一个sql语句在数据库中对username字段进行查询,查询的内容为我们上面输入的用户名
    $res=mysqli_query($link,$sql);
    //查询数据库的语句,如果不定义$sql就可以直接在后面跟上查询数据库的语句

/*
    //方法一:使用mysqli_fetch_array函数
    $row = mysqli_fetch_array($res);
    //读取表中的某一条数据

    //用来判断登录名密码是相同
    if($row['username']==$username&&$row['password']==$password){
        echo '登录成功';
        echo '<br>';
    }else{
        echo '登录失败';
        echo '<br>';
        header('Location:error.html');
    }

    //这里只是可以更直观的看出来登录状态
    echo '你正确的的用户名是:';
    echo $row['username'];
    echo '<br>';
    echo '你正确的的密码是:';
    echo $row['password'];
*/


    //方法二:使用mysqli_fetch_assoc函数
    $arr=mysqli_fetch_assoc($res);
    print_r([$arr]);
    echo '<br>';
    echo $arr['username'];
    echo '<br>';
    echo $arr['password'];
    echo '<br>';

    if($arr['username']==$username&&$arr['password']==$password){
        echo '登录成功';
        echo '<br>';
    }else{
        echo '登录失败';
        echo '<br>';
        header('Location:error.html');
    }

    //断开数据库的连接
    mysqli_close($link);
    
    
?>

register.html

<html>
    <head>
        <meta charset="utf-8">
        <title>register</title>
        <style type="text/css">
            div{
                text-align: center;
                color: cadetblue;
            }
        </style>
        <script type="text/javascript">
            function check(){
                if(document.forms[0].username.value.length==0){
                    alert("输入不能为空");
                }else
                    document.forms[0].submit();
            }
        </script>
    </head>
    <body>
        <div>
            <form action="register.php" id="form" name="form" method="get">
                账&nbsp;&nbsp;号:<input type="text" name="username" id="username" placeholder="请输入账号">
                <br><br>
                密&nbsp;&nbsp;码:<input type="password" id="password" name="password" placeholder="请输入密码">
                <br><br>
                确认密码:<input type="password" id="confirm" name="confirm" placeholder="再次输入密码">
                <br><br>
                性&nbsp;&nbsp;别<input  type="radio" name="sex" checked>男
                                <input type="radio" name="sex">女
                <br><br>
                <input type="button" value="注册" onclick="check()">
                <input type="reset" value="重置">
            </form>
        </div>
    </body>
</html>

register.php

<?php
    $username=$_GET["username"];
    $password=$_GET["password"];
    $confirm=$_GET["confirm"];
    echo $username;
    echo "<br>";
    echo $password;
    echo "<br>";
    echo $confirm;
    echo "<br>";
    if($password!==$confirm){
        echo "密码输入不一致,请重新注册";
        echo '<br>';
    }
?>
<?php
    $link=mysqli_connect('localhost','root','root');
    if($link){
        echo '数据库连接成功';
        echo '<br>';
    }else{
        echo '数据库连接失败';
        echo '<br>';
    }
    mysqli_set_charset($link,'utf8');
    //设置字符编码
    mysqli_select_db($link,'hackbiao');
    //选择数据库

    $sql="select * from hackbiao where username='$username'";
    $result=mysqli_query($link,$sql);
    $row=mysqli_fetch_array($result);
    //查询result中的第一条数据


    if($row['username']==$username||$password!==$confirm){
        echo '提示:已经存在相同的用户名,注册失败';
    }else{
        $SQL="insert into hackbiao values('$username','$password')";
        $res=mysqli_query($link,$SQL);
        var_dump($res);
        //这里的bool值为true就表示数据插入数据库成功
        echo '<br>';
        echo '注册成功';
    }

    mysqli_close($link);
    //断开数据库的连接
?>

error.html

<html lang="zh-CN">
<head>
	<meta charset="utf-8">
	<title>登录失败</title>
	<script>
		function cstc(){
			setTimeout("window.location.href = 'login.html'", 3000);
		}
		<!--setTimeout("alert('对不起, 要你久候')", 3000);-->
        <!--setTimeout("window.location.href='login.html'",3000);-->
	</script>
</head>



<body>
	<center>
	<div>
        	<h1>登录失败,请重新登陆</h1>      
	</div>
	<form>
		<input type="button" onclick="cstc()" value='点击这里,等待3秒跳转回注册界面'>
	</form> 
	</center>
</body>
</html>

php函数

mysqli_query

查询的是数据库中的某张数据表

mysqli_fetch

mysql_fetch_array

查询的是数据表中的某一条数据

mysqli_fetch_row是通过数字索引取值

$res=mysqli_query($link,$sql);#返回的资源
$arr=mysqli_fetch_row($res);#把查询结果的第一行返回到$arr 数组中
print_r($arr);
print_r($arr[0]);#通过索引取值

mysqli_fetch_assoc()用关键字索引取值

$res=mysqli_query($link,$sql);#返回的资源
$arr=mysqli_fetch_assoc($res);
print_r($arr);
echo $arr['username'];

echo和print_r的区别

        echo是一个语言结构,可以直接用在脚本中,在默认情况下输出一个或多个字符串(可以同时输出多个字符串,用逗号分隔)。

        print_r是一个函数,可以输出数组、对象等复杂数据类型的结构信息。print_r输出的信息会包括变量类型、键名、键值等详细信息,适合用于调试和查看数据结构的信息。

        

var_dump

  同 print_r() 函数一样,var_dump() 函数也可以用于打印数组的数据及结构。不过 var_dump() 函数功能比 print_r() 更强大,可以同时打印多个变量且给出变量的类型信息。

        php中的header函数主要用于向客户端发送原始的http报头,常用的有用来通知浏览器页面不存在,延迟转向、表示内容类型、声明下载文件、对当前文档禁用缓存、显示一个需要验证的登陆对话框等等。

header('HTTP/1.1 200 OK');     #ok 正常访问
 
header('HTTP/1.1 404 Not Found');    #通知浏览器 页面不存在
 
header('HTTP/1.1 301 Moved Permanently');    #设置地址被永久的重定向 301
 
header('Location: http://www.ithhc.cn/');    #跳转到一个新的地址
 
header('Refresh: 10; url=http://www.ithhc.cn/');    #延迟转向 也就是隔几秒跳转
 
header('X-Powered-By: PHP/6.0.0');    #修改 X-Powered-By信息
 
header('Content-language: en');    #文档语言
 
header('Content-Length: 1234');    #设置内容长度
 
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');    #告诉浏览器最后一次修改时间
 
header('HTTP/1.1 304 Not Modified');    #告诉浏览器文档内容没有发生改变

JS

setTimeout() 是设定一个指定等候时间 (单位是千分之一秒, millisecond)

<script>
	setTimeout("alert('对不起, 要你久候')", 3000);
</script>



#######这里是用function定义一个函数,需要和点击相结合
<script>
	function cstc(){
		setTimeout("alert('对不起, 要你久候')", 3000);
	}
	<!--setTimeout("alert('对不起, 要你久候')", 3000);-->
    #实现js的警告框
    <!--setTimeout("window.location.href='login.html'",3000);-->
    #实现js的页面跳转
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/739005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型调用工具魔搭GPT——一键调用魔搭社区上百个AI模型的API

为了让模型开发变得更容易,阿里云在发布会现场推出了一款令开发者耳目一新的工具:ModelScopeGPT(魔搭GPT)。它能够通过担任“中枢模型”的大语言模型一键调用魔搭社区其他的AI模型,实现大模型和小模型协同完成复杂任务。 这类智能调用工具被业界普遍看好。ModelScopeGP…

Android Handler被弃用,那么以后怎么使用Handler,或者类似的功能

Android API30左右&#xff0c;Android应用在使用传统写法使用Handler类的时候会显示删除线&#xff0c;并提示相关的方法已经被弃用&#xff0c;不建议使用。 Handler handler new Handler(){Overridepublic void handleMessage(NonNull Message msg) {super.handleMessage(…

分配操作菜单

目录 概述介绍数据库后端前端效果展示 概述 在写后台管理系统时, 我们可以根据不同的登录人,给予不同的功能菜单 如 :给楼栋管理员登录时分配(楼栋管理,宿舍管理) 所以在数据库就要创建: 1.登录人与角色表, 2再给角色表分配操作菜单 登录时查询对应的操作菜单,将数据响应给前端…

ASPICE软件工具链之Jira教程

Jira使用教程 一、什么是Jira? 二、Jira的使用教程 功能介绍: 创建工作流 工作流方案 设置字段流程 字段配置 界面方案 界面方案创建流程 问题类型界面方案 将项目与预先创建的方案关联 配置总流程 创建项目 设置项目 添加工作流 添加界面配置方案 设置Scrum 看板泳道图 一…

物联网行业的革命:Web3 技术如何改变我们的日常生活

物联网 (IoT) 是一个充满创新和潜力的领域&#xff0c;它将物理设备、传感器和互联网连接起来&#xff0c;实现智能化和自动化。 在过去几年中&#xff0c;从智能家居、智能城市到工业自动化&#xff0c;物联网技术已经渗透到了各个领域。然而&#xff0c;随着物联网设备和系统…

Spring源码系列-第1章-Spring源码纵览

必读 源码是循循渐进的&#xff0c;前面我会省略中间很多目前不需要深入的代码&#xff0c;所以会看起来代码比较少。省略的地方我会打上这样的标识 // ... 或者 // ...如果没打也不代表我没省略&#xff0c;可能是忘记了&#xff0c;不要看懵了。 第1章-Spring源码纵…

golang数据库操作相应内容--推荐【比较全】

Go为开发数据库驱动定义了一些标准接口&#xff0c;开发者可以根据定义的接口来开发相应的数据库驱动&#xff0c;只要是按照标准接口开发的代码&#xff0c; 以后需要迁移数据库时&#xff0c;不需要任何修改。 一、database/sql接口 1.1sql.Register 这个存在于database/s…

数分面试题:酒坛问题

问题&#xff1a;你有一个八升的酒坛&#xff0c;装满了酒&#xff0c;此外还有3升和5升的两个空酒坛&#xff0c;请在一个酒坛里装上刚好四升酒 关键&#xff1a;8拆分为3个正整数的加和&#xff0c;且3个正整数不能大于8&#xff0c;5&#xff0c;3 组合方式&#xff1a; 4…

【力扣算法02】之寻找两个正序数组的中位数 - python

文章目录 问题描述示例 1示例2提示 解题思路代码分析完整代码运行效果及示例代码示例代码1效果图 示例代码2效果图 完结 问题描述 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间…

机器学习洞察 | 分布式训练让机器学习更加快速准确

机器学习能够基于数据发现一般化规律的优势日益突显&#xff0c;我们看到有越来越多的开发者关注如何训练出更快速、更准确的机器学习模型&#xff0c;而分布式训练 (Distributed Training) 则能够大幅加速这一进程。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源…

限制远程访问,保障服务器安全,如何指定某台电脑远程本服务器?

好多人都在问&#xff0c;如何限制某台电脑远程访问本服务器是一个必须要解决的问题。下面&#xff0c;我将为大家介绍几种限制远程访问的方法&#xff0c;帮助大家保障服务器的安全性。 1&#xff0e;修改远程桌面端口号 默认情况下&#xff0c;Windows服务器的远程桌面端口号…

时序预测 | Matlab+Python实现基于高斯混合模型聚类结合CNN-BiLSTM-Attention的风电场短期功率预测

时序预测 | MatlabPython实现基于高斯混合模型聚类结合CNN-BiLSTM-Attention的风电场短期功率预测 目录 时序预测 | MatlabPython实现基于高斯混合模型聚类结合CNN-BiLSTM-Attention的风电场短期功率预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 基于高斯混…

1.Git使用技巧-常用命令3

1.Git使用技巧-常用命令3 文章目录 1.Git使用技巧-常用命令3一、版本分支介绍二、版本控制常用命令例子 三、git 仓库如何使用总结 一、版本分支介绍 分支介绍&#xff1a; Master &#xff1a; 稳定压倒一切&#xff0c;禁止尚review和测试过的代码提交到这个分支上&#xff…

1.2 向量基础

什么是向量 向量的定义 ①向量是有大小和方向的有向线段。 ②向量没有位置&#xff0c;只有大小和方向 ③向量的箭头是向量的结束&#xff0c;尾是向量的开始 ④向量魔术的位移能被认为是宇宙平行的唯一序列 &#xff08;向量的数组不是向量的位置&#xff0c;而是向量在各个维…

C++多线程学习(十七、简单实现线程池)

目录 线程池 设计线程池的关键问题 代码 可能出现的疑问 queue> task; 总结&#xff1a; template auto InsertQueue(T&& t, Args&& ...args)->future;(t(args...))> 总结&#xff1a; ThreadPool(size_t size);构造函数 总结&#xff1…

在SpringBoot中搭建微服务的项目(19版)

1.创建SpringBoot项目 2.删除不需要的,留一个pom文件 3.掉地SpringBoot的版本: <version>2.1.6.RELEASE</version> 4.导入该pom文件 <dependencies> <!-- SpringBoot启动器--><dependency><groupId>org.springframework.boot</g…

关于Redis因OAuth 2.0内存溢出解决方案

一、背景介绍 1.问题简介 本次问题是由OAuth 2.0授权框架&#xff08;用于授权第三方应用程序【客户端】访问受保护的资源。&#xff09;存储在Redis集群中的一个key引起的&#xff1a;client_id_to_access&#xff08;或称为 “client ID to access”&#xff09;通常是指在O…

安全用电管理平台针对电气火灾的解决方案 安科瑞 许敏

摘要&#xff1a; 安全用电管理平台是针对我国当前电气火灾事故频发而设计的一套电气火灾预警和预防管理系统&#xff0c;该系统是基于移动互联网、云计算技术、通过物联网传感终端&#xff08;现场监控模块、传输模块&#xff09;&#xff0c;将供电侧、用电侧电气安全参数实时…

java 打包Spring Boot项目,并运行在windows系统中

前面呢 我们已经把Spring Boot比较基础的东西都弄完了 然后呢 我们来看运维这方面的知识 首先 我们做个打包运行 其实很多人可能会比较熟悉windows系统 而linux服务器 相对没那么了解 那么我们就先来弄windows的 首先 我们要知道 为什么要打包 我们就看我们前面做的MMP项目 当…

git轻量级服务器gogs

确保本真机已启动sshd服务 sudo apt install openssh-server -y sudo systemctl start sshgogs部署 启动 sudo docker stop gogs; sudo docker rm gogs; rm -fr /build/gogs_data/*; sudo docker run --namegogs -p 10022:22 -p 10880:3000 -v /build/gogs_data:/data …