让我们来了解一下 PHP 和 HTML 是如何一起愉快的玩耍的。
小实践
在工作目录下新建一个 index.php
文件,内容如下:
// ~/project/index.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
</body>
</html>
这是一个简单的 HTML 编码模版。
接下来我们添加一些新的页面元素和样式,让 HTML 内容更丰富一点。
// ~/project/index.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
header {
background: #e3e3e3;
padding: 2em;
text-align: center;
}
</style>
</head>
<body>
<header>
<h1>Hello, World!</h1>
</header>
</body>
</html>
接下来引入 PHP 代码。将 header
标签下的内容替换如下:
<header>
<h1>
<?php echo "Hello, " . $_GET['name']; ?>
</h1>
</header>
打开终端运行:php -S localhost:8000
。
打开浏览器地址栏访问:http://localhost:8000?name=Jacob
即可见到当前网页的运行效果。
你可以能已经发现,上面代码中的 $_GET['name']
就是从地址栏中的参数 name
中获取内容,然后通过输出代码将其显示在了网页上。这里 name
是参数名称,你可以换成其它的参数名。
需要提到的是,将用户输入的内容(这里是通过 $_GET
参数获取的内容)直接输出到页面上不是好习惯,可能会产生安全风险(可以了解 XSS 相关信息)。
比如当地址栏输入:
http://localhost:8000/?name=%3Ca%20href=%22http://google.com%22%3EGoogle%3C/a%3E
内容会显示成为 HTML 链接而不是相应的文字。
通常的做法是进行转义,就像这样:
<?php echo "Hello, " . htmlspecialchars($_GET['name']); ?>
这样,页面就会输出获取的原始内容,而不会被浏览器当作代码执行。
额外补充一下
通常 PHP 与 HTML 混合时,嵌入的 PHP 代码都以 <?php
开始 ,以 ?>
结束,如下:
<?php echo "Hello, " . $_GET['name']; ?>
如果你的文件单纯的编写 PHP 的代码,可以不用结束标签,代码末尾可以省略 ?>
,有和有没有都可以。如下:
// ~/path/your-php-file.php
<?php
// 编写你的 PHP 代码 ......
?>
网友评论