PHP基础

  • 格式

    最后一句可以不加分号

<?php
echo "hello"
?>

可以不加结束标签,但是最后一句要加分号

<?php
echo "hello";
  • 关于双引号和单引号

    1. 双引号可以转译字符,如\n\r等,而单引号会直接输出
    2. 双引号在里面想再包裹双引号,应该把里面的双引号转译或者使用单引号
    3. 双引号中,变量能直接输出。单引号会输出$a
  • 如果需要直接转译,可以这样输出
$b="hello\nworld"
echo -e $b

自写文件上传

<!--创建一个提交表单-->
<!--<form name="form名称" action="请求地址" method="请求类型" enctype ="multipart/form-data">-->
<!-- <input type="file" name="">-->
<!-- <input type="text" name="">-->
<!-- <input type="submit" value="提交">-->
<!--</form>--> <form action="" method="post" id="upload-form" enctype="multipart/form-data">
<input type="file" name="upload">
<input type="submit" value="Upload">
</form>
客户端提交表单之后,我们会获得一个$_FILES数据
$_FILES['myfile']['name'] 获取文件名字
$_FILES['myfile']['type'] 获取文件类型
$_FILES['myfile']['size'] 获取文件大小
$_FILES['myfile']['tmp_name'] 获取临时文件名
$_FILES['myfile']['error'] 获取上传文件的错误代码

利用move_uploaded_file(file,newloc)将上传的文件,移动到upload文件夹中

编辑器文件上传

项目下载地址:https://github.com/fex-team/ueditor#ueditor下载editor php utf-8

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>Ueditor测试</title>
<script src="./ueditor/ueditor.config.js">/*引入配置文件*/</script>
<script src="./ueditor/ueditor.all.js">/*引入源码文件*/</script>
</head>
<body>
<textarea id="content" rows="10" cols="70" style="border:1px solid #E5E5E5;">55222</textarea>
<script type="text/javascript">
UE.getEditor("content");//实例化编辑器 传参,id为将要被替换的容器。
</script>
</html>

代码

SQL注入

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>简单导航栏</title>
<style>
/* 添加一些基本的样式,可根据需要进行调整 */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
box-sizing: border-box;
} nav {
background-color: #333;
padding: 10px;
text-align: center;
} nav a {
color: white;
text-decoration: none;
padding: 10px 20px;
margin: 0 5px;
display: inline-block;
} nav a:hover {
background-color: #555;
}
</style>
</head>
<body> <nav>
<a href="#">首页</a>
<a href="#">关于我们</a>
<a href="#">服务</a>
<a href="#">联系我们</a>
</nav> <?php
// 数据库连接配置
$servername = "localhost";
$username = "yourusername";
$password = "yourpassword";
$dbname = "yourdbname"; // 创建数据库连接
$conn = new mysqli($servername, $username, $password, $dbname); // 检查连接是否成功
if ($conn->connect_error) {
die("数据库连接失败: " . $conn->connect_error);//输出一条消息并终止脚本执行的函数
} echo "<p>数据库连接成功</p>"; //执行查询语句
//整个用户可控的变量id
$id = $_GET["id"];
if(!$id){
echo "id值为空"."<br />";
exit;
}
// 在这里可以执行数据库查询等操作
$sql = "SELECT * FROM users where id=".$id;
// 执行查询
$result = $conn->query($sql);
// 检查查询是否成功
if ($result === false) {
die("查询失败: " . $conn->error);
}
// 处理查询结果
if ($result->num_rows > 0) {
// 输出数据
while ($row = $result->fetch_assoc()) {
echo "用户名: " . $row["username"]. " - 密码: " . $row["password"]. "<br>";
}
} else {
echo "0 结果";
} // 关闭数据库连接
$conn->close();
?> </body>
</html>

普通文件上传

<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<h1>文件上传</h1>
<form action="" method="post" id="upload-form" enctype="multipart/form-data">
<input type="file" name="upload">
<input type="submit" value="Upload">
</form> <?php
//$name=$_FILES['upload']['name'];//获取文件名字
//$type=$_FILES['upload']['type'];//获取文件名字
//$size=$_FILES['upload']['size'];//获取文件大小
//$temp=$_FILES['upload']['tmp_name'];//获取临时文件名
//$error=$_FILES['upload']['error'];//获取上传文件的错误代码
//
//echo $name."<br>";
//echo $type."<br>";
//echo $size."<br>";
//echo $temp."<br>";
//echo $error."<br>";
//
//if($type=='image/png'){
// if(!move_uploaded_file($temp,'./upload/'.$name)) {
// echo "文件移动失败";
// }else{
// echo "文件上传成功";
// echo './upload/'.$name;
// }
//}else{
// echo "文件类型不正确";
//} if(isset($_FILES['upload'])) {//用于检查是否存在upload字段
$name = $_FILES['upload']['name'];
$type = $_FILES['upload']['type'];
$size = $_FILES['upload']['size'];
$temp = $_FILES['upload']['tmp_name'];
$error = $_FILES['upload']['error']; echo $name . "<br>";
echo $type . "<br>";
echo $size . "<br>";
echo $temp . "<br>";
echo $error . "<br>"; if ($error === UPLOAD_ERR_OK) {//检查文件上传有没有出现错误
$allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; // 添加其他允许的文件类型 if (in_array($type, $allowedTypes)) {
$uploadDir = './upload/'; if (!file_exists($uploadDir)) {
mkdir($uploadDir, 0777, true);
} $uniqueName = uniqid() . '_' . $name; // 生成唯一的文件名
$destination = $uploadDir . $uniqueName; if (move_uploaded_file($temp, $destination)) {
echo "文件上传成功";
echo $destination;
} else {
echo "文件移动失败";
}
} else {
echo "文件类型不正确";
}
} else {
echo "文件上传失败,错误代码:" . $error;
}
} ?> </body>
</html>

0x06.HelloPHP的更多相关文章

  1. 0x06 MySQL 单表查询

    一 单表查询语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键字 ...

  2. 0x06 倍增

    这东西太玄学了我真是不太会... 对于这道例题,很容易看出最大值必然是最大减最小,次大减次小…… 常规的贪心思想,分的个数一样,总长度越大越好.其实我的第一想法是二分右端点..但是只有40,至今没有搞 ...

  3. Docker 0x06: Docker Volume卷

    目录 Docker Volume卷 一句话什么是docker volume? docker volume特性 docker 挂载卷 docker 多容器间共享数据券 删除,查看数据卷 备份还原数据卷 ...

  4. 0x06 - Nginx 负载均衡会话保持

    Nginx 负载均衡会话保持 背景 负载均衡时,如果APP需要保持特定状态的时候,就要保证同一用户的 session 会被分配到同一台服务器上. 实现方案 使用cookie 将用户的 session ...

  5. 推荐系统实践 0x06 基于邻域的算法(1)

    基于邻域的算法(1) 基于邻域的算法主要分为两类,一类是基于用户的协同过滤算法,另一类是基于物品的协同过滤算法.我们首先介绍基于用户的协同过滤算法. 基于用户的协同过滤算法(UserCF) 基于用户的 ...

  6. 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付

    前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...

  7. 对抗密码破解 —— Web 前端慢 Hash

    (更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...

  8. Summary of Critical and Exploitable iOS Vulnerabilities in 2016

    Summary of Critical and Exploitable iOS Vulnerabilities in 2016 Author:Min (Spark) Zheng, Cererdlong ...

  9. 黑云压城城欲摧 - 2016年iOS公开可利用漏洞总结

    黑云压城城欲摧 - 2016年iOS公开可利用漏洞总结 作者:蒸米,耀刺,黑雪 @ Team OverSky 0x00 序 iOS的安全性远比大家的想象中脆弱,除了没有公开的漏洞以外,还有很多已经公开 ...

  10. Syscan360会议胸牌破解揭秘

    Syscan360会议胸牌破解揭秘 背景 有幸参加今年11月份的上海Syscan360安全会议,会议期间有一个亮点就是360的独角兽团队设计了一款电子badge(胸牌)供参加人员进行破解尝试,类似于美 ...

随机推荐

  1. 一个简单利用WebGL绘制频谱瀑布图示例

    先看效果 还是比较节省性能的,这个还是包含了生成测试数据的性能,实际应用如果是直接通信获得数据应该还能少几毫秒吧! 准备工作 用了React,但是关系不大 WebGL的基础用法(推荐看一看掘金里的一个 ...

  2. 文心一言 VS 讯飞星火 VS chatgpt (83)-- 算法导论8.1 4题

    四.用go语言,假设现有一个包含n个元素的待排序序列.该序列由 n/k 个子序列组成,每个子序列包含k个元素.一个给定子序列中的每个元素都小于其后继子序列中的所有元素,且大于其前驱子序列中的每个元素. ...

  3. 《SQL与数据库基础》07. 约束

    目录 约束 常见约束案例 外键约束 删除/更新行为 本文以 MySQL 为例 约束 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据. 目的:保证数据库中数据的正确性.有效性和完整性. 分 ...

  4. QA|20221001|SecureCRT自动断开怎么办?

    Q:SecureCRT自动断开怎么办? A:如下设置

  5. freeswitch sofia协议栈调试

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. fs内部使用sofia的sip协议栈,本文介绍如何调试跟踪sofia协议栈. 环境 centos:CentOS  release 7 ...

  6. 慢SQL原因分析之索引失效

    现象 最近收到一个慢sql工单,慢sql大概是这样:"select xxx from tabel where type = 1". 咦,type字段明明有索引啊,为啥是慢sql呢? ...

  7. 记一次 .NET某新能源MES系统 非托管泄露

    一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序有内存泄露,跟着我的错题集也没找出是什么原因,刚好手头上有一个 7G+ 的 dump,让我帮忙看下是怎么回事,既然找到我了那就给他看看吧,不过 ...

  8. Java自学网站--十几个网站的分析与评测

    ​简介 很多想学Java的人不知道怎样选教程,本文对Java自学网站进行评测. 本文不带主观倾向,只客观分析各个网站的区别. 第1类:大型培训机构(黑马等) 典型机构 黑马.尚硅谷.动力节点.白马.千 ...

  9. Face to Face with Hurricane Camille

    1.Face to Face with Hurricane Camille Joseph P. Blank 1 John Koshak, Jr., knew that Hurricane Camill ...

  10. 文心一言 VS 讯飞星火 VS chatgpt (109)-- 算法导论10.1 7题

    七.用go语言,说明如何用两个队列实现一个栈,并分析相关栈操作的运行时间. 文心一言: 在Go语言中,我们可以用两个队列(queue1和queue2)实现一个栈.以下是实现代码: package ma ...