PDA

View Full Version : Signature Parsing Issues


LightBringer
09-27-2002, 09:49 PM
I'm having an issue where my flash vb code that I've created isn't parsing properly when used the following way:

vB Code Tag: swf
vB Code replacement: <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" {param}>
<PARAM NAME=movie VALUE="{option}"> <EMBED src="{option}" quality=high {param} TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED>
</OBJECT>
vB Code example: width=400 height=100

The problem is, if a user attempts to put quotes around the option for height and width such as this: width="400" height="100"

the signature never shows up and when that user goes back to modify his or her profile it has been altered and reflects the following: width=\"400\" height=\"100\"

Notice the newly created \ marks in the sig line?

Any ideas?

I'm running vb 2.2.8 and I can't really nail down when this has begun since I hadn't tested out flash sigs since well before 2.2.6. :/

I could really use some help on this.

Sidenote: As long as the vbcode doesn't have the quotes around the height and width parameters, everything is fine.

Edited to include swf limit check code.
Below is the code I've installed into member.php to check the file size and dimensions of the flash movie.

$signature = preg_replace("/(\[)(swf)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/swf\])/seiU", "\swf_size_check('\\5','\\7')", $signature);


function swf_size_check($image, $h_w) {


global $maxsigheight, $maxsigwidth;

//parse_all img tags

$image_xy=@getimagesize($image);

if ($image_xy==NULL)
{
return "Image not found";
}
else {
//ok, here we need to see if the user specified a size(i believe the swf will
//default to default size if no height width is specified, so lets get the
//dimensions of the swf..

$im_width=$image_xy[0];
$im_height=$image_xy[1];


//ok, did the user specify a height? lets see...

unset($params);
$params=explode(" ", $h_w);

foreach($params AS $param)
{
if (preg_match("/(height)(=)(['\"]?)([^\"']*)(\\3)/siU", $param))
{
$im_height=preg_replace("/(height)(=)(['\"]?)([^\"']*)(\\3)/seiU", "\intval('\\4')", $param);
}
if (preg_match("/(width)(=)(['\"]?)([^\"']*)(\\3)/siU", $param))
{
$im_width=preg_replace("/(width)(=)(['\"]?)([^\"']*)(\\3)/seiU", "\intval('\\4')", $param);
}
}


if ($im_width > $maxsigwidth)
{
return "Sorry, swf size exceeds maximum width of ".$maxsigwidth.".";
}

if ($im_height > $maxsigheight)
{
return "Sorry, swf size exceeds maximum height of ".$maxsigheight.".";
}

}


return "" . $h_w . "";
}

Xenon
09-28-2002, 09:30 AM
just tell your users not to use " ;)

it has to do with addslashes function used for parsing signature.

LightBringer
09-28-2002, 12:26 PM
Originally posted by Xenon
just tell your users not to use " ;)

it has to do with addslashes function used for parsing signature.


Thanks Xenon. An even simpler solution: I removed the swf signature code all together. ;)