php的功能与工作原理是什么?

(1)PHP的工作原理

PHP、Apache和MySQL的组合已经成为Web服务器的标配,php可以做很多事情,PHP是服务端的脚本程序,需要安装php应用程序去解释执行,简单来说php是web服务器(iis、apache)功能扩展,这种结构更加适合网站原理,php需要和web服务器、数据库一块才能发挥功能。
(2)PHP的功能
①.收集表单数据
表单是最常用的数据收集界面。在提交时可以用GET或POST的方法将数据发送给PHP程序脚本。另外PHP也可以以变量的形式访问每一个表单域,这些功能使php再收集客户输入的数据是非常简单的。
②.生成动态网页
PHP和JavaScript不同是php运行在服务器端,可以根据客户端不同请求动态输出内容,而客户端接受数据却不知道背后代码如何运行的,而javascript客户端运行的语言无法做到这点。
③.字符串处理
在处理文本时,经常要处理各种字符串,字符串处理是程序员使用最多技术之一,而PHP是把字符串作为基本的数据类型来处理。另外PHP中提供了丰富的字符串函数,来供我们使用。
④.动态输出图像
PHP通过使用GD扩展库来动态输出图像,登录大多数的验证码就是使用这个功能,我们也可以使用缩略图和添加水印等图像处理功能。
⑤.处理服务器端文件
要想让数据可以长期保留,必须要使用数据库或是文件系统,PHP可以利用文件系统函数任意操作服务器中的目录或文件(编辑、删除、创建等功能)。
⑥.会话控制
沈阳网站建设使用HTTP协议访问网站时它是一个无状态,没有内建机制来维护两个事务之间的状态。换句话来说http无法区分两个请求是否都是来自一个用户请求,而PHP就可以使用会话控制在网站中跟踪一个用户,控制该用户的行为。
以上的6项是php中常用的功能,剩下的就不一一列举。
3、php变量替换并显示html数据
以下是一些示例代码
实例
<!--使用变量保存页面中的数据-->

<?php
// php中的单行注释
/*
* php中的多行注释
*/

/**
* php中的变量定义规则
* 1. 变量有类型与值二个属性
* 2. php变量是弱类型,给什么类型的值,他就是什么类型
* 3. 变量必须以$符开头,就是美元符, 学好php,多多的赚美元
* 4. 变量名必须是合法的标识符: 字母/数字/下划线,且不能以数字开头
*/

// 定义文档标题
$title = '员工信息查询';

// 定义表格标题, 这是字符串类型
$tableTitle = '员工信息表';

// 定义员工人数,这是数值类型
$total = 5;

// 将页面中原来内容用变量进行替换,会发现显示依然正常

// 变量,之所以叫变量,关键就是在于它的值是可以随时'变化'的

// 更新表格的标题
$tableTitle = 'PHP中文网讲师一览表';

// 其中, 'PHP中文网'是我们网站的名称,这个是不会轻易变化的,也不允许在代码中被更新
// 对于这样的数据, 声明为常量是最合适的
define('SITE_NAME', 'PHP中文网');

// 现在表格标题,可以这样写
$tableTitle = SITE_NAME.'讲师一览表';

// 为了看到与之前的区别,可以能站点名称上添加一个链接
$tableTitle = '<a href="http://php.cn">' . SITE_NAME . '</a>' .'讲师一览表';

// 常量不允许更新, 错误
//SITE_NAME = 'php.cn';

// 销毁一个变量, 此时页面中会发生错误:变量未定义
unset($tableTitle);

// 常量是不允许被删除的
//unset(SITE_NAME);

// 表中每一行数据,都具有规律性,非常适合用数组格式进行描述
// php中的数组定义,与javascript很相似

$user = [1,'猪阿哥',30, '男', '[email protected]','123456'];
// 这样的数组,叫索引数组,是用它的位置索引进行访问,索引从0开始编号
//echo $user[1]; // 访问第二个数组, 现在我们用这种语法,到html中进行替换
//echo count($user);

// 索引数组很简洁,但也有一个致命的缺点, 就是元素的值,与它所在的位置是绑定的,必须一一对应
// 很多时候,我们希望用一个关键字来引用数组的值,而不是它在数组中的索引位置
// 例如: $user[1] 和 $user['name'] , 哪个更直观,更方便呢?显示是后者
// 使用有意义的字符串做为键名来引用数组元素的值,叫: '关联数组',类似js中的对象字面量
// 将$user数组改写成'关联数组'

$user1 = [
'id' => 1,
'name' => '猪哥哥',
'age' => 30,
'gender' => '男',
'email' => '[email protected]',
'password' => '888888',
];

//echo $user1['name'];
//echo key($user1);
//echo current($user1);

?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><?php echo $title; ?></title>
<style>
table,th,td {
border: 1px solid #666;
padding: 8px;
}
table {
border-collapse: collapse;
width: 80%;
text-align: center;
margin: 30px auto;
}
thead tr:first-of-type {
background-color: lightblue;
}
tbody tr:hover {
background-color: #efefef;
}
table > caption {
font-size: 1.2rem;
margin-bottom: 15px;
}
table + p {
text-align: center;
}
</style>
</head>
<body>
<table>
<caption>
<?php
// 为了防止发生变量未定义的错误,可以在使用变量前进行检测
// 注意 if 语句的用法
if (!isset($tableTitle)) {
$tableTitle = '员工信息表';
}

// 字符串之间使用点'.'进行拼接,注意与javascript不一样, js使用的是'+'号
echo '<span style="color:red">' . $tableTitle . '</span>';
?>
</caption>
<thead>
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>邮箱</th>
<th>密码</th>
</tr>
</thead>
<tbody>
<!-- 第一行数据用php进行输出-->
<?php
// 使用最原始的方式输出数据
echo '<tr>';
echo '<td>'.$user[0].'</td>';
echo '<td>'.$user[1].'</td>';
echo '<td>'.$user[2].'</td>';
echo '<td>'.$user[3].'</td>';
echo '<td>'.$user[4].'</td>';
echo '<td>'.$user[5].'</td>';
echo '</tr>';

// 上面的代码每多是重复的, 对于重复操作应该使用循环进行简化处理
// 我们用for 循环来简化代码
echo '<tr bgcolor="#deb887">';
// for(循环初始条件;是否继续循环的条件;循环条件更新语句)
for ($i = 0; $i < count($user); $i++) {
echo '<td>'.$user[$i].'</td>';
}
echo '</tr>';

// 除了用for循环, 还可以while循环实现同样的输出
echo '<tr bgcolor="aqua">';
// 将循环初始条件写在循环语句的外部
$i = 0;
while ($i < count($user)) {
echo '<td>'.$user[$i].'</td>';
// 循环体中,必须要有循环条件的更新语句,防止出现死循环
$i++;
}
echo '</tr>';

// for 循环输出关联数组
// 使用数组函数: current(), key()都可以实现
echo '<tr bgcolor="#7fffd4">';
for ($i = 0; $i < count($user1); $i++) {
// current($arr): 获取当前元素的值
echo '<td>' .current($user1) . '</td>';
// 指针后移一位
next($user1);
}
echo '</tr>';

// 数组内部指针复位
reset($user1);
echo '<tr bgcolor="#6495ed">';
for ($i = 0; $i < count($user1); $i++) {
// 使用key($arr): 获取当前元素的键名
$key = key($user1);
echo '<td>' .$user1[$key] . '</td>';
next($user1);
}
echo '</tr>';

// 可以看出使用for处理关联数组还是非常麻烦的,而数据库查询出的数据却都是关联数组
// 所以php提供一个专门用于关联数组遍历的语法结构: foreach()
echo '<tr bgcolor="#00bfff">';
foreach ($user1 as $key => $value) {
echo '<td>' .$user1[$key] . '</td>';
}
echo '</tr>';

// 在本例中, 我们只关心数组的值,所以还可以进一步简化
echo '<tr bgcolor="#ff0">';
foreach ($user1 as $value) {
echo '<td>' .$value . '</td>';
}
echo '</tr>';
// 关联数组的遍历输出非常重要, 后面的数据库操作中还会大量的用到,课后必须多多练习
?>
<tr>
<td>2</td>
<td>朱老师</td>
<td>40</td>
<td>男</td>
<td>[email protected]</td>
<td>123456</td>
</tr>
<tr>
<td>3</td>
<td>西门大官人</td>
<td>50</td>
<td>男</td>
<td>[email protected]</td>
<td>123456</td>
</tr>
<tr>
<td>4</td>
<td>灭绝师太</td>
<td>60</td>
<td>女</td>
<td>[email protected]</td>
<td>123456</td>
</tr>
<tr>
<td>5</td>
<td>韦小宝</td>
<td>20</td>
<td>男</td>
<td>[email protected]</td>
<td>123456</td>
</tr>
</tbody>
</table>
<p>总计:
<?php echo $total; ?>
人</p>
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/sl413/p/10464371.html
今日推荐