phppathdirnamerealpath

How to grab url path to file in php


For sending a link to a email (confirming subscription). i need the path to the file subscribe.php. On my webserver, the file subscribe.php is in the webroot. External access will be: http://newsletter.mydomain.com/subscribe.php

This is the link in subscribe.php which i send to the user by email:

$mail->Body = '<a href="'.$subscribe_path.'subscribe.php?name='.urlencode(base64_encode($name)).'&email='.urlencode(base64_encode($email)).'">Confirm your email</a>';  

At this moment i use this:

$subscribe_path = 'http://newsletter/mydomain.com/'

How can i grab the path more generally? i tried:

$subscribe_path = dirname(__FILE__).'/'; 

but that produces something like /home/vhosts/mydomain.com/subdomains/newsletter/httpdocs/


Solution

  • In file subscribe.php put var below:

      $subscribe_path = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[PHP_SELF]";
    

    When you echo $subscribe_path it will output: http://newsletter.mydomain.com/subscribe.php

    Lets say you have subscribe.php in a subfolder, named subfolder, it will output:

    http://newsletter.mydomain.com/subfolder/subscribe.php

    The link in the email:

    $mail->Body = '<a href="'.$subscribe_path.'?name='.urlencode(base64_encode($name)).'&email='.urlencode(base64_encode($email)).'">Confirm your email</a>';