SWF einbinden


pat_morita

Mitglied
Hallihallo!

Ich bin häufig in diesem Forum unterwegs, man lernt hier echt viel. Vor einem Jahr startete ich hier mit Flash lernen und jetzt hab ich meine eigene Flashsite mit Gallery, quasi mein Portfolio. In einem neuen Projekt hab ich eine bereits vorhandene Bildgallerie auseinandergenommen und umgebaut. Läuft! Ich würd nur gern SWF einbinden.

Ein Haken steht mir aber noch im weg. Ein Freund half mir bei PHP (von dem ich (noch) keine Ahnhung habe). Und der is nu für 1 Jahr nach Australien. -.-
Dumm, weil ich keinen habe, der mir jetzt helfen kann, daher hoffe ich, daß ich auch hier im PHP forum so hilfsbereite Leute finde. Ich hab schon angefangen mit PHP aber dafür reichts noch net... und ich würd das Projekt einfach nur gern abschließen.

Dieses SKript bekommt einen Dateinamen geliefert, in der Regel eine JPG datei, ein Bild also und erstellt ein neues POPUP davon. Wie sage bringe ich ihm bei, auch ein SWF zu öffnen? Das swfobject_source.js habe ich schon, mit dem man die Größe abfragen kann (aber wie einbinden)

Ihr seht... ich bin totaler neuling auf dem Gebiet ... aber ich bin dran.

lg Pat

PHP:
<?
error_reporting(E_ALL ^ E_NOTICE);
if (isset($_GET['path'])) $path=$_GET['path'];
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title><?=$path;?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" src="javascript/window.js"></script>
<script type="text/javascript">
<!--
function toggleBox(szDivID, iState) // 1 visible, 0 hidden
{
    if(document.layers)	   //NN4+
    {
       document.layers[szDivID].visibility = iState ? "show" : "hide";
    }
    else if(document.getElementById)	  //gecko(NN6) + IE 5+
    {
        var obj = document.getElementById(szDivID);
        obj.style.visibility = iState ? "visible" : "hidden";
    }
    else if(document.all)	// IE 4
    {
        document.all[szDivID].style.visibility = iState ? "visible" : "hidden";
    }
}
// -->
</script>
<style type="text/css">
<!--
body {
	background-color: #FFFFFF;
	margin: 0px;
	padding: 10px;
}
.od {
	position: absolute;
	left: 0px;
	top: 0px;
	width:100%;
	text-align:right;
	-moz-opacity: .5;
	filter: alpha(opacity=50);
	visibility:hidden;
}
.id {
	float:right;
	width: 50px;;
	background-color:#FFFFFF;
	margin: 20px;
	padding: 10px;
	font-family:Verdana, Arial, Helvetica, sans-serif;
	font-size: 11px;
	font-weight: bold;
	letter-spacing: -1px;
	border:double 3px #FFFFFF;
}
a:link {
	color: #000000;
	text-decoration: none;
}
a:visited {
	text-decoration: none;
	color: #000000;
}
a:hover {
	text-decoration: none;
	color: #000000;
}
a:active {
	text-decoration: none;
	color: #000000;
}
-->
</style>
</head>

<body onload="resizetoimage();">

<a href="javascript:window.close()" onMouseOver="toggleBox('closelayer',1);" onMouseOut="toggleBox('closelayer',0);"><img src="<?=$path;?>" alt="<?=$path;?>" border="0">
<div id="closelayer" class="od"><div class="id">close&nbsp;[x]</div></div></a>

</body>
</html>
 

kuddeldaddeldu

Erfahrenes Mitglied
Hi,

ich seh da kein Ajax. Ist schon PHP, bzw. HTML und ein bischen PHP zur Steuerung.
Du müsstest per PHP herausfinden, ob in der $_GET-Variable ein Flash-Film oder ein Bild übergeben wurde. Das könntest Du z.B. über die Endung machen:

PHP:
<?php
$suffix = substr($path, strrpos($path, '.') + 1);
if(strtolower($suffix) == 'swf') {
?>
HTML-Code zum Einbinden der Flash-Datei
<?php
} else {
?>
HTML-Code zum Einbinden des Bildes
<?php
}
?>

Wie Du Flash einbindest, findest Du z.B. hier. Dein Flash-Programm sollte Dir aber auch eine Beispiel-Datei erzeugen, aus der Du den Code übernehmen kannst.

Du solltest Dir unbedingt noch überlegen, welche Werte für $_GET['path'] erlaubt sind und die Gültigkeit überprüfen.

LG
 

pat_morita

Mitglied
vielen dank schonmal!

also wenn ich das richtig verstehe, fragst du in der IF-schleife ab, ob im pfad ein SWF vorkommt, um dann zu entscheiden, was damit gemacht wird.
Da die Pfadangabe aber von einer gallery kommt, die verschiedene SWF objekte unterschiedlicher größe lädt, wie frage ich die größe des SWF objektes ab, damit sich das Popup fenster auch dem SWF anpaßt?
Ich meine, es hat was mit der swfobject_source.js zu tun. Aber wie gesagt, ich bin Neuling :/

und wie meinst du den hier:

Du solltest Dir unbedingt noch überlegen, welche Werte für $_GET['path'] erlaubt sind und die Gültigkeit überprüfen.

lg pat
 
Zuletzt bearbeitet:

kuddeldaddeldu

Erfahrenes Mitglied
Hi,

in der IF-Abfrage wird geprüft, ob der Pfad mit "swf" endet.

wie frage ich die größe des SWF objektes ab, damit sich das Popup fenster auch dem SWF anpaßt?
Ich meine, es hat was mit der swfobject_source.js zu tun.

Mit PHP wohl gar nicht. Deine swfobject_source.js kenne ich nicht.

und wie meinst du den hier:

Zitat:
Du solltest Dir unbedingt noch überlegen, welche Werte für $_GET['path'] erlaubt sind und die Gültigkeit überprüfen.

So, wie's da steht. In dieser Gallery sind Links mit einem GET-Parameter auf Dein PHP-Script eingebaut, ungefähr so:

anzeigen.php?path=bild1.jpg

Wer (wenn nicht Du ;) ) hindert mich jetzt daran, diese URL in der Adressleiste zu manipulieren und ein wenig Cross Site Scripting, Code-Injection oder sonstwas zu betreiben. Solche Parameter ungeprüft zu übernehmen, stellt eine Sicherheitslücke dar (und zwar keine kleine).

LG
 

pat_morita

Mitglied
erstmal danke für deine ausführlichen erklärungen! das trägt viel zum verständnis bei, Das mit der Sicherheitslücke versteh ich. Ich hab hier mal noch das SWFobject script. Ich blicks net, aber vllt verstehst dus? Meines Wissens liest es ein SWF und checkt dessen Maße.
 
Zuletzt bearbeitet:

pat_morita

Mitglied
ok, hat zwar einige stunden gedauert, aber ich hab das SWF object verstanden

es muß wohl so funktionieren:

das PHP script (im ersten post) bekommt einen Pfad übergeben. Das script sollte checken, ob es sich bei dem Object um ein SWF handelt :

PHP:
<?php 
$suffix = substr($path, strrpos($path, '.') + 1); 
if(strtolower($suffix) == 'swf') { 
?> 
HTML-Code zum Einbinden der Flash-Datei 
<?php 
} else { 
?> 
HTML-Code zum Einbinden des Bildes 
<?php 
} 
?>

und danach das SWF mittels dem SWF object laden.

PHP:
<div id="flashcontent">
  This text is replaced by the Flash movie.
</div>

<script type="text/javascript">
   var so = new SWFObject (swf, id, width, height, version, background-color);
   so.addParam("quality", "high");
   so.addParam("wmode", "transparent");
   so.addParam("salign", "t");
   so.write("flashcontent");
</script>

wie übergebe ich die Paramter ans SWF object? (swf, id, width, height, version, background-color) .. sprich wie kann ich vom File die größe auslesen etc...

lg pat
 

pat_morita

Mitglied
danke.

hm, hab da ne Idee! weiß zwar net wie umsetzen, aber von der logik müßte es ja gehen.

die gallery funktioniert so: Meine FLashanwendung lädt ein Bild (jpg). Dieses liegt, zusammen mit dem SWF (gleicher größe) im selben Ordner und hat -bis auf die endung- auch den gleichen namen.

bsp. test.jpg und test.swf

Mit nem Klick auf das BILD öffnet sich ein Popup, in welchem das SWF geladen werden soll. Ich lese also die größe des JPGS mit getimagesize aus, checke, ob im gleichen PFAD noch eine Datei mit dem gleichen Namen, aber SWF endung liegt und lade dann das SWF mit den Parametern (höhe, breite) vom jpeg da rein.

Mit dem Klick auf das Bild wird also die PFADANGABE des Bildes an PHP übermittelt (soweit so gut, das funktioniert)

nur jetzt.. wie würde der PHP code dazu aussehen... :/

lg pat

ps: es is doch fast nur php wieso liegt der thread im ajax forum? oO
 

kuddeldaddeldu

Erfahrenes Mitglied
Hi,

die gallery funktioniert so: Meine FLashanwendung lädt ein Bild (jpg). Dieses liegt, zusammen mit dem SWF (gleicher größe) im selben Ordner und hat -bis auf die endung- auch den gleichen namen.

Sag' das doch gleich...

PHP:
<?php 
if(file_exists(substr($path, 0, strrpos($path, '.')) . '.swf')) { 
   $info = getimagesize($path);
   $breite = $info[0];
   $hoehe = $info[1];
?> 
Code zum Einbinden der Flash-Datei 
<?php 
} else { 
?> 
Code zum Einbinden des Bildes 
<?php 
} 
?>

ps: es is doch fast nur php wieso liegt der thread im ajax forum?

Frag' den, der ihn reingesetzt hat... :p

LG
 

pat_morita

Mitglied
Vielen Dank!

also für den SWF part würd das dann so ausschaun oder? weißt der dann auch die SWF datei zu oder noch das JPG, weil dessen pfad ja geliefert wird...

lg pat

PHP:
<?php  
if(file_exists(substr($path, 0, strrpos($path, '.')) . '.swf')) {  
   $info = getimagesize($path); 
   $breite = $info[0]; 
   $hoehe = $info[1]; 
?>  
<html> 
<head> 

<title><?=$path;?></title> 

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<script type="text/javascript" src="javascript/swfobject.js"></script>	
<script type="text/javascript" src="javascript/window.js"></script> 
<script type="text/javascript"> 	

<div id="flashcontent">
  This text is replaced by the Flash movie.
</div>

<script type="text/javascript">
   var so = new SWFObject("<?=$path;?>", "ID?", "<?=$breite;?>", "<?=$hoehe;?>", "8", "#FFFFFF");
   so.write("flashcontent");
</script>
</head> 

<body onload="resizetoimage();"> 

<a href="javascript:window.close()" onMouseOver="toggleBox('closelayer',1);" onMouseOut="toggleBox('closelayer',0);"><img src="<?=$path;?>" alt="<?=$path;?>" border="0"> 
<div id="closelayer" class="od"><div class="id">close&nbsp;[x]</div></div></a> 

</body> 
</html> 

<?php  
} else {  
?>  
Code zum Einbinden des Bildes  
<?php  
}  
?>
 
Zuletzt bearbeitet:

kuddeldaddeldu

Erfahrenes Mitglied
Hi,

der Code für das Flash-Objekt gehört natürlich in den HTML-Body. Als Pfad musst Du natürlich die swf-Datei übergeben, also
PHP:
substr($path, 0, strrpos($path, '.')) . '.swf')
Und das Bild musst Du aus dem Body dann rausnehmen.

LG
 

pat_morita

Mitglied
quasi so: :D

PHP:
<?php  
if(file_exists(substr($path, 0, strrpos($path, '.')) . '.swf')) {  
   $info = getimagesize($path); 
   $breite = $info[0]; 
   $hoehe = $info[1]; 
?>  
<html> 
<head> 

<title><?=$path;?></title> 

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<script type="text/javascript" src="javascript/swfobject.js"></script>    
<script type="text/javascript" src="javascript/window.js"></script> 
<script type="text/javascript">     

</head> 

<body onload="resizetoimage();"> 

<div id="flashcontent">
  This text is replaced by the Flash movie.
</div>

<script type="text/javascript">
   var so = new SWFObject("<?=substr($path, 0, strrpos($path, '.')) . '.swf');?>", "ID?", "<?=$breite;?>", "<?=$hoehe;?>", "8", "#FFFFFF");
   so.write("flashcontent");
</script>

</body> 
</html> 

<?php  
} else {  
?>  
Code zum Einbinden des Bildes  
<?php  
}  
?>

wenn ja, noch zwei fragen:

was ist die ID, die im SWF object übergeben wird
und wie verteile ich renommees?

lg pat
 

kuddeldaddeldu

Erfahrenes Mitglied
Hi,

probier's halt mal aus. Das onload="resizetoimage();" muss wohl noch raus. Die id wird wohl "flashcontent" lauten (das div halt, wo das JS das Flash-Objekt reinpacken soll).

und wie verteile ich renommees?

Meinst Du, wie Du Beiträge bewerten kannst? Auf das mittlere Icon links unten im Beitrag klicken...

LG
 

pat_morita

Mitglied
HA es läuft. :)

allerdings noch eine Frage:

echo $film bringt mir exakt die richtige pfadangabe.

schreibe ich im Body den Pfad in das SWF object so rein, läufts, versuche ich es wie hier über die $film variable geht's net... wo ist der fehler?

läuft:
PHP:
<?php  
error_reporting(E_ALL ^ E_NOTICE);
if (isset($_GET['path'])) $path=$_GET['path'];

if (file_exists(substr($path, 0, strrpos($path, '.')) . '.swf')){
   $info = getimagesize($path); 
   $breite = $info[0]; 
   $hoehe = $info[1];
$film= substr($path, 0, strrpos($path, '.')) . '.swf';

?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Dawn</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" src="javascript/window.js"></script>
<script type="text/javascript" src="javascript/swfobject_source.js"></script>
</head>

<body>

<div id="blabla"></div>

<script type="text/javascript">
	var so = new SWFObject("bilder/test.swf", "blabla", "424", "600", "6", "#FFFFFF");
	so.write("blabla");
	</script>
</body>
</html>

<?php
}else{
?> 
KEIN SWF
<?php
};
?>

läuft net:
PHP:
<?php  
error_reporting(E_ALL ^ E_NOTICE);
if (isset($_GET['path'])) $path=$_GET['path'];

if (file_exists(substr($path, 0, strrpos($path, '.')) . '.swf')){
   $info = getimagesize($path); 
   $breite = $info[0]; 
   $hoehe = $info[1];
$film= substr($path, 0, strrpos($path, '.')) . '.swf';

?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Dawn</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" src="javascript/window.js"></script>
<script type="text/javascript" src="javascript/swfobject_source.js"></script>
</head>

<body>

<div id="blabla"></div>

<script type="text/javascript">
	var so = new SWFObject("<?php $film ?>", "blabla", "424", "600", "6", "#FFFFFF");
	so.write("blabla");
	</script>
</body>
</html>

<?php
}else{
?> 
KEIN SWF
<?php
};
?>

lg pat
 

pat_morita

Mitglied
hm...

das hier kommt an bei der version die NICHT funktioniert, also mit $film variable ... wird nicht übergeben...:

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Dawn</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" src="javascript/window.js"></script>
<script type="text/javascript" src="javascript/swfobject_source.js"></script>
</head>

<body>

<div id="blabla"></div>
<script type="text/javascript">
	var so = new SWFObject("", "blabla", "424", "600", "6", "#FFFFFF");
	so.write("blabla");
	</script>
</body>
</html>

und das hier bei der version mit direkt reinschreiben:

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Dawn</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" src="javascript/window.js"></script>
<script type="text/javascript" src="javascript/swfobject_source.js"></script>
</head>

<body>

<div id="blabla"></div>
<script type="text/javascript">
	var so = new SWFObject("bilder/test.swf", "blabla", "424", "600", "6", "#FFFFFF");
	so.write("blabla");
	</script>
</body>
</html>
 
Zuletzt bearbeitet:

Forum-Statistiken

Themen
272.351
Beiträge
1.558.596
Mitglieder
187.824
Neuestes Mitglied
Danke!