- Home
- Categorie
- Coding e Sistemistica
- PHP
- path applicazione
-
define('path1', './cartella1');
define('path2', './cartella2');
...
define('pathN', './cartellaN');oppure usi le sessioni:
session_start();
$_SESSION['paths'] = array(
'path1'=>'./cartella1/',
'path2'=>'./cartella2/',
...
'pathN'=>'./cartellaN/',
);Spero di aver capito cosa ti serviva, sennò spiega meglio il problema, magari postando anche qualche parte del codice.
-
Grazie
in pratica definisco nel programma principale la define path e questa la vedranno tutti programmi che aprirò ?
mi fai sapere
Grazie
-
Ciao e grazie per avermi risposto.
quidni se ho ben capito basterà scrivere nel programma iniziale questo :
define('path1', './cartella1');e quindi il programma cercherà l'oggetto nella cartella1 ?
In pratica se una cartella radice e tante sotto cartelle,
cartella1
--------- cartella2
cartella3------------cartella4e richiamo ad esempio da un html pippo.php deve cercare pippo.php fino a trovarlo.
Grazie in anticipo
-
Forse non ho capito bene il tuo problema. Prova a spiegarmi con un esempio o copiando/incollando il codice da correggere/modificare. Se il tuo obiettivo è fare una ricerca di un file non sapendo dove si trova, puoi crearti una funzione ricorsiva che entra nelle varie sottocartelle fino a trovare il file. Se è questo il tuo problema, confermamelo e ti scrivo io la funzione...
-
Ciao si confermo, quando viene richiamato un pippo.php deve percorrere tutte le cartelle fino a trovarlo.
In pratica ho creato una cartella radice del progetto chiamata cartella_1
cartella_1
poi ho creato una cartella di nome tabelle , dove ho messo tutti i .php dei programmi che riguardano le tabelle.
poi ho creato una cartella di nome applicazione1 dove ho messo tutti i .php dell'applicazione 1
Ora dal menu richiamo i diversi php quindi deve cercarli fino a trovarli.
Grazie
-
Uhm, bruttina come cosa. Lenta soprattutto. Io provo a buttarti giù la funzione, magari controllala tu e vedi s'è corretta:
[php] function find_file_in_dir($dirname, $file_name){
if (!file_exists('./'.$dir_name.'/'.$file_name)) {
$internal_dirs = scandir($dir_name);
foreach ($internal_dirs AS $key => $internal_name) {
if (is_dir('./'.$dir_name.'/'.$internal_name) && '.' != $internal_name && '..' != $internal_name) {
if (file_exists('./'.$dir_name.'/'.$internal_name.'/'.$file_name)) {
// IL FILE E' IN QUESTA DIR. VEDI TU SE TI BASTA TORNARE TRUE O SE VUOI TORNARE IL PERCORSO AL FILE CON return './'.$dir_name.'/'.$internal_name.'/'.$file_name;
}
}
}
return false;
}
} else {
//IL FILE E' NELLA CARTELLA "RADICE" (return './'$dir_name.'/'.$file_name;)
}
}[/php]Per usarla basta che la chiami così:
[php]
if ($percorso_completo_al_file = find_file_in_dir('cartellaradice', 'nome_del_file.php')) {
echo("File trovato in:".$percorso_completo_al_file);
} else {
echo("File non trovato.");
}
[/php]Ci potrebbero essere errori perchè l'ho scritta al volo adesso. Controllala bene tu, comunque il principio è quello.
-
Ciao Matteo , grazie della tua buona volontà, proverò la funzione.
ma scusa , una domanda, ma nativamente in php non si può definire una path, con il percorso delle cartelle ?
-
Ciao Matteo questo è il codice che sto provando.
<?php
define('path1', './init');
include "path1/testa.php";
include "c1_anazi_pag_1.php";
//include "piede.php";?>
sto provando "define" da te inizialmente suggerito.
in pratica devo richiamare testa.php che si trova nella cartella init iniziale.
-
@pdecaro said:
Ciao Matteo questo è il codice che sto provando.
<?php
define('path1', './init');
include "path1/testa.php";
include "c1_anazi_pag_1.php";
//include "piede.php";?>
sto provando "define" da te inizialmente suggerito.
in pratica devo richiamare testa.php che si trova nella cartella init iniziale.
Se vuoi fare cosi devi scrivere:
include path1.'/testa.php';Mi raccomando, path1 senza dollari o virgolette. Scrivilo così com'è. I define funzionano così.
Ciao!
-
scusa Matteo sono entrato nuovamente nel problema in oggetto.
dopo avere definito la path, ho provato cosi , ma non funziona ?
programma ?
<?php
define('path1', './init');
include "path1/testa.php";?>
In alternativa sto provando la tua function, ma non funziona lo stesso ?
Mi potresti aiutare.
Grazie
-
Ciao Matteo sto usando la tua funzione ma mi genera questo errore .
Puoi darci un'occhiata . Grazie
Warning: scandir() [function.scandir]: (errno 2): No such file or directory in C:\Programmi\xampp\htdocs\cercatrova\trova.php on line 9Warning: Invalid argument supplied for foreach() in C:\Programmi\xampp\htdocs\cercatrova\trova.php on line 10
File non trovato.Ti allego il sorgente
<?
function find_file_in_dir($dirname, $file_name){
if (!file_exists('./'.$dir_name.'/'.$file_name)) {
$internal_dirs = scandir($dir_name);
foreach ($internal_dirs AS $key => $internal_name) {
if (is_dir('./'.$dir_name.'/'.$internal_name) && '.' != $internal_name && '..' != $internal_name) {if (file_exists('./'.$dir_name.'/'.$internal_name.'/'.$file_name)) {
// IL FILE E' IN QUESTA DIR. VEDI TU SE TI BASTA TORNARE TRUE O SE VUOI TORNARE IL PERCORSO AL FILE CON return './'.$dir_name.'/'.$internal_name.'/'.$file_name;
}} return false;
}
} else {
echo "IL FILE E NELLA CARTELLA RADICE (return './'$dir_name.'/'.$file_name;) ";
}
}?>
questo invece è il programma chiamante.
<?
include "trova.php";if ($percorso_completo_al_file = find_file_in_dir('cedolino', 'azcon_add_0.php')) {
echo("File trovato in:".$percorso_completo_al_file);
} else {
echo("File non trovato.");
}
?>