我在我的字符串中使用htmlspecialchars函数.但是,我不想清理它们;
<b>, <br>, <p> <ul>,<li> bla bla...
Run Code Online (Sandbox Code Playgroud)
例: Mystring = "<script>.....</script><br><b>test</b><p>aaaa</p>";
我想要; =
<script>.....</script>
Run Code Online (Sandbox Code Playgroud) 我用AJAX POST发送:
<li><ul class "zone zCentral ui-sortable"><li><ul class="region rCol3 ui-sortable"><li class="" style=""><div><span class="tc tc_video">574081</span> <span>video: 'Mundo.Hoy': ¿Dónde habré olvidado... mi memoria?</span></div></li></ul></li></ul></li>
Run Code Online (Sandbox Code Playgroud)
我这样做是为了创建XML:
header('Content-type: text/html; charset=utf-8');
if(isset($_POST) && isset($_POST['data']))
{
$data = '<ul id="zone_container" class="ui-sortable">';
$data .= $_POST['data'];
$data .= '</ul>';
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadXML($data);
echo $dom->saveXML();
exit();
}
Run Code Online (Sandbox Code Playgroud)
我得到这个:
<?xml version="1.0"?>
<ul id="zone_container" class="ui-sortable">
<li><ul class="zone zCentral ui-sortable"><li><ul class="region rCol3 ui-sortable"><li class="" style=""><div><span class="tc tc_video">574081</span> <span>video: 'Mundo.Hoy': ¿Dónde habré olvidado... mi memoria?</span></div> </li></ul></li></ul></li></ul>
Run Code Online (Sandbox Code Playgroud)
¿Dóndehabréolvidado... mi memoria?
翻译为:
¿Dónde …Run Code Online (Sandbox Code Playgroud) 我有一个staff.php页面,其中包含员工的姓名,职位和详细信息.当用户需要编辑员工信息时,他们将被发送到edit.php页面.edit.php页面显示名称和标题text field以及详细信息textarea
我的问题是,我是否甚至需要htmlspecialchars在edit.php页面中.我不打印任何内容到用户页面,只在那些字段htmlspecialchars上staff.php打印.但我正在使用之前打印给用户.
它仍然开放XSS Attack吗?
码
部分来自 staff.php
$staff.="<div id='sob'>".htmlspecialchars($title)."<br>".htmlspecialchars($sub_title)."<div><a href='edit.php?pid=".htmlspecialchars($pro_id)."'><input type='submit' id='editx' name='editx' value='Edit'></a></div><div id=''><br>".htmlspecialchars($detail)."</div><hr id='h'></div>";
Run Code Online (Sandbox Code Playgroud)
部分来自 edit.php
if(isset($_GET["pid"])){
$name4=$title; //
$sub_title4=$sub_title; //using prepared statement
$detail4=$detail; //
}
HTML part at edit.php
<input type='text' id='staff_name' name='staff_name' value="<?php echo $name4;?>" required>
</br><input type='text' id='staff_pos' name='staff_pos' value="<?php echo $sub_title4;?>" required>
</br><textarea id='staff_detail' name='staff_detail' cols='30' rows='6' required><?php echo $detail4;?></textarea></br>
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 Laravel 中的 Sendgrid 发送电子邮件。我一直在关注Sendgrid 的关于使用 Laravel 发送电子邮件的知识库文章
我已经在我的文件中设置了所有内容.env(尽管我还必须更新MAIL_HOSTin ~/config/mail.php),并且我能够发送测试电子邮件(我正在刀片内执行此操作)。
电子邮件模板本身的刀片与 SendGrid 的文档完全相同:
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
</head>
<body>
<h2>Test Email</h2>
<p>{{$message}}</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我在单独的刀片中运行的代码(我只是为了测试而这样做)是:
@php
use App\Mail\TestEmail;
$data = ['message' => 'Oh, hai!'];
Mail::to('john@doe.com')->send(new TestEmail($data));
@endphp
Run Code Online (Sandbox Code Playgroud)
通过上述我得到以下错误:
htmlspecialchars() expects parameter 1 to be string, object given
(View: ~/resources/views/emails/test.blade.php)
Run Code Online (Sandbox Code Playgroud)
当我不使用{{ message }}刀片时,一切都很好。
有人可以让我知道发生了什么事以及如何解决它吗?这是我第一次使用 Laravel,任何能为我指明正确方向的事情都可以。
我只是想用htmlspecialchars确认一些事情。我刚刚将数据库转换为 UTF-8,我想我终于可以正常工作了,但在我的代码中我使用了PHP htmlspecialchars函数:
htmlspecialchars($val, ENT_QUOTES,'ISO-8859-1',false);
Run Code Online (Sandbox Code Playgroud)
我是否需要担心将所有条目更改为:
htmlspecialchars($val, ENT_QUOTES,'UTF-8',false);
Run Code Online (Sandbox Code Playgroud)
PHP 文档建议我不需要,但这是真的吗?
就该函数而言,字符集 ISO-8859-1、ISO-8859-15、UTF-8、cp866、cp1251、cp1252 和 KOI8-R 实际上是等效的,因为受 htmlspecialchars() 影响的字符占用相同的字符集。所有这些字符集中的位置。
我正在使用PDO进行用户输入,但是现在我在显示MySQL数据库中的内容时仍然没有使用PDO(仍然是使用SQL命令的旧式方法..).
在将数据插入MySQL数据库时,是否有必要过滤/清理用户的输入?
并且,如果要采取的方法是对输出进行消毒,那么消毒输出的最佳方法是什么?我很乐意去,如果我只是使用htmlspecialchars()或者我需要使用strip_tags()和其他东西吗?
我正在使用占位符和准备好的声明.
谢谢.
我的问题类似于这个问题,但我没有使用代码点火器.我将从数据库获取的变量回显到文本输入的value属性.变量可能包含"或"或任何其他特殊字符.
我试过了:
<input type="text" name="myTextInput" value="<?= htmlspecialchars($dbValue, ENT_QUOTES); ?>" />
Run Code Online (Sandbox Code Playgroud)
但它输出的引号为"或'不是我想要的.我希望文本输入实际包含用户输入的引号.
我应该使用PHP函数或JavaScript函数来逃避字符串?如果我不逃避它我得到一个javascript错误,因为$ dbValue字符串中的引号与值属性引号交互.
我有一个小网站,我在其中显示帖子标题的搜索结果,有些标题长达 255 个字符,在 html 表格中显示这些标题时,表格的换行符即显示不正确,所以我使用substrphp 函数修剪标题,以便它可以适合表格行。
对于英文标题,它工作得很好,但对于非英文标题,它显示空白,即修剪所有内容。
我是substr这样用的
<a href="<? echo $link; ?>" class="strong"><? echo htmlspecialchars(substr($row['title'],0,70)); ?></a>
Run Code Online (Sandbox Code Playgroud)
那么我怎样才能使非英文标题也是 70 个字符呢?
我正在尝试将单引号 ( ')简单转换为 html 实体 ( '),但无法弄清楚为什么这不起作用。
$test = "Bob's House";
echo htmlentities($test,ENT_QUOTES);
echo htmlspecialchars($test,ENT_QUOTES);
Run Code Online (Sandbox Code Playgroud)
两个例子仍然返回:Bob's House
我尝试了以下标志的组合:ENT_IGNORE、ENT_SUBSTITUTE 等,但没有成功。
我怀疑这与我的字符集有关。如果是这样,我如何显示我的默认字符集并更改它以使这个看似简单的代码工作。
在表单验证和数据库查询中使用 PHP PDO using htmlspecialchars()function将特殊字符转换为 HTML 实体真的有必要吗?
例如,我有一个或多或少具有简单登录系统的网站:
$username = (string) htmlspecialchars($_POST['user']);
$password = (string) htmlspecialchars($_POST['pass']);
$query = $dbh->prepare("select id where username = ? and password = ?")
$query->execute($username, $password);
Run Code Online (Sandbox Code Playgroud)
请注意,除了所讨论的函数之外,我还使用了类型转换。那么,有必要吗?或者我可以安全地使用$username = $_POST['user'];?
htmlspecialchars ×10
php ×9
pdo ×2
attributes ×1
escaping ×1
hex ×1
laravel ×1
laravel-mail ×1
mysql ×1
quotes ×1
sanitization ×1
substr ×1
utf-8 ×1
xml ×1
xss ×1