Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    45

    [PHP]Ripulire stringhe per creazione cartella e file

    Salve a tutti ho un problemino. Ho creato un semplice script per fare l'upload e il download di file. In pratica l'utente tramite form può creare delle cartelle e poi inserirci i file che vuole. Il problema nasce (e nasce ora a progetto terminato ) quando l'utente crea una cartella con nomi di file non validi come ',?,:,/,\ etc. In questo caso naturalmente la cartella non viene creata e si ha un errore.

    Ho creato, quindi, una funzione con un array contenenti tutti i caratteri non validi e ho provato ad usare la funzione ereg ma anche essa mi resistuisce un errore. Ecco il codice:

    $invalidchars = array ("\","/","?");

    $name = stripslashes($name);

    $check = 0;
    while (list($key, $value) = each($invalidchars))
    {
    //$name = str_replace($value, '', $name);
    if(eregi($value, $name))
    {
    $check++;
    }
    }
    if($check != 0)
    {
    echo "Nome cartella non ammissibile";
    }
    else
    {
    return $name;
    }

    Cosa sbaglio?? Oltre a restituire errori come Warning: eregi(): REG_EESCAPE o Warning: eregi(): REG_BADRPT la funzione restituisce sempre "nome cartella non ammissibile" anche se nella stringa non vi sono caratteri nell'array.

    Mi date una mano?? Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    45
    Ho risolto facendo un "trucchetto" anche se credo che per ottimizzazione e logica non sia la soluzione migliore. Ecco qua la funzione:

    $check = '0';
    while (list($key, $value) = each($invalidchars))
    {
    $check = str_replace('0', '1', $check);
    }
    if($check == 1)
    {
    echo "Nome cartella non ammissibile";
    }
    else
    {
    return $name;
    }

    Un'altra domanda che mi stanno venendo dei dubbi. Per quanto riguarda l'inserimento di stringhe un un database mysql vi sono dei caratteri fastidiosi?? Io "pulisco" solo i form attraverso la funzione addslashes($stringa) è corretto??

    Grazie a tutti

  3. #3
    function SistemaStringa($stringa){
    $stringa = trim($stringa);
    $stringa = str_replace("à","a",$stringa);
    $stringa = str_replace("è","e",$stringa);
    $stringa = str_replace("é","e",$stringa);
    $stringa = str_replace("ò","o",$stringa);
    $stringa = str_replace("ù","u",$stringa);
    $stringa = str_replace("ì","i",$stringa);
    $stringa = ereg_replace("[^A-Za-z0-9]", "_", $stringa);
    $stringa = ereg_replace("_{1,}", "_", $stringa);
    if(substr($stringa, 0, 1)=="_"){$stringa=substr($stringa, 1);}
    if(substr($stringa, -1, 1)=="_"){$stringa=substr($stringa, 0,strlen($stringa)-1);}
    return $stringa;
    }

    Non so se possa fare al caso tuo, questa funz è stata copiata paro paro da:

    http://www.free-script.it

    Grazie Fabio...
    Olio Extravergine d'Oliva Magino
    Prodotti tipici: in vendita olio, pesto ligure e altri prodotti alimentari tradizionali.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    45
    Non è proprio la stessa cosa ma grazie dell'aiuto Daweb. L'unico dubbio che mi rimane è se per un inserimento in mysql basta ripulire la stringa con addslash

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 © 2024 vBulletin Solutions, Inc. All rights reserved.