您现在的位置是:焦点 >>正文
php动态网页教程
焦点6373人已围观
简介用PHP写动态网页,本质就是让服务器在把HTML发给浏览器之前,先执行一段代码,把变化的内容塞进去。你访问一个.php文件,服务器不会直接把文件内容吐出来,而是先交给PHP解析器跑一遍,跑完的结果才是 ...
用PHP写动态网页,态网本质就是页教让服务器在把HTML发给浏览器之前,先执行一段代码,态网把变化的页教内容塞进去。你访问一个.php文件,态网服务器不会直接把文件内容吐出来,页教而是态网先交给PHP解析器跑一遍,跑完的页教结果才是浏览器看到的HTML。这个机制决定了PHP能做的态网事:根据数据库里的数据生成页面、处理表单提交、页教管理用户登录状态。态网
先看一段最基础的页教代码。
<?态网php $name = "张三"; $time = date("Y-m-d H:i:s"); ?> <html> <body> <p>你好,<?页教php echo $name; ?></p> <p>当前时间:<?php echo $time; ?></p> </body> </html> 这段代码里,<?态网php ?> 标签之外的部分原样输出,标签之内的代码在服务器上执行。echo 把变量的值打印到HTML里。浏览器收到的只有纯HTML,看不到任何PHP代码。你右键查看源代码,只能看到“你好,张三”和具体时间。
变量是PHP里最常用的东西。不需要声明类型,直接 $name = "张三" 就行。字符串用单引号或双引号包起来,双引号里可以嵌变量,单引号不行。这个细节新手经常踩坑:echo "你好,$name" 会输出“你好,张三”,而 echo '你好,$name' 会原样输出“你好,$name”。我刚开始写PHP的时候就因为这个调试了半小时,盯着屏幕怀疑人生。
动态网页的核心在于数据处理。假设你要做一个简单的留言板,用户提交表单后,PHP接收数据、存进数据库、再从数据库读出来显示。接收表单数据用 $_POST 或 $_GET 超全局数组。
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $message = htmlspecialchars($_POST["message"]); // 存入数据库或文件 file_put_contents("messages.txt", $message . "\n", FILE_APPEND); } ?> <form method="post"> <textarea name="message"></textarea> <input type="submit" value="提交"> </form> htmlspecialchars() 这个函数必须加上。不加的话,用户在留言里写 <script>alert('xss')</script>,这段脚本就会在其他访客的浏览器里执行。这是XSS攻击最常见的入口。很多人写练手项目时忽略这一步,上线后被人挂马都不知道怎么回事。
连接数据库用PDO比较稳妥。MySQLi也行,但PDO支持多种数据库,预处理语句写起来更清晰。
<?php $pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", "root", "password"); $stmt = $pdo->prepare("SELECT * FROM messages ORDER BY id DESC LIMIT 20"); $stmt->execute(); $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); ?> <?php foreach ($messages as $msg): ?> <div class="message"><?php echo htmlspecialchars($msg["content"]); ?></div> <?php endforeach; ?> foreach 的替代语法 foreach: ... endforeach; 在HTML模板里混排时比花括号更易读。这种写法在WordPress模板里到处都是,刚开始看可能不习惯,用多了会觉得比大括号清爽。
会话管理是另一个绕不开的点。用户登录后,你得记住他是谁。session_start() 开启会话,$_SESSION 存用户ID。Cookie存在浏览器端,Session数据存在服务器端,浏览器只存一个Session ID。默认情况下PHP的Session文件存在 /tmp 目录,网站访问量大了之后这个目录会堆积大量小文件。生产环境一般把Session存到Redis或数据库里。
文件包含也是PHP动态网页的常见操作。include 和 require 的区别在于出错时的行为:include 报warning继续执行,require 报fatal error直接停。头部、尾部、数据库连接这些几乎每个页面都要用的代码,单独写成文件,用 require_once 引入,改一处就全站生效。
PHP不是唯一的选择,Python的Django、Node.js的Express都能做同样的事。但PHP的部署成本极低——找个虚拟主机,上传文件就能跑,不需要配置进程管理器、不需要反向代理。全球大概七成以上的网站服务端脚本用的是PHP,WordPress、Wikipedia、Facebook早期都是PHP写的。你可以说它语法不优雅,但它干活确实利索。
学PHP动态网页,别光看语法。找个实际需求,比如做一个带增删改查的通讯录,从表单到数据库到页面渲染完整走一遍。遇到问题查官方文档,PHP手册的中文翻译质量不错。写上两三个小项目,基本就通了。
Tags:
相关文章
利用互联网实施金融诈骗罪的案例
焦点2023年冬天,江苏南通一位退休教师老周,在手机上看了一则“数字货币理财”广告,点进去后有个自称“金融顾问”的人加了他微信。对方每天发来盈利截图,还拉他进了个七十多人的“投资交流群”。群里气氛热烈,有 ...
【焦点】
阅读更多天翼校园宽带官网
焦点打开天翼校园宽带官网www.189.cn/xiaoyuan),第一眼看到的是各省份的入口列表。江苏、湖北、四川、广东……每个省份点进去,套餐资费、办理流程、客户端下载都不一样。这事挺有意思——中国电信 ...
【焦点】
阅读更多反渗透过滤膜进口品牌
焦点陶氏FilmTec的BW30-400膜元件在工业水处理圈子里几乎是“默认选项”一样的存在。我见过不少做水处理工程的朋友,方案书里直接写“反渗透膜采用陶氏BW30-400或同等品牌”,连参数都懒得核对— ...
【焦点】
阅读更多