当前位置:首页 > 焦点

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手册的中文翻译质量不错。写上两三个小项目,基本就通了。

分享到: