2016-04-09 3 views
0

Es gibt 3 Urlswollen erste URL zu verbergen, während URL zu einer dritten URL Umleitung

ich einen Platz eine www.url2.com in in einer Seite von www.url1.com will und leitet es an www.url3 .com (das Skript wird in www.url2.com sein) oder , wenn jemand auf einen Link in www.url1.com klickt - es geht zu www.url2.com und ein PHP-Skript funktioniert und umleitet zu www.url3.

com

Die Website www.url3.com sollte in der Lage zu verfolgen, nicht www.url1.com

www.url3.com nur über www.url2.com wissen sollten hier ist das PHP-Skript. Bitte helfen Sie mir einen Weg zu finden.

Jetzt lege ich einen goo.gl (Links zu www.url2.com) Link in www.url1.com und führt den Benutzer zu www.url2.com und dort führt das Skript Benutzer zu www.url3.com Aber www.url3.com zeigt immer noch die Quell-URL als www.url1.com !!! Es kann die erste URL verfolgen !! Wie ?

<?php 


// change if you wish 
$db = 'urls.sw'; 

// language/style/output variables 
$l_nourl  = '<strong>No URL supplied</strong>'; 
$l_yoururl  = '<strong>Your short url:</strong>'; 
$l_invalidurl = '<strong>Invalid URL supplied.</strong>'; 
$l_createurl = 'Snip!'; 



if(!is_writable($db) || !is_readable($db)) 
{ 
    die('Cannot write or read from file. Pleae CHMOD the url file to 777'); 
} 

$action = trim($_GET['id']); 
$action = (empty($action) || $action == '') ? 'create' : 'redirect'; 

$valid = "^(https?|ftp)\:\/\/([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)[email protected])?[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*(\:[0-9]{2,5})?(\/([a-z0-9+\$_-]\.?)+)*\/?(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?(#[a-z_.-][a-z0-9+\$_.-]*)?\$"; 

if($action == 'create') 
{ 
    if(isset($_POST['create'])) 
    { 
     $url = trim($_POST['url']); 
     if($url == '') 
     { 
      echo $l_nourl; 
     } 
     else 
     { 
      if(eregi($valid, $url)) 
      { 
       $fp = fopen($db, 'a'); 
       fwrite($fp, "{$url}\r\n"); 
       fclose($fp); 
       $id = count(file($db)); 
       $dir = dirname($_SERVER['PHP_SELF']); 
       $snippedurl = "http://{$_SERVER['HTTP_HOST']}{$dir}/$id"; 
       echo "$l_yoururl <a href='$snippedurl'>$snippedurl</a>"; 
      } 
      else 
      { 
       echo $l_invalidurl; 
      } 
     } 
    } 
} 

if($action == 'redirect') 
{ 
    $urls = file($db); 
    $id = trim($_GET['id']); 
    $id = $id - 1; 
    if(isset($urls[$id])) 
    { 
     header("Location: {$urls[$id]}"); 
     exit; 
    } 
} 
?> 
+0

zu bekommen und was ist die aktuelle Ausgabe? – Chay22

+0

@ Chay22 - Jetzt lege ich einen goo.gl (Links zu www.url2.com) Link in www.url1.com und bringt den Benutzer zu www.url2.com und dort führt das Skript Benutzer zu www.url3.com Aber www.url3.com zeigt immer noch die Quell-URL als www.url1.com !!! Es kann die erste URL verfolgen !! Wie ? –

+0

Der Server kann den HTTP-Referrer nicht auf den Client setzen. Ich denke, das Javascript 'location.href' könnte helfen. – Chay22

Antwort

0

Der Server kann keine Referrer auf den Client. Verwenden Sie Javascript statt

ändern

header("Location: {$urls[$id]}"); 

zu

echo "<script>location.href = '".$urls[$id]."';</script>"; 

Anzug sich andere Javascript-Typen Umleitung here

+0

Skript funktioniert nicht, wenn ich es ersetze ... –

+0

@ShijilT Was bedeutet nicht funktioniert? Keine Fehler gegeben? – Chay22

+0

nein, das Skript gibt eine leere Seite zurück –