2010-07-12 19 views
5

Esiste un modo in cui è possibile visualizzare una posizione dei collegamenti assolutamente quando la riferimento solo relativamente.Visualizzazione di una posizione assoluta dei collegamenti

I.e. Un file è relativamente riferimento come ...

<a href='../../files/uploaded_file.jpg'>Your Uploaded File</a> 

ma vorrei anche per visualizzare un testo dicendo ...

You can link to your file via www.example.com/files/uploaded_file.jpg 

La cattura essendo non voglio dichiarare esplicitamente quello che il dominio è, poiché lo script verrà utilizzato su una varietà di domini diversi senza la necessità di modificare lo script.

Fondamentalmente voglio in qualche modo echo il testo che vedi nella barra di stato di firefox quando passi il mouse su un link.

risposta

1

Fare un:

var_dump ($ _ SERVER);

e vedrete su quale si può contare come l'URL del dominio.

0

Se un collegamento è relativo, è possibile prefixarlo con il percorso host + corrente in PHP. Dovresti formattare il percorso per risolvere le parti relative dell'URL come /../, un semplice ciclo farebbe questo.

1
<a href="<?php echo 'http://'.$_SERVER['HTTP_HOST'] . '/files/uploaded_file.jpg'; ?>">Your file</a> 
1

Supponendo che la pagina che contiene il codice di esempio sia due directory profonde rispetto alla radice del sito, ad es.

http://www.example.com/one/two/example-page.php 

allora si potrebbe fare questo:

<a href='http://<?php echo htmlentities($_SERVER['SERVER_NAME'], ENT_QUOTES)?>/files/uploaded_file.jpg'>Your Uploaded File</a> 

Se questa ipotesi è sbagliata ei file sono memorizzati in una directory che è almeno una directory più profonda della radice per esempio

http: //www.example.com/content/files/uploaded_file.jpg 

quindi devi lavorare un po 'di più per ottenere l'url assoluto.

<?php 
$FilesystemPath = str_replace("\\", "/", realpath(dirname(__FILE__) . "/../../files/")) . "/uploaded_file.jpg"; 
$DocRoot = $_SERVER['DOCUMENT_ROOT']; 
$Uri = str_replace($DocRoot, '', $FilesystemPath); 
?> 
<a href='http://<?php echo htmlentities($_SERVER['SERVER_NAME'] . $Uri, ENT_QUOTES)?>'>Your Uploaded File</a> 

Questo esempio presuppone che si sa che la directory dei file è nella directory che è due directory su dal directory della pagina.

Tutti questi esempi presuppongono una mappatura uno a uno delle directory sul file system e non è in corso la riscrittura dell'url. Suppongo anche che stai usando semplicemente http e non https. Se vuoi presentare i collegamenti nello stesso protocollo di quello in cui viene pubblicata la pagina, allora questa è una domanda separata.

Problemi correlati