您现在的位置是:热点 >>正文
php网站开发实例教程
热点42234人已围观
简介用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网站开发的核心其实是“请求-处理-响应”这条线。你写的每个文件都在回答三个问题——数据从哪来?怎么处理?输出什么?把这个逻辑理顺,换什么框架都只是语法差异。
Tags:
上一篇:catvod加密解密教程
下一篇:网赌被黑不给出款怎么办挽回方法
相关文章
推荐一个看那种电影的网站
热点直接说结论:如果你要的是那种“电影”,而且不想被病毒、弹窗广告和钓鱼链接折磨,那我只推荐一个网站——**Archive.org**互联网档案馆)。别急着皱眉,听我把话说完。 这网站不是那种藏在地球某个 ...
【热点】
阅读更多web测试是什么
热点打开任意一个网站,点几下按钮,提交一次表单,背后可能就藏着一个bug。我见过最离谱的一次,是测试一个电商网站时,用户把优惠券代码输错一个字母,系统居然把整单价格变成了负数——仓库那边差点真发货,还倒贴 ...
【热点】
阅读更多泉州诈骗之乡
热点泉州地面上,安溪、南安、永春这些县市,早年确实背过“诈骗之乡”的坏名声。我有个跑长途货运的老表,七八年前跑一趟安溪龙门,半夜在服务区加油,加油站师傅一看他的外地车牌,直接摆手:“现金,不刷卡。”他当时 ...
【热点】
阅读更多