您现在的位置是:热点 >>正文

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:

相关文章

  • 推荐一个看那种电影的网站

    热点

    直接说结论:如果你要的是那种“电影”,而且不想被病毒、弹窗广告和钓鱼链接折磨,那我只推荐一个网站——**Archive.org**互联网档案馆)。别急着皱眉,听我把话说完。 这网站不是那种藏在地球某个 ...

    【热点】

    阅读更多
  • web测试是什么

    热点

    打开任意一个网站,点几下按钮,提交一次表单,背后可能就藏着一个bug。我见过最离谱的一次,是测试一个电商网站时,用户把优惠券代码输错一个字母,系统居然把整单价格变成了负数——仓库那边差点真发货,还倒贴 ...

    【热点】

    阅读更多
  • 泉州诈骗之乡

    热点

    泉州地面上,安溪、南安、永春这些县市,早年确实背过“诈骗之乡”的坏名声。我有个跑长途货运的老表,七八年前跑一趟安溪龙门,半夜在服务区加油,加油站师傅一看他的外地车牌,直接摆手:“现金,不刷卡。”他当时 ...

    【热点】

    阅读更多


友情链接