MySQL Escape String Youtube Embed Code لا يعمل
-
01-10-2019 - |
سؤال
أحاول أن أفعل شيئًا واحدًا فقط.
$embedCode = mysql_real_escape_string('<object width="270" height="227"><param name="movie" value="http://www.youtube.com/v/pz-VWi5-tGA?fs=1&hl=en_US&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/pz-VWi5-tGA?fs=1&hl=en_US&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="270" height="227"></embed></object>');
الآن إذا كتبت ...
echo 'CODE = ' . $embedCode;
انا حصلت...
CODE =
لا شيء ...
أفكار؟
تعديل:
حسنًا ، لذا فإن نيتي ليست مجرد طباعة $ inmbedcode ، إنها إدراجها في قاعدة بيانات ، لكنني أحصل على قيمة فارغة. كنت أحسب أنني سأكون مؤخرًا ذكيًا ونتائج عكسية مع نهايتي البسيطة هنا. على أي حال ، النقطة المهمة هي أنها لا تمر عبر استعلام MySQL الخاص بي.
تحرير 2: أنا أستخدم كائن WordPress '$ WPDB
function insert_video(){
global $wpdb;
$wpdb->show_errors();
$table_name = $wpdb->prefix . "video_manager";
$embedCode = mysql_real_escape_string('<object width="270" height="227"><param name="movie" value="http://www.youtube.com/v/pz-VWi5-tGA?fs=1&hl=en_US&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/pz-VWi5-tGA?fs=1&hl=en_US&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="270" height="227"></embed></object>');
$title = 'this is my title';
$description = 'this is my description';
$wpdb->insert( $table_name, array( 'title' => mysql_real_escape_string($title), 'embed_code' => $embedCode, 'description' => mysql_real_escape_string($description) ) );
}
function get_video_block($id){
insert_video();
global $wpdb;
$wpdb->show_errors();
$table_name = $wpdb->prefix . "video_manager";
$query = "SELECT * FROM " . $table_name . " WHERE `index` = '$id'";
$results = $wpdb->get_results($query, ARRAY_A);
$results = $results[0];
$returnString = $results['title'] . '<br>';
$returnString .= $results['embed_code'] . '<br>';
$returnString .= $results['description'] . '<br>';
return $returnString;
}
والحصول على النتيجة:
this is my title<br><br>this is my description<br>
المحلول
أنت تقوم بطباعة HTML على ما يرام. انقر بزر الماوس الأيمن وانظر إلى المصدر يجب أن يكون هناك.
mysql_real_escape_string لا يُقصد به الهروب من HTML على الإطلاق.
ماذا يحدث إذا نظرت إلى البيانات الفعلية في جدولك باستخدام phpmyadmin؟ إذا لم يكن هناك ، فإن المشكلة هي عند إدخال هذه البيانات.
حسنًا ، أنت تفلت من ذلك أثناء كتابته على الطاولة ، هل تستخدم شيئًا آخر ل sanytise تلك البيانات^ مثل Strip_tags؟ ستأخذ STRIP_TAGS كل هذا HTML.
هل من الممكن أن يقوم WPDB_CLASS بتنظيف هذا HTML؟
نعم بالنظر إلى codex.wordpress.org/function_reference/wpdb_class يمكنك فقط $ wpdb-> استعلام ('Query') لتشغيل أي استعلام ، لذا فقط أدخل ذلك. إذا كان يعمل ، فأنت ثابت.