PHP笔记

1. 搭建运行环境

1.1 挂载光盘

[root@redhat200 ~]# mount /dev/sr0 /mnt

1.2 配置仓库

# 查看仓库列表
[root@redhat200 ~]# dnf repolist# 进入到仓库目录
[root@redhat200 ~]# cd /etc/yum.repos.d/
# 编辑仓库文件
[root@redhat200 yum.repos.d]# vim base.repo
# 查看仓库内容
[root@redhat200 yum.repos.d]# cat base.repo # 生成缓存
[root@redhat200 yum.repos.d]# dnf makecache

仓库内容:

[base]
name=base
baseurl=/mnt/BaseOS
gpgcheck=0
[app]
name=app
baseurl=/mnt/AppStream
gpgcheck=0

1.3 安装PHP服务

[root@redhat200 yum.repos.d]# dnf -y install php*

1.4 安装Apache

# 安装 apache 软件,其实就是安装 httpd 服务
[root@redhat200 yum.repos.d]# dnf -y install httpd
​
# 启动服务
[root@redhat200 yum.repos.d]# systemctl start httpd
​
# 查看 80 端口是否已经启动
[root@redhat200 yum.repos.d]# ss -lntup | grep 80
​
# 进入http服务的目录下
[root@redhat200 html]# cd /var/www/html# 编写index.php页面
[root@redhat200 html]# echo "hello php" > index.php

1.5 放行服务和端口

# 查看防火墙信息
[root@redhat200 html]# firewall-cmd --list-all# 将 http 服务加入到防火墙列表中
[root@redhat200 html]# firewall-cmd --permanent --add-service=http# 将80端口加入到防火墙列表中
[root@redhat200 html]# firewall-cmd --permanent --add-port=80/tcp# 重新加载防火墙,让上面的配置生效
[root@redhat200 html]# firewall-cmd --reload# 查看防火墙列表信息
[root@redhat200 html]# firewall-cmd --list-all

1.6 运行测试

打开浏览器,输入 http:ip 可以看到页面内容则表示配置成功

2. PHP基础

2.1 基本语法

一个 php 文件,它的编写格式为

<?php 内容 
?>
[root@redhat200 html]# cat index.php
<hmtl>
<head>
<meta char="utf-8"/>
<title>php</title>
</head>
<body>
<?phpecho "hello php";
?>
</body>
</html>

2.2 注释

  • 单选注释:// 注释内容
  • 多行注释: /* 注释内容 */ 

2.3 变量

在 PHP 中定义变量需要使用 $变量名 来声明。

<?php$a=5;$b=10;$c = $a + $b;echo $c;
?>

2.5 if语句

语法格式:

if (条件) {执行语句;
}else if (条件) {执行语句;
}else {执行语句;
}

2.6 switch语句

语法格式:

switch(表达式) {
case 情况1:执行语句;break;
case 情况2:执行语句;break;
case 情况3:执行语句;break;
default:执行语句;break;
}

2.7 for循环

语法格式:

for (初始值; 条件; 增量) {要执行的代码;
}

2.8 while循环

语法格式:

while (条件){要执行的代码;
} 

2.9 数组

在 PHP 中定义数组需要使用 array() 函数来声明,在这个函数中定义数组中的元素。

$数组名称 = array(元素1,元素2,....,元素n);

使用示例:

<?php
$arr = array(1,2,3,4,5);
echo $arr[0] . ", " . $arr[1] . ", " . $arr[2] . "<br>";
​
for($i=0; $i<count($arr); $i++) {echo $arr[$i] . "<br>";
}
​
echo "-----------------<br>";
​
?>

2.10 函数

语法格式:

function functionName($fname) {要执行的代码;
}

使用示例:定义一个函数,用户计算给定参数的阶乘

<?php
$i=5;
​
function factorial($num) {if ($num == 1)return 1;elsereturn $num*factorial($num-1);
}
​
echo factorial($i);
?>

2.11 对象

声明一个类的语法格式:

<?php
class phpClass {var $var1;var $var2 = "constant string";function myfunc ($arg1, $arg2) {[..]}[..]
}
?>

注意:调用类的方法也需要使用 -> 来进行调用

例如,我们声明一个 Site 类,在这个类别定义 url 和 title 属性,并定义一些给属性设置的方法以及获取这些属性值的方法。

<?php
class Site {/* 成员变量 */var $url;var $title;/* 成员函数 */function setUrl($par){$this->url = $par;}function getUrl(){echo $this->url . PHP_EOL;}function setTitle($par){$this->title = $par;}function getTitle(){echo $this->title . PHP_EOL;}
}
$site = new Site();$site->setUrl("http://www.baidu.com");
$site->setTitle("baidu");echo $site->getUrl();
echo $site->getTitle();
?>

2. 表单

PHP 中的 $_GET 和 $_POST 变量用于检索表单中的信息,比如用户输入。

2.1 GET请求

1)编写一个链接,在这个链接上我们传一个 id 参数,然后获取这个参数

<html>
<head>
<meta charset="utf-8"/>
<title>aaa</title>
</head>
<body>
<a href="get.php?id=<?php echo $_GET["id"]; ?>">click me<?php echo $_GET["id"]; ?></a>
</body>
</html>

2)使用时,我们在浏览器的地址栏中输入 http://IP/get.php?id=100

2.2 POST请求

1)编写一个表单页面 index.php

<html>
<head>
<meta charset="utf-8"/>
<title>form</title>
</head>
<body>
<form action="handle.php" method="post">
account: <input type="text" name="account" placeholder="please input your account"/><br>
password: <input type="password" name="password" placeholder="please input your password"/><br>
<input type="submit" value="login"/>
<input type="reset" value="cancel"/>
</form>
</body>
</html>

2)编写接收表单数据的处理程序 handle.php

<?php
​
$account = $_POST["account"];
$password = $_POST["password"];
​
if ("admin" == $account && "123" == $password) {echo "login success";
} else {echo "account error or password error";
}
?>

3. 安装数据库

以 mariadb 数据库为例演示安装

# 安装数据库
[root@redhat200 html]# dnf -y install mariadb mariadb-server# 启动数据库
[root@redhat200 html]# systemctl start mariadb# 查看端口号
[root@redhat200 html]# ss -lntup | grep 3306    # 登录数据库
[root@redhat200 html]# mysql -uroot -p
Enter password: #直接回车,不要输入密码,默认为空密码# 修改root用户的密码
MariaDB [(none)]> alter user 'root'@'localhost' identified by '123456';# 退出数据库
MariaDB [(none)]> exit;# 重新使用用户名 root 和密码 123456 来登录数据库
[root@redhat200 html]# mysql -uroot -p123456

4. PHP+MYSQL

4.1 编写添加页面

[root@redhat200 html]# vim add.php 
[root@redhat200 html]# cat add.php 
<html>
<head>
<meta charset="utf-8"/>
<title>add user</title>
</head>
<body>
<center><h1>添加用户</h1></center>
<form action="addUser.php" method="post">
姓名: <input type="text" name="name" placeholder="请输入姓名"/><br>
年龄: <input type="text" name="age" placeholder="请输入年龄"/><br>
<input type="submit" value="添加"/>
<input type="reset" value="取消"/>
</form>
</body>
</html>

4.2 编写处理添加功能

<?php
​
$name = $_POST["name"];
$age = $_POST["age"];
​
/*
mysqli函数的参数说明:
第一个参数是连接数据库的 IP 地址,当然也可以加端口号, 如果端口号为 3306,可以不用写
第二个参数是连接数据库的用户名
第三个参数是连接数据库的密码
第四个参数是要操作的数据库名称
*/
$conn = new mysqli("localhost", "root", "123456", "openlab");
​
if ($conn->connect_error) {die("Connection failed: " . $conn->connect_error);
}
​
$sql = "insert into t_user(name, age) values('".$name."', $age)";
​
if ($conn->query($sql) == TRUE) {echo "add user $name success";
} else {echo "Error: " . $sql . "<br>" . $conn->error;
}
​
$conn->close();
?>

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

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

相关文章

08.4.grafana自定义图形并直接数据库取值

grafana自定义图形并直接数据库取值 自定义添加油表图形 选择gauge图形&#xff0c;并且配置对应设定值&#xff0c;点击应用 如图所示&#xff0c;可以看到仪表盘上的值是zabbix上取得值 配置grafana直接数据库取值 添加mysql数据源 添加后进行配置&#xff0c;我这…

JS解密之新js加密实战(二)

前言 上次发了一篇关于新加密的&#xff0c;只解了前边两层&#xff0c;这中间家里各种事情因素影响&#xff0c;没有继续进一步研究&#xff0c;今天百忙之中抽空发布第二篇&#xff0c;关于其中的一小段加密片段&#xff0c;我认为分割成多个小片段是更容易被理解的。逻辑相…

如何更好地使用Kafka? - 运行监控篇

要确保Kafka在使用过程中的稳定性&#xff0c;需要从kafka在业务中的使用周期进行依次保障。主要可以分为&#xff1a;事先预防&#xff08;通过规范的使用、开发&#xff0c;预防问题产生&#xff09;、运行时监控&#xff08;保障集群稳定&#xff0c;出问题能及时发现&#…

牛客NC363 开锁【中等 BFS Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/e7cbabbf7e0a41ec98055ee5f3d33bbe https://www.lintcode.com/problem/796 思路 Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#x…

SpringBoot整合SpringScurity权限控制(菜单权限,按钮权限)以及加上SSH实现安全传输

文章目录 项目地址&#xff1a; 一、md5 与 先进的哈希算法的区别1.1. 安全性问题1.2. 设计目的1.3. 功能特性1.4. 适用性1.5. 总结 二、数据传输安全和数据加密实现&#xff1a;2.1 生成证书&#xff1a;2.2、在springboot中进行集成2.2.1 配置证书&#xff1a;2.2.2. 强制使用…

4.1 编写程序,从键盘接收一个小写字母,然后找出他的前导字符和后续字符,再按顺序显示这三个字符

方法一&#xff1a; 运行效果&#xff1a; 输入B&#xff0c;输出显示ABC&#xff1b;输入A&#xff0c;输出显示AB 思路&#xff1a; 1、通过键盘输入接收一个字母。 2、将输入的字母减去1&#xff0c;得到前导字符&#xff0c;然后输出。 3、将输入的字母加上1&#xff0c;得…

【js下载文本文件】

功能 使用js下载dom的文本内容 原理 a标签下载功能 代码 <p id"p2">66666666</p><button onclick"downloadInnerHtml(filename2,#p2)">下载</button><script>var filename2 新建文档; //默认文本名字function downloa…

【问题实操】银河高级服务器操作系统实例分享,开机之后反复重启

1.服务器环境以及配置 物理机/虚拟机/云/容器 物理机 外网/私有网络/无网络 私有网络 处理器&#xff1a; PHYTIUM FT2000PLUS 2200 MHz 内存&#xff1a; 128 GiB 整机类型/架构&#xff1a; HIKVISION DS-V BIOS版本&#xff1a; HK 601FBE02HK 网卡&#xff1…

云原生技术解析

云原生的概念 云原生是一种软件架构和部署方法&#xff0c;旨在利用云计算的优势&#xff0c;以更灵活、可扩展和可靠的方式构建和部署应用程序。它主要关注在容器、微服务、自动化和持续交付等方面。 云原生技术是指以云计算作为基础&#xff0c;以平台和工具为依托&#xff0…

【免费】2024年全新超强版本itvboxfast如意版影视APP源码 TV+手机双端后台PHP源码

首先&#xff0c;让我们了解一下ITVBox如意版影视源码的特点和优势。这一源码基于先进的技术和框架开发&#xff0c;具有稳定、高效的性能&#xff0c;能够满足影视网站的各种需求。与此同时&#xff0c;该源码还提供了丰富的功能和模块&#xff0c;包括影视资源管理、会员系统…

rs6(vmp)瑞某,药某局,商某局,专某局,维某网,cookie + 后缀 的分析解析

文章目录 说在前面rs vmp 特征 介绍解决方法算法补环境运行报错 代码联调补环境框架 补环境导出结果导出cookie导出后缀 效果展示 vx lyj_txd qq 1416279170 # 加我备注来意说在前面 免责声明&#xff1a; 本篇文章只做学习讨论&#xff0c;无商务用途&#xff0c; 未对目标…

线下研讨会 技术沙龙|乐鑫芯片与 ESP RainMaker® 为科技初创企业赋能

众多科技初创企业在智能硬件市场迅猛发展的背景下&#xff0c;对不断变化的需求展现出了高度的敏锐性&#xff0c;期望能够快速将其转化为切实的产品方案。然而&#xff0c;面对复杂繁重的软硬件集成任务&#xff0c;这些企业往往容易陷入研发瓶颈、资金短缺以及效率低下等多重…

C++内存管理new/delete和new[ ]/delete[ ]

1.c/c内存分布 首先看一段代码 int globalVar 1; static int staticGlobalVar 1; void Test() { static int staticVar 1; int localVar 1; int num1[10] { 1, 2, 3, 4 }; char char2[] "abcd";const char* pChar3 "abcd"; //这里不加const会导致…

从 Oracle 到 TiDB,国有大行打造本地生活 APP 新体验

导读 本文介绍了某国有大行推出的本地生活服务类 APP 在数字时代的创新应用实践。该 APP 利用金融科技和互联网平台模式&#xff0c;打造“金融非金融”的线上生态服务平台&#xff0c;满足了用户多样化的生活需求。为应对用户增长和数据量增加带来的挑战&#xff0c;该 APP 决…

【原创】nnUnet V1在win11下的安装与配置

安装之前可以先了解一下论文的主要内容&#xff0c;便于之后网络训练与推理&#xff0c;调试程序。 论文地址&#xff1a;nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation | Nature Methods 也可以从其他博客快速浏览&#xff1a…

计算机网络(网络原理与应用)之高级交换实验------冗余环路与生成树协议

一、实验目的 (1)了解生成树协议的作用&#xff1b; (2)熟悉生成树协议的配置。 二、应用环境 采用生成树协议可以避免环路。 生成树协议的根本目的是将一个存在物理环路的交换网络变成一个没有环路的逻辑树形网络。IEEE802.ID协议通过在交换机上运行一套复杂的算法STA(sp…

JupyterLab OpenCV展示图片

JupyterLab OpenCV展示图片 方式一 注意&#xff1a;此种方式如果在远程服务器上的JupyterLab上运行&#xff0c;可能会出现错误。 import cv2# 读取图片 image cv2.imread(photo/blg.png)# 显示图片 cv2.imshow(image, image)# 等待按键&#xff0c;之后关闭所有窗口 cv2.w…

Deckset for Mac:让演示文稿制作更轻松

还在为繁琐的演示文稿制作而烦恼吗&#xff1f;Deckset for Mac来帮您解决&#xff01;它支持Markdown语言&#xff0c;让您只需专注于内容的创作&#xff0c;无需在排版和设计上耗费过多精力。丰富的主题和布局选项&#xff0c;让您能够轻松打造出专业级的演示文稿。快来体验D…

我的 OpenLiteSpeed 从开始到放弃之经历

昨晚下定决心放弃 OpenLiteSpeed 了&#xff0c;从开始到放弃历时七天。总结下来放弃 OpenLiteSpeed 主要是实在不适合明月当前的需要&#xff0c;用起来不是锦上添花而是个累赘了都&#xff0c;今天明月就给大家总结分享一下这次 OpenLiteSpeed 从开始到放弃的经历。 一、Ngin…

LLM量化

Efficient Finetuning prefix tuning 针对每种任务&#xff0c;学习prefix vector 启发于prompting&#xff0c;调整上下文内容让模型去输出自己想要的内容 核心就是找到一个上下文去引导模型解决NLP生成任务 传统情况下&#xff0c;我们为了得到想要的结果&#xff0c;会…