php - htmlentities() 不能以 php 形式工作
问题描述
htmlentities 没有工作,它应该转义引号但不是。
<?php
session_start();
session_regenerate_id( true );
if(isset($_REQUEST['sub'])){
echo $name = htmlspecialchars($_REQUEST['email'] );
echo $pswd = $_REQUEST['pswd'];
echo $abc = htmlentities($pswd ,ENT_QUOTES, "UTF-8");
//echo $pswd = htmlentities("hello" ,ENT_QUOTES);
}
?>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h2>Login form</h2>
<form action="" method="POST">
<div class="form-group">
<label for="email">Email:</label>
<input type="email" class="form-control" id="email" placeholder="Enter email" name="email" required>
</div>
<div class="form-group">
<label for="pwd">Password:</label>
<input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pswd" required>
</div>
<button type="submit" class="btn btn-primary" name="sub">Submit</button>
</form>
</div>
</body>
</html>
你可以看到 1 行是注释,如果我在 htmlentites() 中传递一个带引号的值,它会输出不带引号的值,但是如果我从表单中传递一个值,假设我传递了“hello”。“ “ 被包含在内。并将这个值存储在 php 变量中,然后在 htmlentites() 中传递这个变量。它以“”显示输出,但它应该忽略引号。
解决方案
您使用这两个 htmlentities 函数的方式有所不同。如果你想模仿第一个是如何工作的,被注释掉的应该是这样的:
htmlentities('"hello"' ,ENT_QUOTES);
在注释掉的函数调用的示例中,引号作为函数的一部分,您正在传递这样的参数,因此它们甚至永远不会被函数解析。
htmlentities 的目的不是去除字符,而是将它们转义,这样您就永远不会看到丢失的标志。html 实体的使用例如是在 html 中打印一个字符串,例如<p>
. 如果不通过 htmlentities 传递,它将呈现一个 html p标签,如果通过 htmlentities 传递htmlentities('<p>')
,它将精确打印该字符串。
推荐阅读
- python - Matplotlib 条形图给出了过多的条形宽度
- ios - 搜索栏仅返回数据数组中的第一个元素
- docker - AWS ECS awsvpc 在本地主机上没有通信
- python - 在使用交换函数之前交换数组
- next.js - Nextjs 10 .process.env.local 变量未定义
- flutter - 如何用新项目复制我自己创建的颤振项目
- java - 正则表达式检查带小数的字母数字,但仅拒绝字母数字、字母或数字
- google-apps-script - 根据 Google 表格中的下拉选择显示特定标签
- node.js - 如何使用电子在桌面上打开外部应用程序
- extjs - ExtJS 组件查询