Test Foro de elhacker.net SMF 2.1

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
"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

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:

RewriteRule ^.*$ ./index.php

Con lo cual todo lo procesa el index.php.

El cual tiene algo similar a:

Código (php) [Seleccionar]

$params = explode("/",$_SERVER['REQUEST_URI']);
switch($params[1]) {
case "serie":
$modelo= $params[2];
$nombre= $params[3];
break;
....


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

<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

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


y aqui les dejo la funcion que uso
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;