Adding CSS using function in PHP

490 views Asked by At

I was try to add CSS file to my html file using statistic function like this:

      public static function addCSS($file){
         $cssPath = $_SERVER['DOCUMENT_ROOT']. DIRECTORY_SEPARATOR. 'new'. 
         DIRECTORY_SEPARATOR. 'css/'.$file;
           return file_exists($cssPath) ? "
   <link rel=\"stylesheet\" href=\"$cssPath\" type=\"text/css\" 
    media=\"screen\" charset=\"utf-8\" />
    " : "CSS File not found";
        }

but it doesn't work as i expected. i want it to produce the CSSPath like "http:localhost/new/css/admin.css when I'm called using General::addCSS('admin.css'); but all i got is address like this which make me fail to include: C:/xampp/htdocs\new\css/admin.css. how can i fix this addressing?

4

There are 4 answers

0
M H On BEST ANSWER

You are using xampp, so the document root path will be from that "Server". Thats why the path is wrong. you will need to exclusively specify what path you want, until you move to your server.

Also, if you are using a shared hosting plan, document root will not work most of the time. Set up a Constant with the server root path so that you can use it just like you use DOCUMENT_ROOT.

     //Create root path
     define('ROOT', 'something/anotherthing/public_html');

     public static function addCSS($file){
     //use root path everywhere instead of document_root
     $cssPath = ROOT . DIRECTORY_SEPARATOR. 'new'. 
     DIRECTORY_SEPARATOR. 'css/'.$file;
       return file_exists($cssPath) ? "
     <link rel=\"stylesheet\" href=\"$cssPath\" type=\"text/css\" media=\"screen\" charset=\"utf-8\" />
     " : "CSS File not found";
    }
0
Kiran Dash On

$_SERVER['DOCUMENT_ROOT'], returns just that, a path to a directory and not a URL. If you want the URL to your site, try using:

"http://{$HTTP_HOST}{$REQUEST_URI}"

So, in your case it will be:

$REQUEST_URI= 'css/admin.css'

$cssPath = "http://{$HTTP_HOST}{$REQUEST_URI}";
1
KevinChappell On

You cannot use $_SERVER['DOCUMENT_ROOT'] for $cssPath because it will be a system filepath, you need a url. If you really want to implement this feature this way try:

public static function addCSS( $file ){
    $css_dir =  DS . 'new'. DS . 'css'. DS;
    $css_file = $_SERVER['SERVER_NAME'] . $css_dir . $file;
    $css_file_path = $_SERVER['DOCUMENT_ROOT'] . $css_dir . $file;
    return file_exists( $css_file_path ) ? '<link rel="stylesheet" href="'.$css_file.'" type="text/css" media="screen" />' : false;
}

My advice however is to reconsider your approach to the problem.

2
Manoj Dhiman On

DOCUMENT_ROOT will return simply the document path , But to include css you need an absolute or relative urls.You can try with $_SERVER['HTTP_HOST']

public static function addCSS( $file ){
    $css_dir =  DS . 'new'. DS . 'css'. DS;
    $css_file = 'http://'.$_SERVER['HTTP_HOST'] . $css_dir . $file;
    $css_file_path = $_SERVER['DOCUMENT_ROOT'] . $css_dir . $file;
    return file_exists( $css_file_path ) ? '<link rel="stylesheet" href="'.$css_file.'" type="text/css" media="screen" />' : false;
}