Kom ihåg mig?
Home Menu

Menu


Untiny, eller hur får man reda på den riktiga URLen.

 
Ämnesverktyg Visningsalternativ
Oläst 2010-01-15, 11:01 #1
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Standard Untiny, eller hur får man reda på den riktiga URLen.

Många tjänster så som Twitter använder Tinyurl och liknande tjänster för att skapa kort adresser. Men kan jag via PHP få reda på den riktiga URLen om jag har en kortadress?

Exempelvis http://tiny.pl/htk går till http://www.google.com

En tjänst som gör detta är exempelvis: http://www.untiny.com/ men vill helst inte bli beroende av deras API.
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-01-15, 11:09 #2
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
htk i http://tiny.pl/htk refererar väl till en rad i en databas, antar jag så det går inte att "räkna ut" med hjälp av php på din egen server.

edit: jag tänkte nog inte tillräckligt länge innan mitt svar :P

du vill alltså ha en egen funktion som gör samma som untinys api?

Senast redigerad av allstars den 2010-01-15 klockan 11:11
allstars är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-01-15, 11:22 #3
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Citat:
Ursprungligen postat av allstars Visa inlägg
htk i http://tiny.pl/htk refererar väl till en rad i en databas, antar jag så det går inte att "räkna ut" med hjälp av php på din egen server.

edit: jag tänkte nog inte tillräckligt länge innan mitt svar :P

du vill alltså ha en egen funktion som gör samma som untinys api?
Precis... men jag lyckades Det var lättare än jag trodde.
Här är källkod om någon vill ha:

PHP-kod:
function unTiny($url){
    
$success false;
        
//Hämta och följ eventuell Location
    
do {
        
$header['Location'] = '';
        
$header get_headers($url1);
        if(
$header['Location'] != ''){
            
$url $header['Location'];
            
$success true;
        }
    } while(
$header['Location'] != '');
    
    if(!
$success){
                
//Hittade vi ingen Location testa location
        
do {
        
$header['location'] = '';
        
$header get_headers($url1);
        if(
$header['location'] != ''){
            
$url $header['location'];
            
$success true;
        }
        } while(
$header['location'] != '');
    }
    return 
$url;
}
echo 
unTiny('http://tiny.pl/htk'); //Skriver ut http://www.google.com 
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-01-15, 11:35 #4
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
Citat:
Ursprungligen postat av grinditwp Visa inlägg
Precis... men jag lyckades Det var lättare än jag trodde.
Här är källkod om någon vill ha:
Varför do ... while? Det är väl ingen vits att loopa där.

Och varför köra get_headers() en gång extra om den inte lyckades första gången? $header är ju redan satt och innehållet i den kommer inte bli annorlunda bara för att man kör get_headers() igen.
BjörnJ är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-01-15, 11:56 #5
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Citat:
Ursprungligen postat av BjörnJ Visa inlägg
Varför do ... while? Det är väl ingen vits att loopa där.
Jo, om man vill få reda på den verkliga slutdestinationen. Det är ju tillåtet att köra redirects i flera led.
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-01-15, 15:20 #6
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Citat:
Ursprungligen postat av emilv Visa inlägg
Jo, om man vill få reda på den verkliga slutdestinationen. Det är ju tillåtet att köra redirects i flera led.
Precis. Ibland kan det finnas mer än en redirect.
Visst, majoriteten av alla Tinyurls har antagligen bara en redirect.

Är dock inte säker på hur alla andra liknande tjänster fungerar.

Hur som, det är det enda sättet, jag kan komma på, att vara helt säker på att det är slutdestinationen.
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-01-15, 18:44 #7
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
Citat:
Ursprungligen postat av emilv Visa inlägg
Jo, om man vill få reda på den verkliga slutdestinationen. Det är ju tillåtet att köra redirects i flera led.
Jo, det är sant, men då handlar det ju inte riktigt om untiny längre. Svaret man får fram skulle till och med kunna ses som felaktigt om det har skett ytterligare redirects, beroende på vad man är ute efter.

Om man ska använda det rent informativt är det väl bättre att skriva ut alla steg.

PHP-kod:
// unTiny() avser funktionen i mitt föregående inlägg.
// kanske borde döpas om till chkRedir() eller liknande.
echo $url;
while(
$url=unTiny($url))
  echo 
' -> '.$url

Senast redigerad av BjörnJ den 2010-01-15 klockan 19:03 Anledning: stor bokstav i funktionsnamnet
BjörnJ är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-01-15, 11:40 #8
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
Jag ändrade koden lite (har dock inte testat den):
PHP-kod:
function unTiny($url){
    
$header get_headers($url1);
    if(isset(
$header['Location']))
        return 
$header['Location'];
    if(isset(
$header['location']))
        return 
$header['location'];
    return 
false;
}
echo 
unTiny('http://tiny.pl/htk'); //Skriver ut http://www.google.com 

Senast redigerad av BjörnJ den 2010-01-15 klockan 11:44
BjörnJ är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-01-15, 11:23 #9
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
Man får väl göra en http-request och titta i svaret vilken URL redirect sker till. Eventuellt spara det i en egen databas om man inte vill göra samma request flera gånger. (Om det nu är tillåtet att göra så?)
BjörnJ är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 21:40.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017