Hallo mensen,

Ik ben medebeheerder van een PHPBB forum (versie 2.0.19) en zit met een heel vervelend probleem waar ik niet uit kan komen.

Op ons forum heb ik nog niet zo lang geleden enkele modificaties geinstalleerd en die hebben tot een week geleden allemaal probleemloos gefunctioneerd. Het gaat hier o.a. om de attachment mod en photo profile hack van Acyd Burn.

De photo profile hack werkte ook perfect maar had voor mij, en mijn collega beheerder, één groot nadeel. Wij konden via het ACP namelijk niet de profielfoto's van de gebruikers bewerken omdat deze niet getoond werden in het ACP. Ik ben daar eens naar op zoek gegaan en vond op een forum deze code:

# 
#------[ OPEN: ]------------------------------------------------------------- 
# 
admin/admin_users.php 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
require($phpbb_root_path . 'includes/functions_validate.'.$phpEx); 
# 
#------[ AFTER, ADD: ]------------------------------------------------------- 
# 
require($phpbb_root_path . 'language/lang_english/lang_profilephoto.'.$phpEx); 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
// Ok, the profile has been modified and submitted, let's update 
if ( ( $mode == 'save' && isset( $HTTP_POST_VARS['submit'] ) ) || isset( $HTTP_POST_VARS['avatargallery'] ) || isset( $HTTP_POST_VARS['submitavatar'] ) || isset( $HTTP_POST_VARS['cancelavatar'] ) ) 
# 
#------[ REPLACE WITH: ]----------------------------------------------------- 
# 
// Ok, the profile has been modified and submitted, let's update 
if ( ( $mode == 'save' && isset( $HTTP_POST_VARS['submit'] ) ) || isset( $HTTP_POST_VARS['avatargallery'] ) || isset( $HTTP_POST_VARS['submitavatar'] ) || isset( $HTTP_POST_VARS['cancelavatar'] ) || isset( $HTTP_POST_VARS['submitphoto'] ) || isset( $HTTP_POST_VARS['cancelphoto'] ) ) 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
$user_avatar = ( empty($user_avatar_loc) ) ? $this_userdata['user_avatar'] : ''; 
$user_avatar_type = ( empty($user_avatar_loc) ) ? $this_userdata['user_avatar_type'] : ''; 
# 
#------[ AFTER, ADD: ]------------------------------------------------------- 
# 
$user_photo_upload = ( !empty($HTTP_POST_VARS['photourl']) ) ? trim($HTTP_POST_VARS['photourl']) : ( ( $HTTP_POST_FILES['photo']['tmp_name'] != 'none') ? $HTTP_POST_FILES['photo']['tmp_name'] : '' ); 
$user_photo_remoteurl = ( !empty($HTTP_POST_VARS['photoremoteurl']) ) ? trim($HTTP_POST_VARS['photoremoteurl']) : ''; 
$user_photo_name = ( !empty($HTTP_POST_FILES['photo']['name']) ) ? $HTTP_POST_FILES['photo']['name'] : ''; 
$user_photo_size = ( !empty($HTTP_POST_FILES['photo']['size']) ) ? $HTTP_POST_FILES['photo']['size'] : 0; 
$user_photo_filetype = ( !empty($HTTP_POST_FILES['photo']['type']) ) ? $HTTP_POST_FILES['photo']['type'] : ''; 
$user_photo_url = ( !empty($HTTP_POST_VARS['photourl']) ) ? trim($HTTP_POST_VARS['photourl']) : ''; 
$user_photo = ( empty($user_photo_loc) && $mode == 'editprofile' ) ? $userdata['user_photo'] : ''; 
$user_photo_type = ( empty($user_photo_loc) && $mode == 'editprofile' ) ? $userdata['user_photo_type'] : ''; 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
$user_avatar = $this_userdata['user_avatar']; 
$user_avatar_type = $this_userdata['user_avatar_type']; 
# 
#------[ AFTER, ADD: ]------------------------------------------------------- 
# 
$user_photo = $this_userdata['user_photo']; 
$user_photo_type = $this_userdata['user_photo_type']; 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
if( isset( $HTTP_POST_VARS['avatargallery'] ) || isset( $HTTP_POST_VARS['submitavatar'] ) || isset( $HTTP_POST_VARS['cancelavatar'] ) ) 
# 
#------[ REPLACE WITH: ]----------------------------------------------------- 
# 
if( isset( $HTTP_POST_VARS['avatargallery'] ) || isset( $HTTP_POST_VARS['submitavatar'] ) || isset( $HTTP_POST_VARS['cancelavatar'] ) || isset( $HTTP_POST_VARS['submitphoto'] ) || isset( $HTTP_POST_VARS['cancelphoto'] ) ) 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
if( isset( $HTTP_POST_VARS['submit'] ) ) 
{ 
include($phpbb_root_path . 'includes/usercp_avatar.'.$phpEx); 
# 
#------[ AFTER, ADD: ]------------------------------------------------------- 
# 
include($phpbb_root_path . 'profilephoto_mod.'.$phpEx); 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
else if( $user_avatar_local != "" && $avatar_sql == "" && !$error ) 
{ 
$avatar_sql = ", user_avatar = '" . str_replace("\'", "''", $user_avatar_local) . "', user_avatar_type = " . USER_AVATAR_GALLERY; 
} 
# 
#------[ AFTER, ADD: ]------------------------------------------------------- 
# 
// START Profilephoto - MOD 
// PhotoProfile stuff 
$photo_sql = ""; 
if( isset($HTTP_POST_VARS['photodel']) ) 
{ 
if( $this_userdata['user_photo_type'] == USER_AVATAR_UPLOAD && $this_userdata['user_photo'] != "" ) 
{ 
if( @file_exists(@phpbb_realpath("./" . $board_config['photo_path'] . "/" . $this_userdata['user_photo'])) ) 
{ 
@unlink("./" . $board_config['photo_path'] . "/" . $this_userdata['user_photo']); 
} 
} 
$photo_sql = ", user_photo = '', user_photo_type = " . USER_AVATAR_NONE; 
} 
else if( ( $user_photo_loc != "" || !empty($user_photo_url) ) && !$error ) 
{ 
// Only allow one type of upload, either a filename or a URL 
if( !empty($user_photo_loc) && !empty($user_photo_url) ) 
{ 
$error = TRUE; 
if( isset($error_msg) ) 
{ 
$error_msg .= "<br />"; 
} 
$error_msg .= $lang['Only_one_photo']; 
} 
if( $user_photo_loc != "" ) 
{ 
if( file_exists(@phpbb_realpath($user_photo_loc)) && ereg(".jpg$|.gif$|.png$", $user_photo_name) ) 
{ 
if( $user_photo_size <= $board_config['photo_filesize'] && $user_photo_size > 0) 
{ 
$error_type = false; 
// Opera appends the image name after the type, not big, not clever! 
preg_match("'image\/[x\-]*([a-z]+)'", $user_photo_filetype, $user_photo_filetype); 
$user_photo_filetype = $user_photo_filetype[1]; 
switch( $user_photo_filetype ) 
{ 
case "jpeg": 
case "pjpeg": 
case "jpg": 
$imgtype = '.jpg'; 
break; 
case "gif": 
$imgtype = '.gif'; 
break; 
case "png": 
$imgtype = '.png'; 
break; 
default: 
$error = true; 
$error_msg = (!empty($error_msg)) ? $error_msg . "<br />" . $lang['photo_filetype'] : $lang['photo_filetype']; 
break; 
} 
if( !$error ) 
{ 
list($width, $height) = @getimagesize($user_photo_loc); 
if( $width <= $board_config['photo_max_width'] && $height <= $board_config['photo_max_height'] ) 
{ 
$user_id = $this_userdata['user_id']; 
$photo_filename = $user_id . $imgtype; 
if( $this_userdata['user_photo_type'] == USER_AVATAR_UPLOAD && $this_userdata['user_photo'] != "" ) 
{ 
if( @file_exists(@phpbb_realpath("./../" . $board_config['photo_path'] . "/" . $this_userdata['user_photo'])) ) 
{ 
@unlink("./../" . $board_config['photo_path'] . "/". $this_userdata['user_photo']); 
} 
} 
@copy($user_photo_loc, "./../" . $board_config['photo_path'] . "/$photo_filename"); 
$photo_sql = ", user_photo = '$photo_filename', user_photo_type = " . USER_AVATAR_UPLOAD; 
} 
else 
{ 
$l_photo_size = sprintf($lang['photo_imagesize'], $board_config['photo_max_width'], $board_config['photo_max_height']); 
$error = true; 
$error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $l_photo_size : $l_photo_size; 
} 
} 
} 
else 
{ 
$l_photo_size = sprintf($lang['Photo_filesize'], round($board_config['photo_filesize'] / 1024)); 
$error = true; 
$error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $l_photo_size : $l_photo_size; 
} 
} 
else 
{ 
$error = true; 
$error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $lang['Photo_filetype'] : $lang['Photo_filetype']; 
} 
} 
else if( !empty($user_photo_url) ) 
{ 
// First check what port we should connect to, look for a :[xxxx]/ or, if that doesn't exist assume port 80 (http) 
preg_match("/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/(.*)$/", $user_photo_url, $url_ary); 
if( !empty($url_ary[4]) ) 
{ 
$port = (!empty($url_ary[3])) ? $url_ary[3] : 80; 
$fsock = @fsockopen($url_ary[2], $port, $errno, $errstr); 
if( $fsock ) 
{ 
$base_get = "/" . $url_ary[4]; 
// Uses HTTP 1.1, could use HTTP 1.0 ... 
@fputs($fsock, "GET $base_get HTTP/1.1\r\n"); 
@fputs($fsock, "HOST: " . $url_ary[2] . "\r\n"); 
@fputs($fsock, "Connection: close\r\n\r\n"); 
unset($photo_data); 
while( !@feof($fsock) ) 
{ 
$photo_data .= @fread($fsock, $board_config['photo_filesize']); 
} 
@fclose($fsock); 
if( preg_match("/Content-Length\: ([0-9]+)[^\/ ][\s]+/i", $photo_data, $file_data1) && preg_match("/Content-Type\: image\/[x\-]*([a-z]+)[\s]+/i", $photo_data, $file_data2) ) 
{ 
$file_size = $file_data1[1]; 
$file_type = $file_data2[1]; 
switch( $file_type ) 
{ 
case "jpeg": 
case "pjpeg": 
case "jpg": 
$imgtype = '.jpg'; 
break; 
case "gif": 
$imgtype = '.gif'; 
break; 
case "png": 
$imgtype = '.png'; 
break; 
default: 
$error = true; 
$error_msg = (!empty($error_msg)) ? $error_msg . "<br />" . $lang['Photo_filetype'] : $lang['Photo_filetype']; 
break; 
} 
if( !$error && $file_size > 0 && $file_size < $board_config['photo_filesize'] ) 
{ 
$photo_data = substr($photo_data, strlen($photo_data) - $file_size, $file_size); 
$tmp_filename = tempnam ("/tmp", $this_userdata['user_id'] . "-"); 
$fptr = @fopen($tmp_filename, "wb"); 
$bytes_written = @fwrite($fptr, $photo_data, $file_size); 
@fclose($fptr); 
if( $bytes_written == $file_size ) 
{ 
list($width, $height) = @getimagesize($tmp_filename); 
if( $width <= $board_config['photo_max_width'] && $height <= $board_config['photo_max_height'] ) 
{ 
$user_id = $this_userdata['user_id']; 
$photo_filename = $user_id . $imgtype; 
if( $this_userdata['user_photo_type'] == USER_AVATAR_UPLOAD && $this_userdata['user_photo'] != "") 
{ 
if( file_exists(@phpbb_realpath("./../" . $board_config['photo_path'] . "/" . $this_userdata['user_photo'])) ) 
{ 
@unlink("./../" . $board_config['photo_path'] . "/" . $this_userdata['user_photo']); 
} 
} 
@copy($tmp_filename, "./../" . $board_config['photo_path'] . "/$photo_filename"); 
@unlink($tmp_filename); 
$photo_sql = ", user_photo = '$photo_filename', user_photo_type = " . USER_AVATAR_UPLOAD; 
} 
else 
{ 
$l_photo_size = sprintf($lang['Photo_imagesize'], $board_config['photo_max_width'], $board_config['photo_max_height']); 
$error = true; 
$error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $l_photo_size : $l_photo_size; 
} 
} 
else 
{ 
// Error writing file 
@unlink($tmp_filename); 
message_die(GENERAL_ERROR, "Could not write photo file to local storage. Please contact the board administrator with this message", "", __LINE__, __FILE__); 
} 
} 
} 
else 
{ 
// No data 
$error = true; 
$error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $lang['File_no_data'] : $lang['File_no_data']; 
} 
} 
else 
{ 
// No connection 
$error = true; 
$error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $lang['No_connection_URL'] : $lang['No_connection_URL']; 
} 
} 
else 
{ 
$error = true; 
$error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $lang['Incomplete_URL'] : $lang['Incomplete_URL']; 
} 
} 
else if( !empty($user_photo_name) ) 
{ 
$l_photo_size = sprintf($lang['Photo_filesize'], round($board_config['photo_filesize'] / 1024)); 
$error = true; 
$error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $l_photo_size : $l_photo_size; 
} 
} 
else if( $user_photo_remoteurl != "" && $photo_sql == "" && !$error ) 
{ 
if( !preg_match("#^http:\/\/#i", $user_photo_remoteurl) ) 
{ 
$user_photo_remoteurl = "http://" . $user_photo_remoteurl; 
} 
if( preg_match("#^(http:\/\/[a-z0-9\-]+?\.([a-z0-9\-]+\.)*[a-z]+\/.*?\.(gif|jpg|png)$)#is", $user_photo_remoteurl) ) 
{ 
$photo_sql = ", user_photo = '" . str_replace("\'", "''", $user_photo_remoteurl) . "', user_photo_type = " . USER_AVATAR_REMOTE; 
} 
else 
{ 
$error = true; 
$error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $lang['Wrong_remote_photo_format'] : $lang['Wrong_remote_photo_format']; 
} 
} 
else if( $user_photo_local != "" && $photo_sql == "" && !$error ) 
{ 
$photo_sql = ", user_photo = '" . str_replace("\'", "''", $user_photo_local) . "', user_photo_type = " . USER_AVATAR_GALLERY; 
} 
// END Profilephoto - MOD 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
// Update entry in DB 
if( !$error ) 
{ 
$sql = "UPDATE " . USERS_TABLE . " 
SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) . "', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_viewemail = $viewemail, user_aim = '" . str_replace("\'", "''", $aim) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "', user_attachsig = $attachsig, user_sig_bbcode_uid = '$signature_bbcode_uid', user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowavatar = $user_allowavatar, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, user_allow_pm = $user_allowpm, user_notify_pm = $notifypm, user_popup_pm = $popuppm, user_lang = '" . str_replace("\'", "''", $user_lang) . "', user_style = $user_style, user_timezone = $user_timezone, user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_active = $user_status, user_rank = $user_rank" . $avatar_sql . " 
# 
#------[ INLINE FIND: ]------------------------------------------------------ 
# 
" . $avatar_sql . 
# 
#------[ INLINE AFTER, ADD: ]------------------------------------------------ 
# 
$photo_sql . 
# 
#------[ END OF LINE SHOULD NOW LOOK LIKE THIS: ]---------------------------- 
# 
" . $avatar_sql . $photo_sql . " 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
else if( !isset( $HTTP_POST_VARS['submit'] ) && $mode != 'save' && !isset( $HTTP_POST_VARS['avatargallery'] ) && !isset( $HTTP_POST_VARS['submitavatar'] ) && !isset( $HTTP_POST_VARS['cancelavatar'] ) ) 
# 
#------[ REPLACE WITH: ]----------------------------------------------------- 
# 
else if( !isset( $HTTP_POST_VARS['submit'] ) && $mode != 'save' && !isset( $HTTP_POST_VARS['avatargallery'] ) && !isset( $HTTP_POST_VARS['submitavatar'] ) && !isset( $HTTP_POST_VARS['cancelavatar'] ) && !isset( $HTTP_POST_VARS['submitphoto'] ) && !isset( $HTTP_POST_VARS['cancelphoto'] ) ) 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
case USER_AVATAR_GALLERY: 
$avatar = '<img src="../' . $board_config['avatar_gallery_path'] . '/' . $user_avatar . '" alt="" />'; 
break; 
} 
} 
else 
{ 
$avatar = ""; 
} 
# 
#------[ AFTER, ADD: ]------------------------------------------------------- 
# 
if ( !empty($user_photo_local) ) 
{ 
$s_hidden_fields .= '<input type="hidden" name="photolocal" value="' . $user_photo_local . '" />'; 
} 
if ( $user_photo_type ) 
{ 
switch( $user_photo_type ) 
{ 
case USER_AVATAR_UPLOAD: 
$photo_img = ( $board_config['allow_photo_upload'] ) ? '<img src="../' . $board_config['photo_path'] . '/' . $user_photo . '" alt="" />' : ''; 
break; 
case USER_AVATAR_REMOTE: 
$photo_img = ( $board_config['allow_photo_remote'] ) ? '<img src="../' . $user_photo . '" alt="" />' : ''; 
break; 
} 
} 
$template->set_filenames(array( 
'photobox' => 'profile_photo_box.tpl') 
); 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
'L_LINK_REMOTE_AVATAR' => $lang['Link_remote_Avatar'], 
# 
#------[ AFTER, ADD: ]------------------------------------------------------- 
# 
'L_PROFLE_PHOTO_SETTINGS' => $lang['Profile_photo_settings'], 
'L_ALLOW_PHOTO_REMOTE' => $lang['Allow_photo_remote'], 
'L_ALLOW_PHOTO_REMOTE_EXPLAIN' => $lang['Allow_photo_remote_explain'], 
'L_ALLOW_PHOTO_UPLOAD' => $lang['Allow_photo_upload'], 
'L_PHOTO_MAX_FILESIZE' => $lang['Photo_max_filesize'], 
'L_PHOTO_MAX_FILESIZE_EXPLAIN' => $lang['Photo_max_filesize_explain'], 
'L_MAX_PHOTO_SIZE' => $lang['Max_photo_size'], 
'L_PHOTO_STORAGE_PATH' => $lang['Photo_storage_path'], 
'L_PHOTO_STORAGE_PATH_EXPLAIN' => $lang['Photo_storage_path_explain'], 
'PHOTO_REMOTE_YES' => $photo_remote_yes, 
'PHOTO_REMOTE_NO' => $photo_remote_no, 
'PHOTO_UPLOAD_YES' => $photo_upload_yes, 
'PHOTO_UPLOAD_NO' => $photo_upload_no, 
'PHOTO_FILESIZE' => $new['photo_filesize'], 
'PHOTO_MAX_HEIGHT' => $new['photo_max_height'], 
'PHOTO_MAX_WIDTH' => $new['photo_max_width'], 
'PHOTO_PATH' => $new['photo_path'], 
'ALLOW_PHOTO' => $board_config['allow_photo_upload'], 
'PHOTO' => $photo_img, 
'PHOTO_SIZE' => $board_config['photo_filesize'], 
'L_PHOTO_PANEL' => $lang['Photo_panel'], 
'L_PHOTO_EXPLAIN' => sprintf($lang['Photo_explain'], $board_config['photo_max_width'], $board_config['photo_max_height'], (round($board_config['photo_filesize'] / 1024))), 
'L_UPLOAD_PHOTO_FILE' => $lang['Upload_photo_file'], 
'L_UPLOAD_PHOTO_URL' => $lang['Upload_photo_url'], 
'L_UPLOAD_PHOTO_URL_EXPLAIN' => $lang['Upload_photo_url_explain'], 
'L_LINK_REMOTE_PHOTO' => $lang['Link_remote_photo'], 
'L_LINK_REMOTE_PHOTO_EXPLAIN' => $lang['Link_remote_photo_explain'], 
'L_DELETE_PHOTO' => $lang['Delete_Image'], 
'L_CURRENT_IMAGE' => $lang['Current_Image'], 
'S_ALLOW_PHOTO_UPLOAD' => $board_config['allow_photo_upload'], 
'S_ALLOW_PHOTO_REMOTE' => $board_config['allow_photo_remote'], 
'S_PHOTO_HIDDEN_FIELDS' => $s_hidden_fields, 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
if( $board_config['allow_avatar_remote'] == TRUE ) 
{ 
$template->assign_block_vars('avatar_remote_link', array() ); 
} 
# 
#------[ AFTER, ADD: ]------------------------------------------------------- 
# 
if ( $board_config['allow_photo_upload'] || $board_config['allow_photo_remote'] ) 
{ 
$template->assign_block_vars('switch_photo_block', array() ); 
if ( $board_config['allow_photo_upload'] && file_exists('./../' . $board_config['photo_path']) ) 
{ 
if ( $form_enctype != '' ) 
{ 
$template->assign_block_vars('switch_photo_block.switch_photo_local_upload', array() ); 
} 
$template->assign_block_vars('switch_photo_block.switch_photo_remote_upload', array() ); 
} 
if ( $board_config['allow_photo_remote'] ) 
{ 
$template->assign_block_vars('switch_photo_block.switch_photo_remote_link', array() ); 
} 
} 
$template->assign_var_from_handle('PHOTO_BOX', 'photobox'); 
# 
#------[ OPEN: ]------------------------------------------------------------- 
# 
templates/template_name/admin/user_edit_body.tpl 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
<input type="hidden" name="MAX_FILE_SIZE" value="{AVATAR_SIZE}" /> 
# 
#------[ REPLACE WITH: ]----------------------------------------------------- 
# 
<!--<input type="hidden" name="MAX_FILE_SIZE" value="{AVATAR_SIZE}" />--> 
# 
#------[ FIND: ]------------------------------------------------------------- 
# 
<!-- END avatar_local_gallery --> 
# 
#------[ AFTER, ADD: ]------------------------------------------------------- 
# (I really wanted to use {PHOTOBOX} but for some reason I couldn't get it to show.) 
# (I did copy profile_photo_box.tpl to my templates/template_name/admin folder.) 
# (Anyway the switches are working now so I will live with it for now.) 

<!-- BEGIN switch_photo_block --> 
<tr> 
<th class="thSides" colspan="2" height="28">&nbsp;</th> 
</tr> 
<tr> 
<th colspan="2" height="12" valign="middle">{L_PHOTO_PANEL}</th> 
</tr> 
<tr> 
<td class="row1" colspan="2"><table width="70%" cellspacing="2" cellpadding="0" border="0" align="center"> 
<tr> 
<td width="65%"><span class="gensmall">{L_PHOTO_EXPLAIN}</span></td> 
<td align="center"><span class="gensmall">{L_CURRENT_IMAGE}</span><br />{PHOTO}<br /><input type="checkbox" name="photodel" />&nbsp;<span class="gensmall">{L_DELETE_PHOTO}</span></td> 
</tr> 
</table></td> 
</tr> 
<!-- BEGIN switch_photo_local_upload --> 
<tr> 
<td class="row1"><span class="gen">{L_UPLOAD_PHOTO_FILE}:</span></td> 
<td class="row2"><!--<input type="hidden" name="MAX_PHOTO_FILE_SIZE" value="{PHOTO_SIZE}" />--><input type="file" name="photo" class="post" style="width:200px" /></td> 
</tr> 
<!-- END switch_photo_local_upload --> 
<!-- BEGIN switch_photo_remote_upload --> 
<tr> 
<td class="row1"><span class="gen">{L_UPLOAD_PHOTO_URL}:</span><br /><span class="gensmall">{L_UPLOAD_PHOTO_URL_EXPLAIN}</span></td> 
<td class="row2"><input type="text" name="photourl" size="40" class="post" style="width:200px" /></td> 
</tr> 
<!-- END switch_photo_remote_upload --> 
<!-- BEGIN switch_photo_remote_link --> 
<tr> 
<td class="row1"><span class="gen">{L_LINK_REMOTE_PHOTO}:</span><br /><span class="gensmall">{L_LINK_REMOTE_PHOTO_EXPLAIN}</span></td> 
<td class="row2"><input type="text" name="photoremoteurl" size="40" class="post" style="width:200px" /></td> 
</tr> 
<!-- END switch_photo_remote_link --> 
{S_PHOTO_HIDDEN_FIELDS} 
<!-- END switch_photo_block --> 
# 
#-----[ SAVE/CLOSE ALL FILES ]----------------------------------------------- 
# 
# ..::END::..


Nadat ik beide aangepaste bestanden naar de server geupload had kon ik via het ACP inderdaad de profielfoto's van de gebruikers ook zien en heb via die weg ook twee foto's kunnen verwijderen. Ik kwam echter tot de ontdekking dat ik geen nieuwe foto in een profiel kon uploaden via het ACP. De schrik sloeg mij helemaal om het hart toen ik bemerkte dat het ook niet meer mogelijk was om een foto via de normale weg voor het wijzigen van het profiel, te uploaden.

Ik heb daarop direct de twee aangepaste bestanden op de server weer vervangen door de originele, ongewijzigde, bestanden. Het kwaad was echter schijnbaar al geschied daar het ook nu niet meer mogelijk was om een foto te uploaden in het profiel.

Ik heb me al geruime tijd het hoofd gebroken wat er nu aan de hand kan zijn maar ik kom er niet uit. Ik ben wel tot de ontdekking gekomen dat het wel mogelijk is om een foto te uploaden als deze kleiner is dan 20kB (de waarde die we ingesteld hadden staan voor het uploaden van een avatar). Het aanpassen van de waarden voor de profielfoto in het ACPhebben geen enkel effect op het uploaden van een foto in het profiel. Als ik echter de toegestande bestandsgrootte voor het uploaden van een avatar aanpas heeft dit ook geen effect op een up te loaden profielfoto. Een profielfoto blijft geaccepteerd worden als deze kleiner is dan 20kB.

Schakel ik nu in het ACP de mogelijkheid om een avatar te uploaden uit accepteert de photo profile hack wel een grotere foto dan 20kB maar wordt hij niet geupload.

Het lijkt er dus op dat er door de wijzigingen in de hierboven geplaatste code er ook wijzigingen elders in het script of in de database zijn aangebracht. Als ik in de database kijk zijn alle rijen voor de profielfoto wel aanwezig in de tabellen "config" en "users" en staan daar ook de juiste waardes bij.

Ik kan er echter niet uitkomen waar ik nog kan zoeken. Is er misschien iemand die, na het zien van bovengeplaatste code, een idee heeft waar ik de oplossing voor dit probleem zou kunnen zoeken?

Groeten,
Erik
Geef eens wat relevante code. Ik ga dat lap niet doorspitten.
Ik zie niet in 1 oogopslag waar de fout zit, maar wel dat het een ongelofelijke brakke code is. HTTP_POST_VARS stamt inmiddels al uit de middeleeuwen en de hoeveelheid @jes in je code om fouten te onderdrukken is ook niet gezond.

Ik kan nog wel even doorgaan, maar dat zou vrij nutteloos zijn. Mijn tip: vergeet dit script en ga op zoek naar iets beters. Dit script zal je alleen maar meer problemen geven...
Pepijn schreef op 27.01.2008 14:17
Geef eens wat relevante code. Ik ga dat lap niet doorspitten.


Het is wel relevante code, het is alleen veel. Een phpBB mod bestaat uit deze informatie.
Deze wijzigingen in dit script hebben helaas al voor problemen gezorgd. Nadat ik de twee gewijzigde bestanden weer verangen had voor de originele, ongewijzigde, bestanden bleef het probleem met de profielfoto bestaan. De profielfoto wordt niet meer als zodanog herkend en als het ware getoetst aan de criteria die ingesteld waren voor de avatar.

Nu moet ik dus uitzoeken waarom de profielfoto ineens niet meer groter kan zijn dan 20kB. Waar kan er nu de fout zitten? Moet ik dat in een scriptbestand zoeken of in de database zelf?

Ohja, ik moet wel eerlijk bekennen dat ik een PHP groentje ben...

Groeten,
Erik
Het kan op zoveel plaatsen zitten.

De serverinstellingen in php.ini kunnen veranderd zijn waardoor bijvoorbeeld de max_execution_time overschreden wordt. Ook zou bijvoorbeeld de maximale grootte van fileuploads gewijzigd kunnen zijn.

Ook kan het zijn dat je scripts niet meer werken doordat de register_globals instelling veranderd is (het zou me niets verbazen als je scripts daar afhankelijk van zijn).

Het probleem is alleen dat het erg lastig zal worden om de oorzaak van het probleem te achterhalen omdat de foutafhandeling in je scripts ook nogal te wensen overlaat. Met een goede foutafhandeling had je zeker een foutmelding gekregen als het aan een PHP instelling had gelegen. Maar onder andere doordat jouw code zo ontzettend vol staat met @jes, worden al deze foutmeldingen onderdrukt en kom je er dus waarschijnlijk nooit achter...

Je moet het zelf weten als je verder wilt gaan werken met deze scripts, maar bereid je dan maar vast voor op een toekomst met nog veel meer van dit soort problemen. Je hebt natuurlijk ook de keuze om nu alles opnieuw en goed te doen en in de toekomst nooit meer ergens last van te hebben.

Reageren