Newsgroup: it.comp.www.php
Titolo: problema con nome campi con spazi

Ciao a tutti, non riesco ad uscire da un problema di questo tipo.
Ho una funzione ricorsiva che mi crea un campo select (dove ci sono i
diritti per la cartella) per ogni cartella presente in una determinata
cartella (un classico repository). La select ha per nome il nome della
cartella (non possono conoscere a priori quante cartelle e quale nome
hanno). Quando riprendo i nomi delle cartelle dopo un post, dall'array
$_POST, vedo che gli spazi all'interno del nome sono stati convertiti
con il carattere underscore ("_")
Qeusto mi comporta che la select della cartella "Pippo pluto" prenda
come nome "Pippo_pluto" così come la cartella "Pippo_pluto", anche se
sono cartelle diverse sul file system...
Come posso risolvere questo problema???
Ho paura che non ci sia soluzione.... sic
Grazie
Stefano

 
mah, cosě su due piedi farei un md5 o simile del nome cartella...
-- 
doh!

> mah, così su due piedi farei un md5 o simile del nome cartella...
Non credo che possa fare con l'MD5 perchè poi questi valori dal db li
devo recuperare "in chiaro"... estistono delle funzioni che mi cryptano
una stringa (compresi gli spazi) ma che abbiamo anche la rispettiva
funzione di decrypt?
Stefano

 funzione di decrypt?
Libreria mcrypt
Ma non credo sia una soluzione al tuo problema originale (che non ho
capito pienamente).
Bye.

 Ho paura che non ci sia soluzione.... sic
Se non vuoi usare una funzione di hash, puoi provare con:
$nome_indice=array_keys($_POST);
$nome_indice=str_replace(chr(160), " ", $nome_indice);
//160 è il codice di &nbsp;
Nel file originale però dei ricordarti di modificare i nomi che darai 
alla select, con qualcosa del genere:
$str[0]=str_replace(" ", "&nbsp;", $str[0]); //singolarmente o in tutto 
l'array
//sostituisce nel nome della cartella lo spazio con l'entità spazio
vedi un po' che viene! :-)
rob4you

 Bye.
Grazie. Provo a rispiegarti il problema. Ho una pagina dove assegno a
degli utenti dei diritti su delle cartelle. La pagina è fatta in modo
che uno script legga quali cartelle esistono e per ogni cartella mi
mostri una selct con i permessi (scrittura e lettura). Ora, siccome non
posso sapere prima che nome avranno le cartelle e quante saranno,
ricorsivamente creo una select per cartella assegnando al nome della
select il nome della cartella. uando poi vado a salvere i dati sul db e
riprendo i valori delle select, mi sono accorot che se il nome della
cartella contiene spazi (es. "pippo pluto"), il valore che ritrovo
nell'array $_POST è "pippo_pluto" cosa che mi scombina i piani visto
che potrei anche avere una cortella con nome "pippo_pluto"....
Spero di essermi spiegato...
Grazie
Stefano

 
Con la codifica base64, sempre che non ci sia qualche altro carattere a 
dar noia!
http://it.php.net/manual/en/function.base64-decode.php
	Francesco

 Ho paura che non ci sia soluzione.... sic
Avevo del codice simile, ho inserito una select e controllato $_POST, io 
non ho problemi.
Di nuovo, posta il codice.

 che potrei anche avere una cortella con nome "pippo_pluto"....
OK, ho capito.
Quindi tu hai come name di una select il nome della cartella, giusto?
In questo caso e` il browser che non accetta caratteri strani (tipo gli
spazi, che hanno un significato particolare) e li sostituisce.
Posso consigliarti di codificare in vari step i nomi delle cartelle.
Per esempio, nella pagina di creazione della cartella chiedi il nome, lo
passi allo script php che crea la cartella, genera un hash del nome e lo
mette in sessione. A questo punto passi al form seguente (quello di
gestione dei permessi) l'hash come name della select, e quando ti tornano
i permessi riprendi il nome della cartella dalla sessione.
Qualcosa tipo
---- pagina1.html ----
<form action="pag1.php"><input type="text" name="nomecartella" /></form>
---- pag1.php ----
<?php
 $hash = md5($_POST["nomecartella"]);
 $cartelle = array();
 $cartelle[$hash] = $_POST["nomecartella"];
 $_SESSION["cartelle"] = $cartelle;
 mkdir $_POST["nomecartella"];
?>
<form action="pag2.php">
  Seleziona i permessi per <?php print $_POST["nomecartella"]; ?>
 <select name="<?php print $hash; ?>">
  <option ...>
 </select>
</form>
---- pag2.php ----
<?php
 foreach($_SESSION["cartelle"] as $hash => $cartella) {
  if ($_POST[$hash]) {
   chmod ($cartella, $_POST["hash"]);
  }
 }
?>
O qualcosa del genere. Naturalmente devi codificare i permessi,
verificarli, ecc.
Bye.