Hier meine Anpassungen (ohne Gewähr :P). Sollte vielleicht nochmal jemand überprüfen zur Sicherheit.
Das generelle Problem (nicht nur Youtube) ist aber nicht endgültig gelöst, da noch folgende Punkte übrig bleiben:
- Flash-Button (ist aber standardmäßig deaktiviert?)
- Img-Button (Nutzer können HTTP-URLs angeben und img deaktivieren ist wohl keine Lösung)
- ishttps() in allg.php eingefügt (weil ich die Funktion in verschiedenen Dateien aufrufe)
Index: allg.php
===================================================================
--- allg.php (revision 54)
+++ allg.php (revision 55)
@@ -316,6 +316,14 @@
return $homepage;
}
+# Determine if HTTPS is used.
+# bool True if HTTPS, false if not used.
+function ishttps() {
+ return
+ (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')
+ || $_SERVER['SERVER_PORT'] == 443;
+}
+
function get_wargameimg ($img) {
if (file_exists('include/images/wargames/'.$img.'.gif')) {
return ('<img src="include/images/wargames/'.$img.'.gif" alt="'.$img.'" border="0">');
- _shorturl() angepasst (ungetestet!)
- video.google.com entfernt (gibt es nicht mehr)
- Embed-Code für youtube aktualisiert developers.google.com/youtube/iframe_api_reference
- Kommentare betreffend fehlender Unterstützung von https für myvideo.com und gametrailers.com hinzugefügt
- MyVideo und Gametrailer nur auswerten, wenn HTTP
Index: bbcode.php
===================================================================
--- bbcode.php (revision 54)
+++ bbcode.php (revision 58)
@@ -275,8 +275,12 @@
if ($caption == null) { $caption = $string; }
$string = trim($string);
$caption = trim($this->_smileys($caption));
- $server = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
- if (preg_match('%^((http|ftp|https)://)|^/%i',$string) == 0) { $string = 'http://'.$string; }
+ $prot = 'http://';
+ if (ishttps()) {
+ $prot = 'https://';
+ }
+ $server = $prot.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
+ if (preg_match('%^((http|ftp|https)://)|^/%i',$string) == 0) { $string = $prot.$string; }
if (substr($string,0,1) == '/' OR strpos($string,$server) !== false) {
$target = '_self';
} else {
@@ -497,26 +501,32 @@
return $string;
}
- //> Video intergration.
+ //> Video integration
function _video($typ,$id) {
$typ = strtolower($typ);
- if($typ == "google") {
- $str = "<embed style=\"width:".$this->info['GoogleBreite']."px; height:".$this->info['GoogleHoehe']."px;\" id=\"VideoPlayback\" align=\"middle\" type=\"application/x-shockwave-flash\" src=\"http://video.google.com/googleplayer.swf?docId=".$id."\" allowScriptAccess=\"sameDomain\" quality=\"best\" bgcolor=\"".$this->info['GoogleHintergrundfarbe']."\" scale=\"noScale\" salign=\"TL\" FlashVars=\"playerMode=embedded\"/>";
- }
+ // $prot wird gebraucht um z.B. für youtube origin setzen zu können.
+ // Die Verwendung von origin ist zwar optional, schützt das Element jedoch vor schädlichem JavaScript-Code von Drittanbietern,
+ // der auf deiner Seite implementiert werden und die Steuerung deines YouTube-Players übernehmen könnte.
+ $prot = 'http://';
+ if (ishttps()) {
+ $prot = 'https://';
+ } else {
+ // Unterstützt kein https
+ if($typ == "myvideo") {
+ $str = "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"".$this->info['MyvideoBreite']."\" height=\"".$this->info['MyvideoHoehe']."\"><param name=\"movie\" value=\"http://www.myvideo.de/movie/".$id."\"></param><embed src=\"http://www.myvideo.de/movie/".$id."\" width=\"".$this->info['MyvideoBreite']."\" height=\"".$this->info['MyvideoHoehe']."\" type=\"application/x-shockwave-flash\"></embed></object>";
+ }
- if($typ == "youtube") {
- $str = "<object width=\"".$this->info['YoutubeBreite']."\" height=\"".$this->info['YoutubeHoehe']."\"><param name=\"movie\" value=\"http://www.youtube.com/v/".$id."\"></param><embed src=\"http://www.youtube.com/v/".$id."\" type=\"application/x-shockwave-flash\" width=\"".$this->info['YoutubeBreite']."\" height=\"".$this->info['YoutubeHoehe']."\" bgcolor=\"".$this->info['YoutubeHintergrundfarbe']."\"></embed></object>";
- }
+ // Unterstützt kein https
+ if($typ == "gametrailers") {
+ $str = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" id="gtembed" width="'.$this->info['YoutubeBreite'].'" height="'.$this->info['YoutubeHoehe'].'"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="true" /> <param name="movie" value="http://www.gametrailers.com/remote_wrap.php?mid='.$id.'"/> <param name="quality" value="high" /> <embed src="http://www.gametrailers.com/remote_wrap.php?mid='.$id.'" swLiveConnect="true" name="gtembed" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'.$this->info['YoutubeBreite'].'" height="'.$this->info['YoutubeHoehe'].'"></embed> </object>';
+ }
+ }
+
+ if($typ == "youtube") {
+ $str = "<iframe id=\"player\" type=\"text/html\" width=\"".$this->info['YoutubeBreite']."\" height=\"".$this->info['YoutubeHoehe']."\" style=\"background-color: ".$this->info['YoutubeHintergrundfarbe'].";\" src=\"https://www.youtube.com/embed/".$id."?enablejsapi=1&origin=".$prot.$_SERVER['HTTP_HOST']."\" frameborder=\"0\"></iframe>";
+ }
- if($typ == "myvideo") {
- $str = "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"".$this->info['MyvideoBreite']."\" height=\"".$this->info['MyvideoHoehe']."\"><param name=\"movie\" value=\"http://www.myvideo.de/movie/".$id."\"></param><embed src=\"http://www.myvideo.de/movie/".$id."\" width=\"".$this->info['MyvideoBreite']."\" height=\"".$this->info['MyvideoHoehe']."\" type=\"application/x-shockwave-flash\"></embed></object>";
- }
-
- if($typ == "gametrailers") {
- $str = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" id="gtembed" width="'.$this->info['YoutubeBreite'].'" height="'.$this->info['YoutubeHoehe'].'"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="true" /> <param name="movie" value="http://www.gametrailers.com/remote_wrap.php?mid='.$id.'"/> <param name="quality" value="high" /> <embed src="http://www.gametrailers.com/remote_wrap.php?mid='.$id.'" swLiveConnect="true" name="gtembed" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'.$this->info['YoutubeBreite'].'" height="'.$this->info['YoutubeHoehe'].'"></embed> </object>';
- }
-
return $str;
}
- Google aus der Meldung entfernt
- Je nachdem ob HTTP oder HTTPS entsprechende Meldung ausgeben (HTTP: alle Anbieter, HTTPS: Youtube)
Index: bbcode.php
===================================================================
--- bbcode.php (revision 54)
+++ bbcode.php (revision 56)
@@ -160,7 +160,11 @@
//> Video Button!
if($boolButton['fnFormatVideo'] == 1) {
- $BBCodeButtons .= "<a href=\"javascript:bbcode_insert_with_value_2('video','Gib hier die Video ID vom Anbieter an.','Bitte Anbieter auswählen.\\nAkzeptiert werden: Google, YouTube, MyVideo und GameTrailers')\"><img src=\"include/images/icons/bbcode/bbcode_video.png\" alt=\"Video einfügen\" title=\"Video einfügen\" width=\"23\" height=\"22\" border=\"0\"></a> ";
+ $message = "Bitte Anbieter auswählen.\\nAkzeptiert werden: YouTube, MyVideo und GameTrailers";
+ if (ishttps()) {
+ $message = "Bitte Anbieter auswählen.\\nAkzeptiert wird: YouTube";
+ }
+ $BBCodeButtons .= "<a href=\"javascript:bbcode_insert_with_value_2('video','Gib hier die Video ID vom Anbieter an.','".$message."')\"><img src=\"include/images/icons/bbcode/bbcode_video.png\" alt=\"Video einfügen\" title=\"Video einfügen\" width=\"23\" height=\"22\" border=\"0\"></a> ";
}
//> Flash Button!
Fazit:
- Das Einbetten von Youtube-Videos sollte jetzt auch mit HTTPS funktionieren. Hier wird jetzt sogar der HTML5-Player je nach Youtube-Einstellung usw. benutzt. MyVideo und Gametrailers werden nur noch angeboten, wenn kein HTTPS.
- Die Funktion _flash() in include/includes/class/bbcode.php ist unverändert.
Zuletzt modifiziert von blackcoder am 15.01.2015 - 11:46:56