在我的index.html
页面中,我从用户那里获取了一个嵌入链接,例如:
<iframe width='560' height='315' src='http://www.youtube.com/embed/GasAmUfvXJs' frameborder='0' allowfullscreen></iframe>
此代码将传递给我的PHP脚本,该脚本将其存储在变量中并对其执行一些验证。验证成功后,我尝试在PHP脚本中回显变量。但它没有正确显示它。
这是PHP脚本:
<?php
if(isset($_POST['embed']) && isset($_POST['date'])){
$embed = $_POST['embed'];
$date = $_POST['date'];
if(!empty($embed) && !empty($date)){
echo "OK - VIDEO";
$final = $embed;
echo "$final";
}else{
$final = "Try again - not empty";
echo "$final";
}
}else{
echo "try again - not set";
}
?>
答案 0 :(得分:1)
如果你回显html它会被浏览器呈现,如果你想回显html的来源,你会使用:htmlentites()
echo htmlentites($final);
如果那不是你的事,请解释:But it does not display it correctly.
另外:您不应该输出 ANY html用户输入或者您的脚本是按照XSS设计打开的,验证不是!empty($embed)
您应该采取的只是代码中视频的youtube ID,并从中构建自己的嵌入代码。
Heres怎么回事:
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
if(!empty($_POST['embed']) && !empty($_POST['date'])){
if(preg_match('#http://www.youtube.com/embed/([a-zA-Z0-9_-]+)\"#',$_POST['embed'],$match)==true){
$embed = <<<EMBEDCODE
<iframe width="640" height="360"
src="http://www.youtube.com/embed/{$match[1]}?feature=player_embedded"
frameborder="0" allowfullscreen>
</iframe>
EMBEDCODE;
}else{
$embed = "Not a real youtube embedcode! Try Again";
}
}else{
$embed = "Enter youtube embedcode.";
}
}
?>
<h1>Youtube Yada</h1>
<form method="POST" action="">
<p>Embedcode:<textarea rows="9" name="embed" cols="44"></textarea></p>
<p>Date:<input type="text" name="date" value="<?php echo date("F j, Y, g:i a");?>" size="20"></p>
<p><input type="submit" value="Submit" name="B1"></p>
</form>
<?php echo(isset($embed)?$embed:null);?>
测试:
<iframe width="560" height="315" src="http://www.youtube.com/embed/GasAmUfvXJs" frameborder="0" allowfullscreen></iframe>