Foros del Web » Programando para Internet » PHP »

De index.php?id=2 a index/2

Estas en el tema de De index.php?id=2 a index/2 en el foro de PHP en Foros del Web. Hola. Basados en el FAQ web modulares ¿Se puede hacer que una dirección: index.php?id=2 se pase a un modo: index/2 o algo más indexable? Para ...

  #1 (permalink)  
Antiguo 17/10/2003, 18:41
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
De index.php?id=2 a index/2

Hola.

Basados en el FAQ web modulares
¿Se puede hacer que una dirección:

index.php?id=2

se pase a un modo:

index/2

o algo más indexable? Para los motores de búsqueda.


Última edición por Rafael; 17/10/2003 a las 18:43
  #2 (permalink)  
Antiguo 17/10/2003, 20:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si .. pero la solución más trasnparente para ti (y tu programación) pasa por usar el módulo mod_rewrite por ejemplo de Apache.

Ese módulo instalado en tu servidor HTTP (Apache en este caso) convierte links (previa configuración) del tipo algo.php?id=1 a una estructura más "digerible" por los robots indenxadores ...

Puedes ver un artículo de nuestro compañero Nok al respecto en:

http://www.zonaphp.com/index.php?mod...ion=leer&id=30

Un saludo,

PD: Existe una alternativa vía codigo PHP .. pero ahora no recuerdo como o donde .. Si alguien sabe .. ya sabe (valga la rebundancia xD)
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 18/10/2003, 10:09
Avatar de philipppe  
Fecha de Ingreso: marzo-2002
Ubicación: Uruguay
Mensajes: 706
Antigüedad: 22 años
Puntos: 0
nadie sabe? a mí también me interesa
__________________
Plugin de AdSense para Wordpress: http://adsensei.org
  #4 (permalink)  
Antiguo 18/10/2003, 10:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
philippe .. ¿pero leistes el artículo que dejé sobre el uso de mod_rewrite? ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 18/10/2003, 11:10
Avatar de philipppe  
Fecha de Ingreso: marzo-2002
Ubicación: Uruguay
Mensajes: 706
Antigüedad: 22 años
Puntos: 0
ahora que me doy cuenta, no es exactamente lo que quería... estoy buscando un sistema de includes pero que en ves de números, se haga con palabras. Porque los números son más aplicables a artículos y no a secciones de un sitio...
__________________
Plugin de AdSense para Wordpress: http://adsensei.org
  #6 (permalink)  
Antiguo 18/10/2003, 12:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues entonces que problema tienes?

el "nº" o palabra sólo es el identificador que vas a usar para llamar a tu "include" .. ya sea una consulta a tu BD .. o una simple llamada al archivo que corresponda ... (ese concepto hay que tenerlo claro)

Si tu haces:


index.php
Código PHP:
<?
include($seccion."php");
?>
Y lo llamas con

Código PHP:
index.php?seccion=nose 
llamaras en ese include a nose.php .. así que formará parte de tu index.php ..

asi de simple .. (es muy básico ..le falta validaciones y algo más pero es para que veas la técnica básica ..)

Y si esa referencia lo haces a un registro de tu BD .. usa

SELECT * FROM tabla WHERE nombre_seccion='$seccion'

en lugar del típico ID .. Que por otro lado es más optimo ese tipo de consultas por un campo indexado (como suele ser el "ID" de un campo unico y autoincremental) que nó buscar en un campo alfanumérico (varchar) como podría ser el "nombre de la sección" (bueno, puedes indexarlo también ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 18/10/2003, 13:42
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Cluster, hay que leer los articulos completos. El articulo de Nok en zonaphp habla de tres metodos:

- El mod_rewrite.

- El de forcetype y luego leyendo las variables con REQUEST_URI.

- Y el de la pagina de error 404.

Los 3 requieren cambiar algo de la configuracion de Apache.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 18/10/2003, 19:26
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Ya le heché un ojo, pero no le entendí mucho que digamos.
Aprendí Html y vi que no era suficiente, luego css y tampoco, JavaScript y luego php, y ahora a configurar el Apache...


Bueno a estudiarle un poco. Gracias.
  #9 (permalink)  
Antiguo 18/10/2003, 20:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ah! ok josemi ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 19/10/2003, 09:17
Avatar de philipppe  
Fecha de Ingreso: marzo-2002
Ubicación: Uruguay
Mensajes: 706
Antigüedad: 22 años
Puntos: 0
Includes simples sé (casi lo único), lo que deseo es adaptar el código de las faqs
Código PHP:
<?
$id
=$_GET['clic'];

switch (
$id) {
   case 
1:
       include(
"chistes.inc.php");
       break;
   case 
2:
       include(
"curiosidades.inc.php");
       break;
       
   default:
       include(
"main.inc.php"); 
// estado default .. nos determina el estado 
// "si no es ninguna opcion de las anteriores".

?>
que en vez de números se puedan utilzar palabras...

me explico? Gracias
__________________
Plugin de AdSense para Wordpress: http://adsensei.org
  #11 (permalink)  
Antiguo 19/10/2003, 11:26
Nok
 
Fecha de Ingreso: abril-2001
Mensajes: 302
Antigüedad: 23 años
Puntos: 0
Código PHP:
<?
$id
=$_GET['clic'];

switch (
$id) {
   case 
'chistes':
       include(
"chistes.inc.php");
       break;
   case 
'curiosidades':
       include(
"curiosidades.inc.php");
       break;
       
   default:
       include(
"main.inc.php"); 
// estado default .. nos determina el estado 
// "si no es ninguna opcion de las anteriores".

?>
Nada mas sencillo que eso.

Saludos.
Nok.
__________________
La casa de Noktemplate.
Zonaphp.com - Php en español.

¿Que esperas de NokTpl 2? Deja tu comentario.

Blog
Mas o menos asi .
  #12 (permalink)  
Antiguo 19/10/2003, 12:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y más simple:

Código PHP:
<?
include($_GET['click'].".inc.php");
?>
El único problema es que si no existe la página a incluir .. se mandará un error PHP de no que no encuentra el archivo .. Para eso, se pueden tener los nombres de tus páginas que puedes incluir en un array y hacer un if (in_array()) antes de atacar este include() que propongo ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 19/10/2003, 13:52
Avatar de philipppe  
Fecha de Ingreso: marzo-2002
Ubicación: Uruguay
Mensajes: 706
Antigüedad: 22 años
Puntos: 0
Muchísisimas gracias!!
Eternamente agradecidos a todos. Funcionó perfectamente. Gracias.
__________________
Plugin de AdSense para Wordpress: http://adsensei.org
  #14 (permalink)  
Antiguo 19/10/2003, 18:30
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Realmente la solución que ofrece Cluster es un poco riesgosa ya que representa un agujero de seguridad. Estos dias estoy por publicar un tutorial sobre como realizar Webs Modulares que estará disponible en ZonaPHP y que resuelve este y otros tipos de problemas.

Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #15 (permalink)  
Antiguo 19/10/2003, 19:00
Avatar de philipppe  
Fecha de Ingreso: marzo-2002
Ubicación: Uruguay
Mensajes: 706
Antigüedad: 22 años
Puntos: 0
ok, webstudio, en unos días me doy una vuelta por ahí
__________________
Plugin de AdSense para Wordpress: http://adsensei.org
  #16 (permalink)  
Antiguo 19/10/2003, 22:04
Avatar de philipppe  
Fecha de Ingreso: marzo-2002
Ubicación: Uruguay
Mensajes: 706
Antigüedad: 22 años
Puntos: 0
Y si un enlace en particular, en vez que sea include, lo quiero como un enlace normal?
es decir, quiero que siga lo de ?id=nosequé, pero el enlace no sea include, supongo que debe ser simple, debe ser poniendo algo en vez de include, pero no sé qué, alguien sabe?
Gracias.
__________________
Plugin de AdSense para Wordpress: http://adsensei.org
  #17 (permalink)  
Antiguo 19/10/2003, 22:43
 
Fecha de Ingreso: octubre-2003
Mensajes: 32
Antigüedad: 20 años, 6 meses
Puntos: 0
Si te entendí bien, quieres que solo aparezca tusitio.com/pagina.php?tal=cualquierocosa, pero que no afecte en nada? osea, como 'adorno'?

Si es así solo ponlo y ya, no afecta en nada, siempre y cuando la variable no exista en el script o no afecte en el funcionamiento de este.


amhyd
  #18 (permalink)  
Antiguo 19/10/2003, 23:14
Avatar de philipppe  
Fecha de Ingreso: marzo-2002
Ubicación: Uruguay
Mensajes: 706
Antigüedad: 22 años
Puntos: 0
Creo que no me expliqué bien, lo que quiero es que dentro del script antes publicado para colocar

misito.com/index.php?sec=chistes

que coloca la página asignada a 'chistes' en un include. Quiero que la dirección sea, por ejemplo

misitio.com/index.php?sec=libro

y que me lleve a libro.php, pero que no lo incluya.

Espero haberme explicado mejor
__________________
Plugin de AdSense para Wordpress: http://adsensei.org
  #19 (permalink)  
Antiguo 20/10/2003, 01:00
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Si no es un include, lo que necesitas es una redireccion. Lo puedes hacer con header() (www.php.net/header), siempre que no saques antes nada por el navegador. Algo asi:
Código PHP:
$URL=(array_key_exists($_GET['sec'],$secciones))?$secciones[$_GET['sec']]:'default.php';
header("Location: $URL");
exit; 
En $secciones tienes un array asociativo cuyas claves son los valores que pasas por la URL para seleccionar la seccion, y los valores las URLs a donde redireccionar.

Eso si, tal como esta, no se le pasa ningun parametro ni GET ni POST a la URL redireccionada. Con los GET seria facil, simplemente añadirselos a $URL. Pero para los POST podrias intentar lo que comento en este otro mensaje: http://www.forosdelweb.com/s/msg159122.html . Resumiendolo seria mandar una cabecera de estado distinta a la que envia con header("Location"):
Código PHP:
$URL=(array_key_exists($_GET['sec'],$secciones))?$secciones[$_GET['sec']]:'default.php';
header("HTTP/1.1 307 Temporary Redirect");
header("Location: $URL");
exit; 
Eso si, tiene el problema del mensaje que sacan algunos navegadores.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #20 (permalink)  
Antiguo 20/10/2003, 06:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Mensaje Original por Webstudio
Realmente la solución que ofrece Cluster es un poco riesgosa ya que representa un agujero de seguridad. Estos dias estoy por publicar un tutorial sobre como realizar Webs Modulares que estará disponible en ZonaPHP y que resuelve este y otros tipos de problemas.

Saludos.
Si, el código que puse tal cual lo es ..pero por eso hice el comentario pertinente:

Cita:
El único problema es que si no existe la página a incluir .. se mandará un error PHP de no que no encuentra el archivo .. Para eso, se pueden tener los nombres de tus páginas que puedes incluir en un array y hacer un if (in_array()) antes de atacar este include() que propongo ..
En lugar de los swith() .. usar un array con los nombres de las páginas y verificar que el nombre de página solicitado esté en nuestro array ..

Un saludo,

Última edición por Cluster; 20/10/2003 a las 06:26
  #21 (permalink)  
Antiguo 20/10/2003, 07:59
Avatar de philipppe  
Fecha de Ingreso: marzo-2002
Ubicación: Uruguay
Mensajes: 706
Antigüedad: 22 años
Puntos: 0
Gracias, pero la verdad es que me compliqué, debe haber una forma más sencilla que se pueda incluir dentro del mismo script anterior de los includes, ¿no? si no es así disculpen, porque me parece raro que sea tan difícil, yo no quiero enviar información de una página a otra, lo único que quiero es esto:

http://www.mipagina.com/?sec=libro
te lleve a
http://www.mipagina.com/libro.php

quiero que me lleve, simplemente, que no siga con la misma estructura...
se puede?

Gracias.
__________________
Plugin de AdSense para Wordpress: http://adsensei.org
  #22 (permalink)  
Antiguo 20/10/2003, 08:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si es sólo "redireccionar" según el valor de tu variable sec .. y siendo el nombre de la página el mismo que usas en tu sec+.php .. sería:

index.php
Código PHP:
<?
header
("location: ".$_GET['sec'].".php");
exit;
?>
Sin más html por médio .. sólo eso.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #23 (permalink)  
Antiguo 20/10/2003, 08:11
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Veamos, ¿has probado con lo que puse del header("Location") (la primera que puse, con un solo header())? Porque creo que lo unico que quieres es una redireccion.

Lo pruebas y miras si te sirve.

Saludos.

PD: Tambien puedes quitar todo el lio del array y poner simplemente:
Código PHP:
header("Location: {$_GET['sec']}.php");
exit; 
para ir a la pagina que pasas por parametro finalizado en .php.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #24 (permalink)  
Antiguo 20/10/2003, 08:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
jeje Josemi .. chocamos xD con la misma respuesta en el mismo minuto xDD

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #25 (permalink)  
Antiguo 20/10/2003, 08:18
Avatar de philipppe  
Fecha de Ingreso: marzo-2002
Ubicación: Uruguay
Mensajes: 706
Antigüedad: 22 años
Puntos: 0
jeje, voy a probar, espero que me sirva y mucas gracias por su rapidéz en contestar
__________________
Plugin de AdSense para Wordpress: http://adsensei.org
  #26 (permalink)  
Antiguo 20/10/2003, 08:22
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Joer, Cluster, si es que conduces como un loco

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #27 (permalink)  
Antiguo 20/10/2003, 08:34
Avatar de philipppe  
Fecha de Ingreso: marzo-2002
Ubicación: Uruguay
Mensajes: 706
Antigüedad: 22 años
Puntos: 0
que pasa?

Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\site\index.php:8) in c:\apache\htdocs\site\index.php on line 451
que es lo que debo hacer con el código, colocarlo en alguna parte especial? porque no entiendo como sabe que si pongo ?sec=libro debe ir a libro.php
debo modficar algo?
Gracias.
__________________
Plugin de AdSense para Wordpress: http://adsensei.org
  #28 (permalink)  
Antiguo 20/10/2003, 08:39
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Simplemente debes quitar todo el HTML y salida que envies al navegador antes del header(). Se supone que solo quieres mostrar el HTML que esta en libro.php, ¿verdad?.

Y ten cuidado de no enviar nada de nada. Fijate en los espacios al final de los ficheros que incluyas.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #29 (permalink)  
Antiguo 20/10/2003, 08:55
Avatar de philipppe  
Fecha de Ingreso: marzo-2002
Ubicación: Uruguay
Mensajes: 706
Antigüedad: 22 años
Puntos: 0
funciona!
pero si no pongo ?sec=tal
me coloca la página como misitio.com/.php
no hay alguna forma de que si detecta que no tiene ningún ?= me mande a index.php ??
otra cosa, esto es compatible con lo de los includes, es decir, se pueden usar en la misma página?
Gracias nuevamente
__________________
Plugin de AdSense para Wordpress: http://adsensei.org
  #30 (permalink)  
Antiguo 20/10/2003, 09:04
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, es tan sencillo como poner:
Código PHP:
if (isset($_GET['sec'])) {
  
header("Location: {$_GET['sec']}.php");
  exit;
}
// aqui el resto de tu index 
Esto para cuando no pasas parametro.

Lo otro no entiendo muy bien. ¿Quieres que algunos parametros te haga el include y otros la redireccion?

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:20.