Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Leguim en 12 Septiembre 2019, 02:59 am



Título: [Resuelto] [Pregunta]: ¿Como puedo realizar esto?
Publicado por: Leguim en 12 Septiembre 2019, 02:59 am
Buenas noches.

Me gustaría saber como puedo obtener el nombre del archivo php que se esta ejecutado, es decir si yo estoy en index.php quisiera que me muestre en pantalla "index", puedo hacerlo usando esto de php "$_SERVER['PHP_SELF']" pero muestra toda una ruta, cuando yo solamente necesito obtener el nombre del archivo y además de que no tenga el .php o .html. Esto lo pude hacer con javascript. (Lo vi en algun post)

Código
  1. var page = location.pathname;
  2. page_name = page_name.replace(/^.*[\\\/]/, '');
  3. page_name = page_name.replace('.', '');
  4. page_name = page_name.replace('.html', '');
  5. page_name = page_name.replace('.php', '');
  6.  

Pero me gustaría hacer algo igual pero con PHP, busque en el navegador pero no me sirven me dan errores (seguramente porque son temas desde el 2003 a el 2011 que pude ver)



Mod: Temas sobre PHP van al subforo de PHP:


Título: Re: [Pregunta]: ¿Como puedo realizar esto?
Publicado por: engel lex en 12 Septiembre 2019, 03:30 am
teoricamente
Código:
__FILE__
es una constante que contiene el nombre del script sin extensión


Título: Re: [Pregunta]: ¿Como puedo realizar esto?
Publicado por: Leguim en 12 Septiembre 2019, 04:00 am
teoricamente
Código:
__FILE__
es una constante que contiene el nombre del script sin extensión

C:\xampp\htdocs\aplication\ajax\test2.php

Me devolvió una ruta muy extensa.


Título: Re: [Pregunta]: ¿Como puedo realizar esto?
Publicado por: engel lex en 12 Septiembre 2019, 04:10 am
entonces e el string busca el ultimo / y el ultimo punto, alli está tu informacion :P


Título: Re: [Pregunta]: ¿Como puedo realizar esto?
Publicado por: @XSStringManolo en 12 Septiembre 2019, 04:21 am
Si el nombre de la página se lo das con la etiqueta <title> yo lo haría así:
Yo usaría un for. Es poco ortodoxo pero funciona.
Código
  1. $CodigoFuente = strtolower($CodigoFuente);
  2. for ($i = 0; $i < $CodigoFuenteTamaño; ++$i)
  3.    {
  4.        if ($CodigoFuente[$i] == '<' && $CodigoFuente[1+$i] == 't' && $CodigoFuente[2+$i] == 'i' && $CodigoFuente[3+$i] == 't' && $CodigoFuente[4+$i] == 'l' && $CodigoFuente[5+$i] == 'e' && $CodigoFuente[6+$i] == '>' )
  5.        {
  6.            while ($CodigoFuente[7+$i] != '<'  && $CodigoFuente[8+$i] != '/')
  7.            {
  8.             $TituloPagina=$TituloPagina.$CodigoFuente[7+$i];
  9.            ++$i;
  10.             }
  11.        }
  12.   }


Título: Re: [Pregunta]: ¿Como puedo realizar esto?
Publicado por: Leguim en 12 Septiembre 2019, 04:36 am
Claro el tema es por eso digamos lo que nose bien es digamos tengo la url esa nose... xampp/htdocs/aplication/ajax/test.php

Con una función PHP que no se como poder usarlas el xampp/ se vaya, el htdocs/ se vaya, el /aplication y el /ajax/ se vayan quedando así test.php y sacar el .php y quede test por supuesto se debe de usar preg_match o str_replace intente hacerlo así pero me daba errores o directamente no me aparecía nada...

Me imagino que debe de ser una función similar a las que se usa en el código de javascript que pase  :huh: pero no entiendo hacer eso con php..


Título: Re: [Pregunta]: ¿Como puedo realizar esto?
Publicado por: MinusFour en 12 Septiembre 2019, 04:37 am
¿Como estás pensando trabajar esto? Porque como yo lo veo, si estás editando el archivo index.php tu sabes que el archivo se llama index.

Código
  1. basename($_SERVER['SCRIPT_FILENAME'], '.php');

$_SERVER['SCRIPT_FILENAME'] te regresa la ruta al archivo inicial mientras que __FILE__ te regresa la ruta del archivo donde este.


Título: Re: [Pregunta]: ¿Como puedo realizar esto?
Publicado por: Leguim en 12 Septiembre 2019, 04:41 am
¿Como estás pensando trabajar esto? Porque como yo lo veo, si estás editando el archivo index.php tu sabes que el archivo se llama index.

Código
  1. basename($_SERVER['SCRIPT_FILENAME'], '.php');

$_SERVER['SCRIPT_FILENAME'] te regresa la ruta al archivo inicial mientras que __FILE__ te regresa la ruta del archivo donde este.

Ese código me sirvió, gracias a los 3!


Título: Re: [Pregunta]: ¿Como puedo realizar esto?
Publicado por: @XSStringManolo en 12 Septiembre 2019, 04:53 am
Si te interesa por algún motivo hacerlo con javascript puedes hacer:
var Titulo = document.title;
O puedes cambiar el título con:
document.title = "Nuevo Titulo";

Aquí más cosas relacionadas que puedes obtener:
 https://www.w3schools.com/js/js_window_location.asp

Por cierto lo que te comenta Engel puede fallar por varios motivos.
 https://benohead.com/getting-a-file-extension-with-javascript/

Pillas la extensión como en este Tuto si la hay. Si hay extensión eliminas la cadena obtenida del nombre del archivo al completo. También le quitas la ruta de la misma forma que en el tuto y ya te queda solo el nombre del archivo.


Título: Re: [Pregunta]: ¿Como puedo realizar esto?
Publicado por: Leguim en 12 Septiembre 2019, 05:10 am
Si te interesa por algún motivo hacerlo con javascript puedes hacer:
var Titulo = document.title;
O puedes cambiar el título con:
document.title = "Nuevo Titulo";

Aquí más cosas relacionadas que puedes obtener:
 https://www.w3schools.com/js/js_window_location.asp

Por cierto lo que te comenta Engel puede fallar por varios motivos.
 https://benohead.com/getting-a-file-extension-with-javascript/

Pillas la extensión como en este Tuto si la hay. Si hay extensión eliminas la cadena obtenida del nombre del archivo al completo. También le quitas la ruta de la misma forma que en el tuto y ya te queda solo el nombre del archivo.

¡Gracias! Si igual con javascript ya lo había hecho, pero necesitaba hacerlo con PHP

javascript
Código
  1. var page = location.pathname;
  2. page_name = page_name.replace(/^.*[\\\/]/, '');
  3. page_name = page_name.replace('.', '');
  4. page_name = page_name.replace('.html', '');
  5. page_name = page_name.replace('.php', '');
  6.  


Título: Re: [Resuelto] [Pregunta]: ¿Como puedo realizar esto?
Publicado por: sirefys en 25 Abril 2020, 05:27 am
Yo hice esto hace unos meses para dar solucion a este problema llamando a index.php?url=... aqui te dejo el codigo....
Código
  1. <?php
  2.  
  3. class Router {
  4.  
  5.    private $ruta;
  6.  
  7.    public function get_ruta($ruta) {
  8.        $this->ruta = $ruta;
  9.        switch ($this->ruta) {
  10.            case 'home':
  11.                //Incluimos el controlador...
  12.                include_once './app/controllers/Home.php';
  13.                break;
  14.            default:
  15.                //Incluimos el controlador...
  16.                include_once './app/controllers/Home.php';
  17.                break;
  18.        }
  19.    }
  20.  
  21. }
  22.  
  23. //Definimos que exista una URL valida...
  24. if (isset($_GET['url'])) {
  25.    //Asignamos el valor a una variable...
  26.    $Get_url = explode('/', $_GET['url']);
  27.    //Definimos la url base...
  28.    $url = $Get_url[0];
  29.    //Inicilizamos el objeto de la clase Ruta...
  30.    $ruta = new Router();
  31.    $ruta->get_ruta($url);
  32. } else {
  33.    //Redireccionamos a la pagina inicial...
  34.    header("Location: " . BASE_URL . "home/");
  35. }
  36. ?>
  37.  
  38.