Seite 1 von 2

Photo Album 2.0.53 v. Smartor - IMG Link aber diesmal anders

Verfasst: 31.08.2004 16:51
von mgutt
Ich suche eine Alternative zu diesem Beitrag:

http://www.phpbb.de/viewtopic.php?t=58310

aus Sicherheitsgründen wird ja die Endung .php nicht ausgeführt in einem IMG BBcode

Viele aktivieren dann einfach diese Endung. Aber das möchte ich nicht.

Es wäre doch einfacher und vor allem sicherer wenn die Großansicht der Bilder zwar mit einem Code erfolgt z.B. wie hier:

http://www.maxrev.de/forum/album.php?si ... 0eb1409162

dann auf ein Bild klicken und es entsteht z.B. dieser Pfad:

http://www.maxrev.de/forum/album_pic.php?pic_id=3

Aber wenn ich rechte Maustaste und dann Eigenschaften klicke, dort den "realen" Pfad mit .jpg Endung erhalte.

Ist das möglich?

Oder einfach nur, dass das Bild direkt mit:

http://www.maxrev.de/forum/album_mod/up ... 854be9.jpg

in der Großansicht geladen wird.

Sonst muss ich im ftp kompliziert nach dem richtigen Link suchen.

Habt Ihr eine Lösung für mich?

Verfasst: 31.08.2004 17:03
von mgutt
ach so.

zusätzlich habe ich das Photo Album 2.0.53 v. Smartor zusammengepackt mit einer deutschen Version versehen und Easymod kompatibel gemacht.

Div. Rechtschreibfehler habe ich noch gefunden... Aber die waren schon bei dem Languagepack von dem "Writer" dabei.

Wer will kann das gerne online stellen.

Ich schicke das dann zu.

Verfasst: 31.08.2004 20:02
von mgutt
schön wäre auch, wenn mir jemand sagen könnte, wie man diese "private gallerie" ausblendet..

nach den einstellungen her gibt es da keine Option für.

Ich will die Galerie nämlich nur für ADMIN's und MOD'S freischalten und auch gleichzeitig sollen die Ordner nur bestimmt Namen tragen.

z.B. in meinem Fall

-Tuning Guides
-Nippon Power Team
-Mitglieder

Verfasst: 01.09.2004 09:57
von mgutt
ok vielleicht stelle ich meine Frage direkter. :D

Was muss ich in dieser Datei anpassen, damit die Ausgabe bei der Großansicht als jpg erfolgt und nicht als php:

http://www.maxrev.de/forum/album_pic.php

Code: Alles auswählen


<?php
/***************************************************************************
 *                               album_pic.php
 *                            -------------------
 *   begin                : Wednesday, February 05, 2003
 *   copyright            : (C) 2003 Smartor
 *   email                : smartor_xp@hotmail.com
 *
 *   $Id: album_pic.php,v 2.0.5 2003/02/28 14:33:12 ngoctu Exp $
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

define('IN_PHPBB', true);
$phpbb_root_path = './';
$album_root_path = $phpbb_root_path . 'album_mod/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_ALBUM);
init_userprefs($userdata);
//
// End session management
//


//
// Get general album information
//
include($album_root_path . 'album_common.'.$phpEx);


// ------------------------------------
// Check the request
// ------------------------------------

if( isset($HTTP_GET_VARS['pic_id']) )
{
	$pic_id = intval($HTTP_GET_VARS['pic_id']);
}
else if( isset($HTTP_POST_VARS['pic_id']) )
{
	$pic_id = intval($HTTP_POST_VARS['pic_id']);
}
else
{
	die('No pics specified');
}


// ------------------------------------
// Get this pic info
// ------------------------------------

$sql = "SELECT *
		FROM ". ALBUM_TABLE ."
		WHERE pic_id = '$pic_id'";
if( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not query pic information', '', __LINE__, __FILE__, $sql);
}
$thispic = $db->sql_fetchrow($result);

$cat_id = $thispic['pic_cat_id'];
$user_id = $thispic['pic_user_id'];

$pic_filetype = substr($thispic['pic_filename'], strlen($thispic['pic_filename']) - 4, 4);
$pic_filename = $thispic['pic_filename'];
$pic_thumbnail = $thispic['pic_thumbnail'];

if( empty($thispic) or !file_exists(ALBUM_UPLOAD_PATH . $pic_filename) )
{
	die($lang['Pic_not_exist']);
}


// ------------------------------------
// Get the current Category Info
// ------------------------------------

if ($cat_id != PERSONAL_GALLERY)
{
	$sql = "SELECT *
			FROM ". ALBUM_CAT_TABLE ."
			WHERE cat_id = '$cat_id'";
	if( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not query category information', '', __LINE__, __FILE__, $sql);
	}

	$thiscat = $db->sql_fetchrow($result);
}
else
{
	$thiscat = init_personal_gallery_cat($user_id);
}

if (empty($thiscat))
{
	die($lang['Category_not_exist']);
}


// ------------------------------------
// Check the permissions
// ------------------------------------

$album_user_access = album_user_access($cat_id, $thiscat, 1, 0, 0, 0, 0, 0); // VIEW
if ($album_user_access['view'] == 0)
{
	die($lang['Not_Authorised']);
}


// ------------------------------------
// Check Pic Approval
// ------------------------------------

if ($userdata['user_level'] != ADMIN)
{
	if( ($thiscat['cat_approval'] == ADMIN) or (($thiscat['cat_approval'] == MOD) and !$album_user_access['moderator']) )
	{
		if ($thispic['pic_approval'] != 1)
		{
			die($lang['Not_Authorised']);
		}
	}
}


// ------------------------------------
// Check hotlink
// ------------------------------------

if( ($album_config['hotlink_prevent'] == 1) and (isset($HTTP_SERVER_VARS['HTTP_REFERER'])) )
{
	$check_referer = explode('?', $HTTP_SERVER_VARS['HTTP_REFERER']);
	$check_referer = trim($check_referer[0]);

	$good_referers = array();

	if ($album_config['hotlink_allowed'] != '')
	{
		$good_referers = explode(',', $album_config['hotlink_allowed']);
	}

	$good_referers[] = $board_config['server_name'] . $board_config['script_path'];

	$errored = TRUE;

	for ($i = 0; $i < count($good_referers); $i++)
	{
		$good_referers[$i] = trim($good_referers[$i]);

		if( (strstr($check_referer, $good_referers[$i])) and ($good_referers[$i] != '') )
		{
			$errored = FALSE;
		}
	}

	if ($errored)
	{
		die($lang['Not_Authorised']);
	}
}


/*
+----------------------------------------------------------
| Main work here...
+----------------------------------------------------------
*/


// ------------------------------------
// Increase view counter
// ------------------------------------

$sql = "UPDATE ". ALBUM_TABLE ."
		SET pic_view_count = pic_view_count + 1
		WHERE pic_id = '$pic_id'";
if( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not update pic information', '', __LINE__, __FILE__, $sql);
}


// ------------------------------------
// Okay, now we can send image to the browser
// ------------------------------------

switch ( $pic_filetype )
{
	case '.png':
		header('Content-type: image/png');
		break;
	case '.gif':
		header('Content-type: image/gif');
		break;
	case '.jpg':
		header('Content-type: image/jpeg');
		break;
	default:
		die('The filename data in the DB was corrupted');
}

readfile(ALBUM_UPLOAD_PATH  . $thispic['pic_filename']);

exit;


// +------------------------------------------------------+
// |  Powered by Photo Album 2.x.x (c) 2002-2003 Smartor  |
// +------------------------------------------------------+

?>

Abschließend..

Mir ist es egal, wenn jemand dann den genauen Pfad kennt und vielleicht die Bilder klaut... Schließlich kann man das ja eh kaum verhindern und wenn es ist ja eigentlich eh verboten.

Verfasst: 08.09.2004 10:42
von mgutt
ich habe folgende Quellcodes geändert:

http://smartor.is-root.com/viewtopic.php?p=48346

Damit steht jetzt unter den Bildern immer der direkte Link des Bildes, um diesen z.B. in einem Beitrag zu verlinken.

Die Endung .php wollte ich aus Sicherheitsgründen nicht aktivieren. Besser fände ich es, wenn man mit der rechten Maustaste auf das Bild klickt -> Eigenschaften und dort wäre der Link dann richtig zu sehen.

Da dieser Link unter dem Bild schon ein wenig an einen Fehler erinnert.

Verfasst: 10.09.2004 16:34
von mgutt
irgendwie ist das doch nicht so toll, denn die geplante statistik erfasst dann nicht die jpg dateien und daher werde ich das wieder ausbauen und rückgängig machen.

ich habe jetzt die änderungen für die bbcode.php vor, aber diesen Hinweis in einem anderen Beitrag gefunden:
Berndte hat geschrieben:Hallo,

ich habe folgendes vor:

Öffne:

Code: Alles auswählen

includes/bbcode.php
Finde:

Code: Alles auswählen

	// [img]image_url_here[/img] code..
	$text = preg_replace("#\[img\]((ht|f)tp://)([^ \?&="\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);
Ersetze mit:

Code: Alles auswählen

	// [img]image_url_here[/img] code..
	$text = preg_replace("#\[img\]((ht|f)tp://)([^ \?&="\n\r\t<]*?(\.(jpg|jpeg|gif|png|php)))\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);
was wurde geändert? ---> (jpg|jpeg|gif|png|php)

Ich hätte damit die Möglichkeit eine generierte Grafik (Ministatistik, etc.) einzubauen. Besteht dann ein Sicherheitsrisiko? Die Ausgabe wird ja dann in <img src=... eingebettet... ist es damit "sicher"?

sagt mal eure Meinung..

Gruss Bernd
Damit ist das Sicherheitsrisiko höher als vorher. Aber diese Änderung funktioniert nicht bei mir (phpbb Version 2.0.10).

Aber dafür funktioniert das:
PhilippK hat geschrieben:Eigentlich sollte es reichen, wenn du die Änderungen an der bbcode.php rückgängig machst:

Code: Alles auswählen

# 
#-----[ OPEN ]--------------------------------------------- 
# 
includes/bbcode.php

#
#-----[ FIND ]---------------------------------------------
# Line 284
	$text = preg_replace("#\[img\]((ht|f)tp://)([^\r\n\t<"]*?)\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);

#
#-----[ REPLACE WITH ]---------------------------------------------
# 
	$text = preg_replace("#\[img\]((ht|f)tp://)([^ \?&="\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);
Benutzung auf eigene Gefahr :-)

Gruß, Philipp
Soweit so gut, aber dadurch ist das Sicherheitsrisiko wieder da. Es gibt da noch den [siteimg]-mod aber den will ich nicht anwenden, da es nur wieder ein zusätzlicher Button für meine User wäre.

Jetzt eine heilige Frage:

Kann man die bbcode so ändern, dass sie abfragt, ob derjenige, der einen Beitrag hinzufügt der Admin (also ich bin) oder nach einer gewissen Gruppe (Die Moderatoren) fragt?

Mein Code ;)

also if Gruppe "Die Moderatoren" macht einen Beitrag dann wird das erlaubt:

Code: Alles auswählen

$text = preg_replace("#\[img\]((ht|f)tp://)([^\r\n\t<"]*?)\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);
sonst gilt das:

Code: Alles auswählen

$text = preg_replace("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);
Na is das ne geile Idee oder wie? :D

P.S. ne Antwort fände ich mal super.. sonst fühle ich mich so alleine hier ;)

Verfasst: 10.09.2004 17:52
von mgutt
Noch eine Idee:

ist es schwer, die php abfrage so zu machen, dass er beim prüfen einer php-endung nur die erlaubt, die mit album_pic.php beginnt und auf dem eigenen server liegt...

damit wäre es fast ganz sicher und man hat das problem mit dem [img] links nicht mehr. korrigiert mich ruhig.

Verfasst: 10.01.2005 12:06
von Matlock
mgutt hat geschrieben:Noch eine Idee:

ist es schwer, die php abfrage so zu machen, dass er beim prüfen einer php-endung nur die erlaubt, die mit album_pic.php beginnt und auf dem eigenen server liegt...
Vor diesem Problem stehe ich auch gerade. Hat keiner eine Lösung?

Verfasst: 10.01.2005 12:15
von Fundus
hab >>hier<< schon mal was geschrieben

außerdem könnte man es mit modRewrite machen aber dazu braucht man natürlich die Befugnisse das zu nutzen

Ordner album mit htaccess und dann eben eine regel die imgxxx.png auf die passende album_pic.php?id=xxx weiterleitet :wink:

Verfasst: 10.01.2005 12:22
von Matlock
Ich meinte konkret in diesem Code

Code: Alles auswählen

$text = preg_replace("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);
Was man da ändern muß, daß speziell die album_pic.php ohne Einschränkung bedient wird, wenn sie auf dem eigenen Server liegt.

Und wie lautet das mit modRewrite? Es soll aber nur für die eigene album_pic.php funktionieren.

Einen zusätzlichen BBCode möchte ich nicht, diese BBCode-Box hab ich eh nicht installiert.