web-php
目录
基础
注释
第一种:/*多行注释风格*/
第二种://单行注释风格
第三种:#单行注释风格。
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">
账 号:<input type="text" name="username" id="username" placeholder="请输入账号">
<br><br>
密 码:<input type="password" id="password" name="password" placeholder="请输入密码">
<br><br>
确认密码:<input type="password" id="confirm" name="confirm" placeholder="再次输入密码">
<br><br>
性 别<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() 更强大,可以同时打印多个变量且给出变量的类型信息。
header
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>