Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP在MySQL数据库中存储和检索嵌入的YouTube?_Php_Html_Mysql_Laravel_Youtube - Fatal编程技术网

如何使用PHP在MySQL数据库中存储和检索嵌入的YouTube?

如何使用PHP在MySQL数据库中存储和检索嵌入的YouTube?,php,html,mysql,laravel,youtube,Php,Html,Mysql,Laravel,Youtube,我试图在我的网站上存储和检索嵌入式YouTube视频的HTML,但遇到了麻烦。这是我的密码: 控制器 $html = request('media'); $html = htmlentities($html); $post = Post::create(array_merge(['media' => $html],request(['title', 'content']))); 检索 {{ html_entity_decode($post->media) }} 重要的是,我使

我试图在我的网站上存储和检索嵌入式YouTube视频的HTML,但遇到了麻烦。这是我的密码:

控制器

$html = request('media');

$html = htmlentities($html);

$post = Post::create(array_merge(['media' => $html],request(['title', 'content'])));
检索

{{ html_entity_decode($post->media) }}
重要的是,我使用的是Laravel,在我的MySQL数据库中,我将此HTML存储为类型
text
。那么,我该如何做到这一点呢?检索代码仅显示HTML代码,但不呈现。当我查看源代码时,这是因为检索到的HTML如下所示

<iframe width="560" height="315" src="https://www.youtube.com/embed/CgsymJy0RJk" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

如何将此HTML保存到数据库中,以便检索并呈现我想要的嵌入视频?

On controller remove
$HTML=htmlentities($HTML)

查看:
{!!$post->media!!}

不要使用函数
htmlentities
来更改保存在数据库中的代码:

如所述:

htmlentities-将所有适用字符转换为HTML实体

此外,在数据库中保存原始HTML时,请注意SQL注入


或者在从DB读取媒体后,在控制器中使用
html\u entity\u decode

@hoolakoola
htmlentities
正在用生成html标记的代码替换html标记。所以你的
变成了
谢谢!所以我使用
会让自己处于任何风险中吗在括号内?如果我是唯一一个有权添加到数据库的人?只要有人无法将恶意代码添加到您的数据库中,就可以了。通常的做法是假设您从数据库中添加和取出的所有数据都是不安全的。也许一个聪明的家伙想出了一种方法,让你的应用程序获取youtube嵌入代码,然后再附加一些讨厌的javascript-你的数据库不会受到影响,但一旦有人观看了视频,他们就可能面临风险。“太棒了,谢谢你,你能解释一下为什么会这样吗?”-你真的应该已经和Laravel合作了吗,如果你对这样的话题缺乏绝对的基础知识…?