热点

php网站开发实例教程

时间:2010-12-5 17:23:32  作者:休闲   来源:知识  查看:  评论:0
内容摘要:用PHP写一个能跑的网站,比看完三本理论书都管用。我见过太多人卡在“语法都会,动手就废”的阶段。问题出在哪儿?缺一个从零到部署的完整实例。下面这个简易留言板,代码量不到200行,但涵盖表单提交、数据库

用PHP写一个能跑的站开网站,比看完三本理论书都管用。发实我见过太多人卡在“语法都会,例教动手就废”的站开阶段。问题出在哪儿?发实缺一个从零到部署的完整实例。下面这个简易留言板,例教代码量不到200行,站开但涵盖表单提交、发实数据库读写、例教会话管理和基础安全过滤。站开你跟着敲一遍,发实PHP网站开发的例教门就算入了。

先搭环境。站开别纠结选什么集成包,发实XAMPP或者phpStudy都行,例教装完启动Apache和MySQL。在htdocs目录下新建文件夹message-board,里面放三个文件:index.php、add.php、config.php。数据库用phpMyAdmin建一个,名字叫test_db,跑这条SQL:

CREATE TABLE messages ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

config.php只干一件事——连数据库。用mysqli,别用mysql_*那套老古董,PHP7之后已经删了。代码长这样:

<?php $host = 'localhost'; $user = 'root'; $pass = ''; $db = 'test_db'; $conn = new mysqli($host, $user, $pass, $db); if ($conn->connect_error) {  die('连接失败: ' . $conn->connect_error); } $conn->set_charset('utf8mb4'); ?>

index.php负责展示留言和表单。注意两个细节:输出用户内容时必须用htmlspecialchars转义,不然有人提交<script>alert(1)</script>你就中招了;查询用ORDER BY id DESC让最新留言排前面。核心代码片段:

<?php require 'config.php'; $result = $conn->query("SELECT * FROM messages ORDER BY id DESC"); while ($row = $result->fetch_assoc()) {  echo '<div class="msg">'; echo '<strong>' . htmlspecialchars($row['name']) . '</strong> '; echo '<small>' . $row['created_at'] . '</small>'; echo '<p>' . nl2br(htmlspecialchars($row['content'])) . '</p>'; echo '</div>'; } ?> <form action="add.php" method="post"> 昵称: <input type="text" name="name" required><br> 内容: <textarea name="content" required></textarea><br> <button type="submit">提交</button> </form>

add.php处理提交。这里有个坑:直接拿$_POST往SQL里拼,等于把数据库大门敞开。必须用预处理语句。另外,空内容要拦截,昵称长度也得限制。我习惯加一层trim和mb_strlen判断:

<?php require 'config.php'; $name = trim($_POST['name'] ?? ''); $content = trim($_POST['content'] ?? ''); if (mb_strlen($name) < 1 || mb_strlen($name) > 20) {  die('昵称长度1-20个字符'); } if (mb_strlen($content) < 1) {  die('内容不能为空'); } $stmt = $conn->prepare("INSERT INTO messages (name, content) VALUES (?, ?)"); $stmt->bind_param('ss', $name, $content); $stmt->execute(); header('Location: index.php'); ?>

跑起来试试。浏览器访问http://localhost/message-board/,提交几条留言,刷新页面看顺序对不对。故意在内容里写<h1>测试</h1>,如果直接显示成大字标题而不是源码,说明转义没生效——回去检查htmlspecialchars。

这个实例很简陋,但骨架完整。真实项目里你会遇到分页、用户登录、CSRF防护、文件上传。我的建议是别急着上框架,先把原生PHP的请求生命周期摸透。比如header()之前不能有输出,否则报“headers already sent”;比如$_SESSION用之前必须session_start()。这些坑踩一遍,比看十篇教程记得牢。

最后说个观察:很多教程把重点放在语法上,但PHP网站开发的核心其实是“请求-处理-响应”这条线。你写的每个文件都在回答三个问题——数据从哪来?怎么处理?输出什么?把这个逻辑理顺,换什么框架都只是语法差异。

最近更新
热门排行
copyright © 2026 powered by 烟消火灭网   sitemap