Obtener enlace actual y mostrarlo en PHP correctamente

  • Autor Autor suenajoven
  • Fecha de inicio Fecha de inicio
S

suenajoven

Épsilon
Hola amigos
tengo una duda sobre como obtener el link acutal
ejemplo
mi web seria
web.com/files/contenido.html
como puedo obtener ese link y mostrarlo dentro como canonical

eh probado algunos codigos que encontre por la red, pero me causa error cuando lo envio por facebook ( comentarios ) ya que esto te devuelve agregando algo de ?fbid144641646.....
y pues quisiera que la web por mas que tenga
web.com/files/contenido.html?fbid264464+.....
siempre muestre como canonical
web.com/files/contenido.html

Aqui coloco el que estoy usando actualmente

PHP:
<?php
function getCurrentUrl(){  
$domain = $_SERVER['HTTP_HOST'];  
$url = "http://" . $domain . $_SERVER['REQUEST_URI'];  
return $url;  
  
}  

?>

<?php
  echo getCurrentUrl();
?>

Espero su ayuda
 
No sé si esto te sirva, en Wordpress como obtengo la dirección en la que está el usuario es:

data-href="<?php the_permalink() ?>"
 
No sé si esto te sirva, en Wordpress como obtengo la dirección en la que está el usuario es:

data-href="<?php the_permalink() ?>"

Gracias amigo pero no es lo que busco. mi web no usa wordpress.
continuo esperando una ayuda.
 
en mii web para el "ME Gusta" uso este code , la url es asi x ejemplo: www.fullsonido.net/rock/bon-jovi/:

PHP:
<iframe src="//www.facebook.com/plugins/like.php?app_id=250599258312911&amp;href=http://www.fullsonido.net<? echo $_SERVER['REQUEST_URI']?>&amp;send=false&amp;layout=standard&amp;width=450&amp;show_faces=true&amp;action=like&amp;colorscheme=light&amp;font&amp;height=35" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:35px;" allowTransparency="true"></iframe></div>
 
Última edición:
en mii web para el "ME Gusta" uso este code , la url es asi x ejemplo: www.fullsonido.net/rock/bon-jovi/:
HTML:
<iframe src="//www.facebook.com/plugins/like.php?app_id=250599258312911&href=http://www.fullsonido.net<? echo $_SERVER['REQUEST_URI']?>&send=false&layout=standard&width=450&show_faces=true&action=like&colorscheme=light&font&height=35" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:35px;" allowTransparency="true"></iframe></div>

yo tambien la uso así, pero eso es lo mismo que la funcion de arriba :/ lo que el quiere es limpiar "?fbid264464+....." o similares a eso
 
toncs talves esto pueda funcionar?

PHP:
$url = str_replace("fbid(.*?)", "",$_REQUEST['URI']);

sino pruebas con preg_replace...
 
Última edición:
Haz algo como esto:
PHP:
<?php

 function get_url()
{
$host = $_SERVER['HTTP_HOST'];
return 'http://'.$host.'/'.basename($_SERVER['REQUEST_URI']);
}

// Just for test
echo get_url();
 
con esta funcion te olvidaras de ese problema revisalo y pruebalo

PHP:
<?php 
function getCurrentUrl(){   
  //atrapa el dominio
  $domain = $_SERVER['HTTP_HOST'];
  //fix: para otras url por ejemplo admin.php?u=jpmaster
  $uri = (stristr('.html?',$_SERVER['REQUEST_URI'])) ? current(explode('?', $_SERVER['REQUEST_URI'])) : $_SERVER['REQUEST_URI'];
  return 'http://'.$domain.$uri;
  
   
}   

?>
 
aun me sigue mostrando lo mismo
al poner que muerte me sale algo como esto
web.com/1.php?u=jpmaster
🙁


con esta funcion te olvidaras de ese problema revisalo y pruebalo

PHP:
<?php 
function getCurrentUrl(){   
  //atrapa el dominio
  $domain = $_SERVER['HTTP_HOST'];
  //fix: para otras url por ejemplo admin.php?u=jpmaster
  $uri = (stristr('.html?',$_SERVER['REQUEST_URI'])) ? current(explode('?', $_SERVER['REQUEST_URI'])) : $_SERVER['REQUEST_URI'];
  return 'http://'.$domain.$uri;
  
   
}   

?>
 
la funcion te la hize pensando en que tenias problemas solo con .html?blablabla

pero si me dices que es para todos las extensiones entonc solamente quitale la comprobación en esta linea

PHP:
stristr('.html?',$_SERVER['REQUEST_URI'])

por esta

PHP:
stristr('?',$_SERVER['REQUEST_URI'])
 
si lo probe y no me funciono 🙁
Probaste con la que te dije?

entonces quedaria asi

PHP:
<?php 
function getCurrentUrl(){   
  //atrapa el dominio
  $domain = $_SERVER['HTTP_HOST'];
  //fix: para otras url por ejemplo admin.php?u=jpmaster
  
  $uri = (stristr('?',$_SERVER['REQUEST_URI'])  ) ? current(explode('?', $_SERVER['REQUEST_URI'])) : $_SERVER['REQUEST_URI'];
  return 'http://'.$domain.$uri;
  
   
}   

?>
<?php 
  echo getCurrentUrl(); 
?>

🙁 pero aun nada 🙁 perdoname si no logro entender
Gracias
la funcion te la hize pensando en que tenias problemas solo con .html?blablabla

pero si me dices que es para todos las extensiones entonc solamente quitale la comprobación en esta linea

PHP:
stristr('.html?',$_SERVER['REQUEST_URI'])

por esta

PHP:
stristr('?',$_SERVER['REQUEST_URI'])
 
haber enseñame la url que deseas verificar
 
Gracias amigo pero acabo de solucionarlo uniendo el codigo que tu me diste
y el de
fabricio
PHP:
$url = str_replace("fbid(.*?)", "",$_REQUEST['URI']);
Solucionado
De igual modo coloco como me quedo
PHP:
function getCurrentUrl(){   
  //atrapa el dominio
  $domain = $_SERVER['HTTP_HOST'];
  //fix: para otras url por ejemplo admin.php?u=jpmaster
  
  $uri = (str_replace("(.*?)", "",$_SERVER['REQUEST_URI'])) ? current(explode('?', $_SERVER['REQUEST_URI'])) : $_SERVER['REQUEST_URI'];
  return 'http://'.$domain.$uri;
  
   
}
haber enseñame la url que deseas verificar
 
esta funcion se va a favoritos, gracias por compartir la solución... lo acabo de probar y funciona de maravilla ^^!
 
q bueno q ya lo hayas solucionado :welcoming:
 
no es por desvirtuar el tema, pero kiero aclarar algo

me parece raro que te funcione, inclusive me causa gracia :welcoming: ya que el codigo proporcionado por fabricio esta mal

PHP:
$url = str_replace("(.*?)", "",$_REQUEST['URI']);

eso no dará ningún resultado, ya que el str_replace no es como el preg_replace que acepta patrones o regex, eh probado esa parte de codigo y no da ningun resultado

ahora lo segundo es que la condicional que hize tal vez detecto un falso positivo es por eso que activo la funcion current(explode)

en fin te explico para que lo entiendas mejor como es el mecanismo

PHP:
//si lanza un true entonc se ejecuta current(explode('?', $_SERVER['REQUEST_URI']))
(falso/positivo) ? current(explode('?', $_SERVER['REQUEST_URI'])) : $_SERVER['REQUEST_URI'];
//la funcion basicamente busca un ? en la cadena y muestra la posicion anterior o actual del arreglo

es como decir esto
PHP:
$test = ($valor == true) ? (mi funcion si es positivo) : (mi funcion si es negativo);

para que entiendan mejor, prueben esto y les funcionara
PHP:
<?php 
function getCurrentUrl(){   
  //atrapa el dominio
  $domain = $_SERVER['HTTP_HOST'];
  $uri = (true) ? current(explode('?', $_SERVER['REQUEST_URI'])) : $_SERVER['REQUEST_URI'];
  return 'http://'.$domain.$uri;
  
   
}   

?>
<?php 
  echo getCurrentUrl(); 
?>

solo aclarar el tema para que entiendan un poco el codigo saludos
 
Última edición:
Atrás
Arriba