Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: carwar en 15 Septiembre 2017, 20:51 pm



Título: Problema con url amigables
Publicado por: carwar en 15 Septiembre 2017, 20:51 pm
Hola que tal todos tengo un problema con las url amigables de mi sitio quiero cambiar esto:

equipo.php?recordId=1

por

/serie/modelo/nombre

es mis href uso este codigo
Código:
"equipo.php?recordId=<?php echo $row_Equipos['id']; ?>"

luego en equipo.php obtengo la variable mediante un get y cargo la base de datos.

en el htacces entre y coloco esto

Código:
Options +FollowSymLinks
RewriteEngine on
#RewriteRule ^(.*)$ equipo.php?recordId=$1

estoy tratando de probar si funciona pero a pesar de poner el nombre de la web/1 por ejemplo no me cargan los datos del equipo. Siu me pueden guiar muy agradecido no tengo mucha idea de como hacer esto.



Título: Re: Problema con url amigables
Publicado por: AlbertoBSD en 15 Septiembre 2017, 20:59 pm
Hola, pues lo que necesitas es que un archivo te controle todo lo que recibes por la URL.

Yo en mi archivo HTACCESS tengo:

Código:
RewriteRule ^.*$ ./index.php

Con lo cual todo lo procesa el index.php.

El cual tiene algo similar a:

Código
  1. $params = explode("/",$_SERVER['REQUEST_URI']);
  2. switch($params[1]) {
  3. case "serie":
  4. $modelo= $params[2];
  5. $nombre= $params[3];
  6. break;
  7. ....
  8.  

Posteriormente cargo los datos relacionados que me estan solicitando en el URL

Obviamente tiene que validar que los parámetros existan y sean validos, ademas si los vas a usar para realizar consultas SQL, hay que sanizitarlos para evitar que te inyecten consultas


Título: Re: Problema con url amigables
Publicado por: carwar en 16 Septiembre 2017, 02:19 am
gracias bro por tu respuesta. ya he logrado cambiar los links ahora me quedan asi

serie/serie-producto/modelo/6

quisiera que no apareciera el id despues del / osea quitar el 6 alguna idea?

este es mi href

Código:
<a href="serie/<?php echo amigables($row_Modelos['nombre']);?>/<?php echo amigables($row_Equipos['modelo']);?>/<?php echo $row_Equipos['id']; ?>"><img src="images/equipos/<?php echo $row_Equipos['img']; ?>" alt=""></a>

y aqui el codigo del htacces

Código:
RewriteEngine on
RewriteRule ^serie/(.*)/(.*)/(\w+)/?$ equipo.php?nmodelo=$1&modelo=$2&recordId=$3

y aqui les dejo la funcion que uso
Código:
function amigables($url) {

// Tranformamos todo a minusculas

$url = strtolower($url);

//Rememplazamos caracteres especiales latinos

$find = array('á', 'é', 'í', 'ó', 'ú', 'ñ');

$repl = array('a', 'e', 'i', 'o', 'u', 'n');

$url = str_replace ($find, $repl, $url);

// Añaadimos los guiones

$find = array(' ', '&', '\r\n', '\n', '+');
$url = str_replace ($find, '-', $url);

// Eliminamos y Reemplazamos demás caracteres especiales

$find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');

$repl = array('', '-', '');

$url = preg_replace ($find, $repl, $url);

return $url;