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
Ce tag adauga imagine in pagina web?
<div> <img> <span><img src="http://coursesweb.net/imgs/webcourses.gif" width="191" height="63" alt="Courses-Web" />
Care din aceste coduri CSS afiseaza textul inclinat?
font-style: italic; text-decoration: underline; font-weight: 500;#id {
font-style: italic;
}
Clic pe functia jQuery care ascunde animat un element HTML.
click() hide() show()$(document).ready(function() {
$(".a_class").click(function(){ $(this).hide("slow"); });
});
Clic pe functia definita corect in PHP.
fname function() {} function fname() {} function $fname() {};function fname($a, $b) {
echo $a * $b;
}
Indicati forma pentru Prezent Perfect Continuu a verbului "to walk" (a merge).
have walked have been walking be walkingI have been walking for 5 hours.
- Merg pe jos de 5 ore.
Indicati Trecutul Nedefinit pentru verbul "ser" (a fi) la forma Yo.
será sería fuiYo fui entrenador.
- Am fost antrenor.