Daca aveti fisiere in diferite directoare care include un fisier php ce la randul lui include un alt fisier, o problema poate fi calea de includere ce se schimba cand fisierul e inclus din directoare de nivel diferit.
De exemplu, in aceasta structura de fisiere si directoare:
/
- dir1/
- dir1_2/
level_2.php
level_1.php
config.php
index.php
- "level_1.php" (care e in "dir1/") include "config.php".
- "level_2.php" (in "dir1_2/") include "level_1.php".
- "index.php" (in root "/") include "level_1.php".
Dupa cum puteti observa, "level_1.php" este inclus din directorul radacina (in "index") si din "dir1_2/" (in "level_2").
Daca in 'level_1.php' se include "config.php" folosind:
include('../config.php');
Acest cod nu va functiona cand "level_1.php" e inclus in celelalte fisiere.
Problema e, cum sa fie inclus "config.php" in "level_1.php" astfel incat acest fisier sa poata fi accesat /inclus de oriunde.
Am incercat calea absoluta /intreaga la server, folosind:
dirname(__FILE__) (sau:
__DIR__ ), dar nu a functionat in Windows.
Cautand pe net ca sa gasesc o solutie adecvata la aceasta problema, am gasit urmatorul cod ce obtine
calea relativa la directorul radacina a site-ului ("www/", "public_html/", "httpdocs/"):
$current_path = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME);
$current_host = pathinfo($_SERVER['REMOTE_ADDR'], PATHINFO_BASENAME);
$the_depth = substr_count( $current_path , '/');
// Seteaza calea relativa la radacina
if($current_host == '127.0.0.1') $pathtoroot = str_repeat('../' , $the_depth-1);
else $pathtoroot = str_repeat ('../' , $the_depth);
echo $pathtoroot;
Am pus acest cod intr-o functie ce returneaza calea relativa din orice director curent la radacina, si problema a fost rezolvata folosind aceasta functie ca sa fie inclus "config.php" in "level_1.php", care poate fi accesat de oriunde.
// returneaza calea relativa din directorul curent la radacina
function getRootPath() {
$current_path = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME);
$current_host = pathinfo($_SERVER['REMOTE_ADDR'], PATHINFO_BASENAME);
$the_depth = substr_count( $current_path , '/');
// Seteaza calea relativa la radacina
if($current_host == '127.0.0.1') $pathtoroot = str_repeat('../' , $the_depth-1);
else $pathtoroot = str_repeat ('../' , $the_depth);
return $pathtoroot;
}
// include fisier ce se afla in directorul radacina
include(getRootPath(). 'config.php');
Un Test simplu in fiecare zi
HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag e folosit pentru a adauga liste cu definitii in element <dl>?
<dt> <dd> <li><dl>
<dt>HTML</dt>
<dd> - Hyper Text Markup Language</dd>
<dd> - Limbaj de cod pentru pagini web</dd>
</dl>
Care proprietate CSS poate sa ascunda un element in pagina, lasand spatiu gol in locul lui?
display position visibility#id {
visibility: hidden;
}
Indicati evenimentul declansat cand se apasa clic pe un obiect in pagina.
onclick onmouseover onfocus document.getElementById("id").onclick = function(){
alert("http://www.MarPlo.net/");
}
Indicati variabila PHP ce contine datele din $_GET, $_POST si $_COOKIE.
$_SESSION $_GET $_REQUESTif(isset($_REQUEST["id"])) {
echo $_REQUEST["id"];
}
Care din urmatoarele cuvinte reprezinta un Verb?
lighting believe pathI believe in my path.
- Eu cred in calea mea.
Care din urmatoarele cuvinte reprezinta un Verb?
creer camino iluminaciĆ³ncreer = a crede; camino = cale /drum; iluminaciĆ³n = iluminare