Foros del Web » Programando para Internet » PHP »

nombre web no cambia

Estas en el tema de nombre web no cambia en el foro de PHP en Foros del Web. Hola a todos. Me gustaria saber si existe alguna funcion para q pulses en el enlace q pulses dentro de la misma web el nombre ...
  #1 (permalink)  
Antiguo 05/10/2009, 04:01
 
Fecha de Ingreso: octubre-2008
Mensajes: 118
Antigüedad: 15 años, 7 meses
Puntos: 2
nombre web no cambia

Hola a todos.

Me gustaria saber si existe alguna funcion para q pulses en el enlace q pulses dentro de la misma web el nombre siempre sea el mismo. Me explico: estoy en mipagina.es y pulso a un enlace q me lleva a usuarios.php, lo normal seria ver mipagina.es/usuarios.php Yo lo que quiero hacer es q siempre se vea mipagina.es y no mipagina.es/usuarios.php.

Esto se puede hacer con php? y sino como se puede hacer (aparte de con ajax)?


Saludos,
Dani.
  #2 (permalink)  
Antiguo 05/10/2009, 04:39
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: nombre web no cambia

podes utilizar mod_rewrite, pero alguna peticion tenes que hacer, solamente en vez de mostrar usuarios.php uses mipagina.com/usuarios, sino otra alternativa mas incomoda que ajax seria la de enviar la peticion por $_post a la misma pagina por ejemplo

index.php
Código php:
Ver original
  1. if(isset($_POST['pagina'])){
  2.     include ($_POST['pagina']);
  3. }else{
  4.     include ('home.html');
  5. }

Home.html
Código html:
Ver original
  1.     <head>
  2.         <title>Prueba formulario </title>
  3.     </head>
  4.     <body>
  5.         <script>
  6.             function post_to_url(path, pagina, method) {
  7.                 // puedes definir el path o dar la opcion de elegir a donde se envia
  8.                 //path = "index.php";
  9.                 method = method || "post";
  10.  
  11.                 var form = document.createElement("form");
  12.                 form.setAttribute("method", method);
  13.                 form.setAttribute("action", path);
  14.            
  15.                        
  16.                 var hiddenField = document.createElement("input");
  17.  
  18.                 hiddenField.setAttribute("type", "hidden");    
  19.                 hiddenField.setAttribute("name",'pagina');
  20.                 hiddenField.setAttribute("value", pagina);
  21.                 form.appendChild(hiddenField);
  22.            
  23.                 document.body.appendChild(form);  
  24.                 form.submit();
  25.             }
  26.  
  27.         </script>
  28.    
  29.         <a href="#" name="usuarios" onclick="post_to_url('index.php','usuarios.php','post')" >usuarios</a>
  30.         <a href="#" name="usuarios" onclick="post_to_url('index.php','noticias.php','post')" >noticias</a>
  31.     </body>
  32. </html>

de esta forma al hacer clic se crea un formulario y se envia por post con los parametros que le pasamos, nuestro index recibe la variable $_POST['pagina'] e incluye su valor, es una alternativa a ajax, pero optaria por ajax porque al refrescar va a advertir que hay datos para actualizar, creo que se puede configurar pero no sabria decirte realmente como se hace jaja

Última edición por samu22; 05/10/2009 a las 04:46
  #3 (permalink)  
Antiguo 05/10/2009, 05:19
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: nombre web no cambia

una variante a $_POST son las sessiones ahi no vas a tener problemas al refrescar

index.php
Código php:
Ver original
  1. if(isset($_SESSION['p'])){
  2.         include ($_SESSION['p']);
  3.     unset($_SESSION['p']); // borramos la variable de session
  4. }else{
  5.         include ('home.html');
  6. }

send.php
Código php:
Ver original
  1. <?php
  2.     if(isset($_POST['pagina'])){
  3.         $_SESSION['p'] = $_POST['pagina'];
  4.         header('location: index.php');
  5.     }
  6. ?>

home.html
Código html:
Ver original
  1.     <head>
  2.         <title>Prueba formulario </title>
  3.     </head>
  4.     <body>
  5.         <script>
  6.             function post_to_url(path, pagina, method) {
  7.                 // puedes definir el path o dar la opcion de elegir a donde se envia
  8.                 //path = "index.php";
  9.                 method = method || "post";
  10.  
  11.                 var form = document.createElement("form");
  12.                 form.setAttribute("method", method);
  13.                 form.setAttribute("action", path);
  14.            
  15.                        
  16.                 var hiddenField = document.createElement("input");
  17.  
  18.                 hiddenField.setAttribute("type", "hidden");    
  19.                 hiddenField.setAttribute("name",'pagina');
  20.                 hiddenField.setAttribute("value", pagina);
  21.                 form.appendChild(hiddenField);
  22.            
  23.                 document.body.appendChild(form);  
  24.                 form.submit();
  25.             }
  26.  
  27.         </script>
  28.    
  29.         <a href="#" name="usuarios" onclick="post_to_url('send.php','usuarios.php','post')" >usuarios</a>
  30.         <a href="#" name="usuarios" onclick="post_to_url('send.php','noticias.php','post')" >noticias</a>
  31.     </body>
  32. </html>

con esto cuando refresques el index.php va a mostrarte el contenido de home.html nuevamente
  #4 (permalink)  
Antiguo 05/10/2009, 07:12
 
Fecha de Ingreso: octubre-2008
Mensajes: 118
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: nombre web no cambia

gracias x la respuesta.

Creo q esto tendra el mismo problema q me contaron, auqnue no creo q ocurra nunca. Me dijeron q no utilizara ajax xk puede haber gente q tenga desactivado el javascript y ya no le funcione, x eso estaba buscando una alternativa pero en estos ejemplos e visto q tmb se utilizan scripts.
  #5 (permalink)  
Antiguo 05/10/2009, 07:32
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: nombre web no cambia

Cita:
Iniciado por nosek159 Ver Mensaje
gracias x la respuesta.

Creo q esto tendra el mismo problema q me contaron, auqnue no creo q ocurra nunca. Me dijeron q no utilizara ajax xk puede haber gente q tenga desactivado el javascript y ya no le funcione, x eso estaba buscando una alternativa pero en estos ejemplos e visto q tmb se utilizan scripts.
Asi es, si no tiene javascript habilitado ajax no funciona, tampoco este ejemplo, podes hacer algo con mod_rewrite o podes enviar las variables por $_GET, pero estarias mostrando la variable que envias

con mod_rewrite podria ser algo asi
.htacces
Código HTML:
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
	RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]
	
</IfModule> 
si no es un archivo ni un directorio toma todos lo que escribas despues de midominio.com/ -> ejemplo
midominio.com/usuarios seria midominio.com/index.php?p=usuarios


y en el index
Código php:
Ver original
  1. <?php
  2. if(!empty($_GET['p'])){
  3.      include($_GET['p'].'.php');
  4. }else{
  5.      include('home.html');
  6. }
si la variable no esta vacia es decir se paso un parametro despues de midominio.com/ carga el archivo con extencion .php, Es un ejemplo para que encuetres tu modo de mostrarlo, no quiere decir que deba ser asi ya que esto te limitaria si lo que estas buscando es mostrar varios tipos de archivos, por lo pronto aca te muestro algo que te podria ser de utilidad

y el home.html

Código html:
Ver original
  1. <a href="/usuarios" >usuarios</a>
  2. <a href="/otra" >otra</a>
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 03:59.