SectorErro
"myXOOPs"-Neuling
Gepostet am:06.11.2004 20:15
#1
bin Xoops- und PHP- Neuling. Aber ich wollte auch mal meinen Beitrag leisten. Also ich habe eine große Aversion gegen Animierte-Gif's in Community-Seiten. Soll man sich auf den Inhalt oder die Blinkebilder konzentrieren?
Naja, da ich meinen Leuten die Möglichkeit lassen wollte eigene Avatare runter zu laden, habe ich mir ein ziemlich properitäres Scriplet gebastelt und mal die uploader.php gehacked. (Naja eher einen hack versucht ;)
Also so siehts aus:
Die Funktion fetchMedia() in class/uploader.php habe ich wie folgt editiert!
Zitat:
Ich weiss es geht auch eleganter! Aber sollange es seinen Zweck erfüllt ;)
Animated Gifs
06.11.2004 20:15 Hallo Leute,bin Xoops- und PHP- Neuling. Aber ich wollte auch mal meinen Beitrag leisten. Also ich habe eine große Aversion gegen Animierte-Gif's in Community-Seiten. Soll man sich auf den Inhalt oder die Blinkebilder konzentrieren?
Naja, da ich meinen Leuten die Möglichkeit lassen wollte eigene Avatare runter zu laden, habe ich mir ein ziemlich properitäres Scriplet gebastelt und mal die uploader.php gehacked. (Naja eher einen hack versucht ;)
Also so siehts aus:
Die Funktion fetchMedia() in class/uploader.php habe ich wie folgt editiert!
Zitat:
function fetchMedia($media_name, $index = null)
{
global $HTTP_POST_FILES;
if (!isset($HTTP_POST_FILES[$media_name])) {
$this->setErrors('File not found');
return false;
} elseif (is_array($HTTP_POST_FILES[$media_name]['name']) && isset($index)) {
$index = intval($index);
$this->mediaName = (get_magic_quotes_gpc()) ? stripslashes($HTTP_POST_FILES[$media_name]['name'][$index]) : $HTTP_POST_FILES[$media_name]['name'][$index];
$this->mediaType = $HTTP_POST_FILES[$media_name]['type'][$index];
$this->mediaSize = $HTTP_POST_FILES[$media_name]['size'][$index];
$this->mediaTmpName = $HTTP_POST_FILES[$media_name]['tmp_name'][$index];
$this->mediaError = !empty($HTTP_POST_FILES[$media_name]['error'][$index]) ? $HTTP_POST_FILES[$media_name]['errir'][$index] : 0;
} else {
$media_name =& $HTTP_POST_FILES[$media_name];
$this->mediaName = (get_magic_quotes_gpc()) ? stripslashes($media_name['name']) : $media_name['name'];
$this->mediaName = $media_name['name'];
$this->mediaType = $media_name['type'];
$this->mediaSize = $media_name['size'];
$this->mediaTmpName = $media_name['tmp_name'];
$this->mediaError = !empty($media_name['error']) ? $media_name['error'] : 0;
}
$this->errors = array();
if (intval($this->mediaSize) < 0) {
$this->setErrors('Invalid File Size');
return false;
}
if ($this->mediaName == '') {
$this->setErrors('Filename Is Empty');
return false;
}
if ( preg_match( '/\.(php|cgi|pl|py|asp)$/i', $this->mediaName ) ) {
$this->setErrors('Filename rejected');
return false;
}
if ($this->mediaTmpName == 'none' || !is_uploaded_file($this->mediaTmpName)) {
$this->setErrors('No file uploaded');
return false;
}
//###### Hacked by Webmin
if ($this->mediaName != '') {
$filename = $this->mediaTmpName;
$handle = fopen ($filename, "rb");
$contents = fread ($handle, filesize ($filename));
$temp=bin2hex($contents);
$data=null;
$len = strlen($temp);
for ($i=0;$i<$len;$i+=2) $data.=chr(hexdec(substr($temp,$i,2)));
$anigif = strpos($data,"NETSCAPE2.0");
if ($anigif!=false)
{
$this->setErrors('Datei ist ein animiertes Gif! Webmin erlaubt Flimmerboxen nicht!');
return false;
}
fclose ($handle);
}
//###### Hacked by Webmin */
if ($this->mediaError > 0) {
$this->setErrors('Error occurred: Error #'.$this->mediaError);
return false;
}
return true;
}
Ich weiss es geht auch eleganter! Aber sollange es seinen Zweck erfüllt ;)