在PHP中它就像htmlspecialchars在Perl中如何做到这一点一样简单?
我想知道使用以下代码是否存在重大缺点:
if(isset($_GET)){
foreach($_GET as $v){
$v = htmlspecialchars($v);
}
}
Run Code Online (Sandbox Code Playgroud)
我意识到可能没有必要在每个变量上使用htmlspecialchars.任何人都知道这是好事吗?
更新:
因为我不认为上面的代码会起作用,所以我用我正在使用的代码更新它(尽管对建议有消极性).:)
if(isset($_GET)){
foreach($_GET as $k=>$v){
$_GET[$k] = htmlspecialchars($v);
}
}
Run Code Online (Sandbox Code Playgroud) 标题基本上总结了它.我建了一个小博客,但我甚至无法在我的文章中发布链接!我能做什么?我试过htmlentities(),htmlspecialchars(),real_escape_string()基本上逃避各种形式存在.我使用PHP 5.3和MySQL 5.1
这是我将博客保存到db的代码:
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlentities($data);
if ($problem && strlen($data) == 0)
{
die($problem);
}
return $data;
}
if(isset($_POST['addBlog'])) { //form submitted?
// get form values, escape them and apply the check_input function
$title = $link->real_escape_string($_POST['title']);
$category = $link->real_escape_string(check_input($_POST['category'], "You must choose a category."));
$content = $link->real_escape_string(check_input($_POST['blogContent'], "You can't publish a blog with no blog... dumbass."));
$date = $link->real_escape_string(check_input($_POST['pub_date'], "What day is it …Run Code Online (Sandbox Code Playgroud) 我正在使用markdown和HTMLpurifier,我希望<?= $variable ?>在markdown代码中使用简写PHP()的示例(使用缩进语法),但HTMLpurifier不会将标记识别<为允许元素并且正在转义它.
知道我需要在HTMLpurifier中启用什么配置选项来阻止它逃避这个吗?
我很难做一个简单的事情str_replace.
我试图从字符串中删除所有逗号,这确实有效.但是当我再次尝试改变字符串时,逗号再次以某种方式重新出现.我重构了我的代码以确保我没有引起这个.
无论如何这里是我的代码.任何人都可以发现一个错误吗?
$delim=remDelim(fgets($fo));
# echo 'before : '.htmlspecialchars($delim);
$delime =str_replace(",",",",$delim);
echo 'after : '.htmlspecialchars($delime);
$delimed = str_replace("<","",$delime);
echo $delimed.'<br />';
example output:
Jose, jr to Jose, jr to Jose, jr
Run Code Online (Sandbox Code Playgroud)
它就像我的字符串不知何故未被转换.我会说,我很可能把名字混淆了,并用第一个字符串来制作最后一个.但唉,我可以看到情况并非如此.
$menunaam = "Lazy Dog"
$resultmenus = mysqli_query($dbc,"SELECT menunaam FROM prijslijst WHERE menunaam='$menunaam'");
$row = mysqli_fetch_array($resultmenus,MYSQLI_ASSOC);
echo "<input type=\"hidden\" class=\"mnu\" name=\"mnnm\" value=".htmlspecialchars($row["menunaam"]).">";
Run Code Online (Sandbox Code Playgroud)
这输出
<input class="mnu" type="hidden" Dog="" value="Lazy" name="mnnm">
Run Code Online (Sandbox Code Playgroud)
然后当我像这样改变它工作正常(添加额外的单引号):
echo "<input type=\"hidden\" class=\"mnu\" name=\"mnnm\" value='".htmlspecialchars($row["menunaam"])."'>";
Run Code Online (Sandbox Code Playgroud)
然后我遇到了一个新问题.当我使用含有内容的变量时:$ menunaam ="lazy's"
<input class="mnu" type="hidden" s'="" value="lazy" name="mnnm">
Run Code Online (Sandbox Code Playgroud) 我正在尝试清理要保存在数据库中的字符串.我采取的第一步是使用addslashes(),但后来我意识到它没有解决许多安全问题,所以我补充说htmlspecialchars(),现在我有这行代码:
$val=htmlspecialchars(addslashes(trim($val)));
Run Code Online (Sandbox Code Playgroud)
但后来我想知道addslashes()在一个将被处理的字符串上使用是否有任何意义htmlspecialchars(),因为后者将"删除"任何会导致问题的元素,如果我没有弄错的话.
特别是,我想知道这是否使服务器工作两次而没有任何实际需要.
我有一个来自 XML 文件的字符串,该文件似乎已被编码htmlspecialchars()两次:
$data = "string&#44;s example";
Run Code Online (Sandbox Code Playgroud)
我试过&只用一个htmlspecialchars_decode()和号替换,然后调用,然后用单词“and”替换简单的和号,但输出像stringand#44; example. 我想知道是否有一种方法可以正确转换这些字符编码,或者是否可以使用正则表达式将它们完全去除(因为我可以简单地去除它们并将其用作稍后检查的值)?
所以我正在尝试编写一个简单的网站表单。但是它有这个htmlspecialchars错误。
我尝试制作{{$ message}},但没有成功。有相同的错误。
这是我的控制器:
<?php
namespace App\Http\Controllers;
use Mail;
use Illuminate\Http\Request;
class ContactMessageController extends Controller
{
public function create()
{
return view('form');
}
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required',
'email' => 'required|email',
'address' => 'required',
]);
Mail::send('emails.contact-message', [
'message' => $request->message
], function($mail) use($request) {
$mail->from($request->email, $request->name);
$mail->to('john@example.com')->subject('Contact message');
});
return redirect()->back()->with('flash_message', 'thanks');
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的刀片
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Customer Details</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" media="screen" …Run Code Online (Sandbox Code Playgroud) 我试图'用另一个quote(’)替换单引号(),但我似乎无法得到任何工作.另外,如何在多个字符串上进行此操作($text, $title, $notice)?
输入:不要
输出:不要
我在尝试这个:
$text = str_replace(array("'",'"'), array('’'), $text);
$text = htmlentities(str_replace(array('"', "'"), '’', $text);
$text = htmlentities(str_replace(array('"', "'"), '’', $_POST['text']));
$text = str_replace("'" ,"’",$text);
$text = str_replace("'" ,"’",$text);
$text = str_replace(array("'"), "’", $text);
$text = str_replace(array("\'", "'", """), "’", htmlspecialchars($text));
$text = str_replace(array('\'', '"'), '’', $text);
$text = str_replace(chr(39), chr(146), $text);
$text = str_replace("'", "&quot;", $text);
Run Code Online (Sandbox Code Playgroud)
这些都不起作用.
htmlspecialchars ×10
php ×10
str-replace ×2
addslashes ×1
foreach ×1
htmlpurifier ×1
laravel ×1
markdown ×1
mysqli ×1
perl ×1
regex ×1
replace ×1
security ×1
sql ×1
string ×1
utf-8 ×1
web ×1