Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [Aiuto] Problema con una funzione per pannello Admin del CMS

    Salve a tutti, ho un problema con la funzione che stavo cercando di creare per il pannello admin del CMS.
    Codice PHP:
    if ($act == 'files'){
                                  if(!
    $_POST['submit']){
                                  
    $myDirectory opendir(".");
                                  while(
    $entryName readdir($myDirectory)) {
                                  
    $dirArray[] = $entryName;
                                   }
                                  
    closedir($myDirectory);
                                  
    $indexCount    count($dirArray);
                                  Print (
    "$indexCount files
    \n"
    );
                                  
    sort($dirArray);
                                  echo 
    '<form name="form" method="post" action="admin.php?act=files">';
                                  echo
    '<select name="files">';
                                  for(
    $index=0$index $indexCount$index++) {
                                  if (
    substr("$dirArray[$index]"01) != "."){ // Non mostra i file nascosti
                                  
    if ($dirArray[$index] != "admin.php"){ //Non mostra il file admin.php
                                   
    echo '<OPTION value='.$dirArray[$index].'>'.$dirArray[$index].'';
                                   }
                                    }
                                    }    
                                    echo 
    '</select>
    '
    ;
                                    echo 
    "<tr><td colspan=\"2\" align=\"right\"><input type=\"submit\" name=\"submit\" value=\"Leggi!\"></td></tr>\n
    "
    ;
                                    }else{
                                    
    $filename $_POST['files'];
                                    
    $handle fopen($filename"r");
                                    
    $contents fread($handlefilesize($filename));
                                    
    fclose($handle); 
                                    echo 
    "<tr><td>Contenuto: </td><td><textarea name=\"contenuto\" style=\"width:500px; height:200px;\">".$contents."</textarea></td></tr>
    \n"
    ;
                                    echo 
    "<tr><td colspan=\"2\" align=\"right\"><input type=\"submit\" name=\"mod\" value=\"Modifica!\"></td></tr>\n";
                                    echo 
    '</form>';
                                    if (
    $_POST['mod']){
                                    
    write($_POST['files'],$_POST['contenuto']);
                                    
    messaggio_box ("File",$_POST['files']."".$_POST['contenuto']);
                                    
    fclose($handle); 
                                    }
                                    }
                                    }
    //fine files modifier 

    Penso che lo script non riesce a "ricordare" la variabile $_POST['files'], fallendo quindi il writing, ma mi serve una mano.
    Funzione così: Selezioni un file tra quelli elencati nella combobox. Lo modifichi in una text area e poi dovrebbe scrivere le modifiche sul file selezionato, solo che non lo fa per il motivo citato sopra.
    Grazie a tutti..

  2. #2
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Forse fallisce il write (che comunque si fa con fwrite e non con write) perchè poche righe prima hai chiuso il file.

    In ogni caso farei la scrittura del file prima della sua lettura, altrimenti nella textarea hai comunque il contenuto vecchio.

  3. #3
    Ho corretto il codice ed ho:
    Ho modificato il ciclo della stampa, usando il foreach.
    Dentro il ciclo ti sei dimenticato di chiudere il tag option
    Dentro dove inserisci la textarea ti sei dimenticato di aprire il tag form.
    Sempre lì dentro ho inserito un campo hidden col nome del file che dovrai modificare.
    Sempre lì ho inserito un altro hidden per farlo entrare sull'if di scrittura.

    In poche parole non trovava il file da scrivere perché la variabile $_POST cambiava, prima arrivava dalla selezione della combobox, e l'indice files esisteva, poi arrivava dalla pagina con la textarea, dove l'indice files non era definito.
    Codice PHP:
    <?php

        
    if ($act == 'files')
        {
            if(!
    $_POST['submit'])
            {
                
    $myDirectory opendir(".");
                
             while(
    $entryName readdir($myDirectory))
                {
                    
    $dirArray[] = $entryName;
             }
                
             
    closedir($myDirectory);
             
    $indexCount    count($dirArray);
             Print (
    "$indexCount files
    \n"
    );
             
    sort($dirArray);
             echo 
    '<form name="form" method="post" action="admin.php?act=files">';
                echo
    '<select name="files">';
                
             
    /*for($index=0; $index < $indexCount; $index++)
                {
                    if (substr("$dirArray[$index]", 0, 1) != ".")
                    { 
                        // Non mostra i file nascosti
                        if ($dirArray[$index] != "admin.php")
                        { 
                            //Non mostra il file admin.php
                            echo '<OPTION value='.$dirArray[$index].'>'.$dirArray[$index].'';
                        }
                    }
             }*/
                
                
    foreach($file as $dirArray)
                {
                    if(
    substr($file01) == "." || $file == "admin.php") continue;
                    
                    echo 
    "<option value="{$file}">{$file}</option>";
                }
                
             echo 
    '</select>
    '
    ;
                echo 
    "<tr><td colspan=\"2\" align=\"right\"><input type=\"submit\" name=\"submit\" value=\"Leggi!\"></td></tr>\n
    "
    ;
            }
            else
            {
                
    $filename $_POST['files'];
                
    $handle fopen($filename"r");
             
    $contents fread($handlefilesize($filename));
             
    fclose($handle); 
                echo 
    '<form action=admin.php?act=files" method="post"><input type="hidden" name="mod" value="true">';
                echo 
    '<input type="hidden" name="files" value="'.$filename.'">';
                echo 
    "<tr><td>Contenuto: </td><td><textarea name=\"contenuto\" style=\"width:500px; height:200px;\">".$contents."</textarea></td></tr>
    \n"
    ;
                echo 
    "<tr><td colspan=\"2\" align=\"right\"><input type=\"submit\" name=\"mod\" value=\"Modifica!\"></td></tr>\n";
                echo 
    '</form>';
                
                if (
    $_POST['mod'])
                {
                    
    write($_POST['files'],$_POST['contenuto']);
                    
    messaggio_box ("File",$_POST['files']."".$_POST['contenuto']);
     
                
    fclose($handle); 
                }
            }
        }
    //fine files modifier
    ?>
    E comunque non scrive su file..
    Soluzioni?

    P.S Riguardo a write:
    È una funzione che ho incluso io nel file funzioni.php. Apre il file, lo scrive e lo chiude.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.