【发布时间】:2017-05-25 20:39:01
【问题描述】:
facebook OG 从回显的 URL 获取图像,这可能吗?
因为我包含了一个会回显图像 URL 的 php 文件,但是当我签入共享调试器时,内容为空
<meta property="og:image" content="" />
我的元标记 :
<meta property="og:image" content ="<?php include "meta_gambar.php"?>">
和 php 文件:
<?php
$module=$_GET['module'];
$id=$_GET['id'];
if($module=='detailproduk'){
//prepare query
$stmt=mysqli_prepare($con,"SELECT gambar FROM produk WHERE id_produk=?");
if($stmt===false){
die("Prepare error" . htmlspecialchars($mysqli->error));
}
//Bind parameters
$bp=mysqli_stmt_bind_param($stmt,"i",$id);
if($bp===false){
die("Binding error" . htmlspecialchars($stmt->error));
}
//Execute query
$bp=mysqli_stmt_execute($stmt);
if($bp===false){
die("Execute error" . htmlspecialchars($stmt->error));
}
//bind result
$bp=mysqli_stmt_bind_result($stmt,$gambar);
if($bp===false){
die("Result bind error" . htmlspecialchars($stmt->error));
}
//Fetch
$bp=mysqli_stmt_fetch($stmt);
if($bp===false){
die("Fetching error" .htmlspecialchars($stmt->error));
}
$image = "http://images.rajafotocopy.com/foto_produk/$gambar";
}else{
$image = "http://images.rajafotocopy.com/raja.png";
}
echo"$image";
?>
更新
我刚刚尝试将直接 URL 图像放到 og:image content 并且它可以工作
但包含一个将回显 URL 的 php 文件仍会导致空白
【问题讨论】:
-
所以我的代码应该可以工作....但是为什么会发生这种情况?
-
我有,结果是这样的
<meta property="og:image" content="" /> -
不过,您的代码存在问题。您对SQL Injections 持开放态度,应该真正使用Prepared Statements 而不是连接您的查询。特别是因为你甚至没有逃避你的输入。
-
另一件事,您的 SQL 代码不处理错误,而是抑制它们(在调试时这是一件坏事,就像现在一样)。而是正确处理它们(阅读手册)。如果您的查询没有返回任何结果,那么您的代码将会中断,因为您无论如何都在尝试使用结果。如果您的
if-statement 未计算,您仍在尝试回显未定义的变量。 -
我认为准备好的语句应该用于用户输入而不是选择查询来获取图像?