Si anche a me sembrava la via giusta ma mi da errore...

Fatal error: Call to undefined function rename_file() in H:\_Works\Accessori\CMS\Simple Php Blog\Mods\v15c\upload_img_cgi.php on line 95

La linea 95 è proprio quella modificata

posto l'intero script:

Codice PHP:
<?php
  
// ---------------
  // INITIALIZE PAGE
  // ---------------
  
require_once('scripts/sb_functions.php');
  global 
$logged_in;
  
$logged_in logged_intruetrue );
  
  
read_config();
  
  require_once(
'languages/' $blog_config'blog_language' ] . '/strings.php');
  
sb_language'upload_img' );
  
  
// ---------------
  // POST PROCESSING
  // ---------------
  
  
for ($i=0;$i<count($_FILES['userfile']);$i++) {
  
    if (
$ok == null) {
      
$ok false;
    }
    
    if (
is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) {
      if ( 
$_FILES'userfile' ][ 'error' ][$i] == ) {         // se folder non esiste lo crea ndrob
        
if (!file_exists(IMAGES_DIR)) {
          
$oldumask umask(0);
          @
mkdir(IMAGES_DIR0777 );
          @
umask($oldumask);
        }
         
// Mod rob: aggiunte le parentesi quadre alla sostituzione con underscore (le parentesi quadre nell'immagine vanno in                  // conflitto con il tag per inserire l'immagine nel post) 
         // Old: $uploadfile = $uploaddir . preg_replace("/ /","_",$_FILES['userfile']['name'][$i]);
        
$uploaddir IMAGES_DIR;
        
$char = array(' ',"]","[");
        
$uploadfile $uploaddir str_replace($char,"_",$_FILES['userfile']['name'][$i]);
        
        
/* Mod rob: controllo presenza altro file con lo stesso nome (Sostituita dall'aggiunta della data)
        if (file_exists($uploadfile)) {
          echo('Esiste già un immagine con lo stesso nome.');
          exit;
        } */
        
        
if ( @getimagesize($_FILES['userfile']['tmp_name'][$i]) == FALSE ){
          echo(
'Il file selezionato non è un file immagine valido');
          exit;
        }
        
        if (
strpos($uploadfile".") === false) {
          echo(
'File does not have an extension');
          exit;
        }
        
        if (
strpos($uploadfile".") == 0) {
          echo(
'File begins with "."');
          exit;
        }
        
        if (
strrpos($uploadfile".") == strlen($uploadfile)-1) {
          echo(
'File ends with "."');
          exit;
        }
        
        
$extension strtolower(substr(strrchr($uploadfile"."), 1));
        
        if (
strlen($extension) == 0) { // Not really needed...
          
echo('File ends with "." and does not have an extension');
          exit;
        }
        
        
// Allowed files
        
$upload_valid_extentions = array( "jpg""gif""png" );
        
$extension strtolower(substr(strrchr($uploadfile"."), 1));
        if (!
in_array($extension$upload_valid_extentions)) {
          echo(
'That filetype is not allowed');
          exit;
        }
        
        
// Explicitly denied files (we don't really need this anymore...) - provided by ReZEN (rezen@xorcrew.net)
        
$upload_denied_extentions = array( "exe""pl""php""php3""php4""php5""phps""asp","cgi""html""htm""dll""bat""cmd" );
        foreach (
$upload_denied_extentions AS $denied_extention) {
          if(
$denied_extention == $extension) {
            echo(
'That filetype is not allowed');
            exit;
          }    
        }
        
// if ( move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile.rand(1,1000)) ) {

        
$day date("d",time());
        
$month date("m",time());
        
$year date("y",time());
        
$hourH date("H",time());
        
$houri date("i",time());
        
$hours date("s",time());
        if ( 
move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile.$year.$month
              
rename_file($_FILES['userfile']['name'][$i]))) {
          
chmod$uploadfile0777 );
          
$ok true;
        } else {
          
$ok false;
        }
      }
    }
  }
  if ( 
$ok === true ) {
    
redirect_to_url'add.php' );
  }
  
// ------------
  // PAGE CONTENT
  // ------------
  
function page_content() {
    global 
$lang_string$user_colors;
    if ( 
$ok !== true ) {
      echo( 
$lang_string'error' ] . $ok '

);
    }
    
//echo(count($_FILES['userfile']));
    //print_r($_FILES['userfile']);
    //echo($_FILES['userfile']['name'][0]);
    
echo( '[url="index.php"]' $lang_string'home' ] . '[/url]

);
  }
  
  
// ----
  // HTML
  // ----
?>
  <?php echo( get_init_code() ); ?>
  <?php require_once('themes/' $blog_theme '/user_style.php'); ?>
  
  <title><?php echo($blog_config'blog_title' ]); ?> - <?php echo( $lang_string'title' ] ); ?></title>
</head>
  <?php 
    
// ------------
    // BEGIN OUTPUT
    // ------------
    
theme_pagelayout();
  
?>
</html>
Nota che quasi all'inizio c'è già un controllo che manipola il file se trova dei caratteri speciali (tipo lo spazio che non è supportato) non vorrei che fosse quello a dare noia al resto del codice.