Autor Tema: Duda sobre urls amigables con php  (Leído 2586 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jose12yo

  • Recién llegado
  • *
  • Mensajes: 7
  • Karma: +0/-0
    • Ver Perfil
    • Email
Duda sobre urls amigables con php
« : mayo 09, 2011, 04:21:26 pm »
Hola a todos viendo el post de WHK sobre permalink,y cree este código para ir aprendiendo este tema y tengo la duda de que si es válido lo que hize osea el código funciona ,recibe las urls asi:

http://localhost/index.php/variable/valor
y lo recibo igual $_GET['variable']
y otra duda usé $_SERVER['PHP_SELF'] en lugar de $_SERVER['REQUEST_URI'] por que éste último me da las collimas como %27 o %22
¿Hay problemas con eso?

aca dejo el codigo explicado para que me entiendan como lo entiendo (:O)
Código: php [Seleccionar]
<?php

//1.-La url ej: /index.php/hola/.htaccess/x/:OOO/y/'hola"
$request=$_SERVER['PHP_SELF'];
//2.-Quitamos /index.php/ y quedaría así  hola/.htaccess/x/:OOO/y/'hola"
$request=str_replace("/index.php/","",$request);
//3.-Si se usa la url como si tuviera extension "hola/.htaccess/x/:OOO/y/'hola".html"
//Esta parte es para que no tome en cuenta '.html'
$request=preg_replace("/(\.html)$/","",$request);
/*
4.-Convertimos la cadena a array con explode(dado el separador '/') y quedaría así:
Array
(
    [0] => hola
    [1] => .htaccess
    [2] => x
    [3] => :OOO
    [4] => y
    [5] => 'hola"
)

*/
$url=explode("/",$request);
//5.-Iniciamos $x en 1 para saber el número primo
$x=1;
//6.-Se usa foreach para recorrer el array
foreach($url as $var=>$val)
{
    //7.-Condicional para saber si $x es un número primo pero ¿para que?,
    //si el número es par el resto será 0 y la condición no se cumplirá
    //hasta que el resto sea 1, para usar los indices en pares
    if($x%2)
    {
        //7.1.-$var igual a hola
        $var=$val;
        //7.2.-$val igual a .htaccess(es el valor del indice siguiente)
        $val=$url[$x];
        //7.3.-Unímos $_GET(que es un array) y el array que se creó con "array_merge()"
        //No tiene que ser $_GET pero me gustó :P
        $_GET=array_merge($_GET,array($var => $val));
    }
    //E incrementamos $x en 1,si no se hace va a pasar algo raro o feo :D
    $x++;
}

//Para ver lo que sale de $_GET
//se accede a las variables como normalmente se hace ej:
echo $_GET['hola'];
echo '<pre>';
print_r($_GET);
echo '</pre>';



gracias por la atencion  :) salu2
Si has encontrado útil este articulo recuerda que puedes ayudarnos con tu donación voluntaria la cual ayudará al staff y a la mantención del foro.

Desconectado WHK

  • 吴阿卡
  • Administrador
  • Aportador
  • *****
  • Mensajes: 555
  • Karma: +15/-3
  • Coder
    • Yahoo Instant Messenger - yan_uniko_102
    • Ver Perfil
    • WHK
    • Email
Re: Duda sobre urls amigables con php
« Respuesta #1 : mayo 11, 2011, 02:51:09 am »
Hola, ten cuidado con los XSS, puedes procesar con urldecode toda la request pero debes tener cuidado, mejor prueba con $_SERVER['REQUEST_URI'] solamente.
Mi WEB - The Hacktivism is not a crime - Si no lo hago yo, que lo hagan otros -

Desconectado jose12yo

  • Recién llegado
  • *
  • Mensajes: 7
  • Karma: +0/-0
    • Ver Perfil
    • Email
Re: Duda sobre urls amigables con php
« Respuesta #2 : mayo 11, 2011, 02:09:13 pm »
bueno usaré mejor $_SERVER['REQUEST_URI']  como dices,porque me estoy dando cuenta que es poco común usar comillas por $_GET y algo que no entendí es lo de xss,te refieres a usar htmlspecialchars($_GET['mivalor'],ENT_QUOTES) o a esta parte  $_GET=array_merge($_GET,array($var => $val));

pd:perdona tanta pregunta  :) y gracias
« Última Modificación: mayo 11, 2011, 02:29:04 pm por jose12yo »


. . . . . . . .