[Resuelto] Traducir pagina PHP

Iniciado por exploiterstack, 13 Enero 2015, 14:47 PM

0 Miembros y 2 Visitantes están viendo este tema.

exploiterstack

Tengo una duda a la hora de realizar una traducción de una pagina web a dos idiomas diferentes(Español y Catalán)

Lo que no pretendo es crear dos paginas para cada archivo de la web con sus respectivos textos traducidos, si no crear dos archivos los cuales tendrán la correspondiente traducción. Lo que he realizado hasta ahora ha sido crearme dos archivos PHP con los textos que contendrá la pagina web ya traducidos estos textos se llaman es.php y ca.php.

Cada uno de los archivos esta compuesto con una lista de:

Código (php) [Seleccionar]
define("T01","Marketing Directo");
Y en el lugar donde se quiera codificar según el idioma que sea pondrá:

Código (php) [Seleccionar]
<?php utf8_decode(T01)?>
Esto es lo que entiendo por lo que he leído por Internet, pero no consigo hacerlo funcionar.

pd: En todas las paginas de la web tendrán dos enlaces que según cual se seleccione traducirá la web al idioma seleccionado.

Un saludo a la comunidad! ;)

#!drvy

No te funciona, ¿ Por qué ?, ¿ Te da algún error ?. Lo único que veo mal es que no hayas puesto echo delante de utf8_decode. Ademas, ¿ Estas seguro que debes usarlo ? Si todos los datos están guardados en UTF8 no veo sentido.

Saludos

JorgeEMX

Aparte del echo... tendrás que definir alguna manera en cómo saber que idioma se ha seleccionado. Algo simple como ejemplo es solicitar tu url de la forma: www.mipagina.web?language=es

Y entonces, al recibir ese valor cargar el archivo correspondiente:

Código (php) [Seleccionar]


$language = (!empty($_GET['language'])) ? $_GET['language'].'.php' : 'es.php';
include_once($language);
echo utf8_decode(T01);



Puse el código al vuelo sin confirmar nada, posiblemente tenga algún error :D

exploiterstack

Muchísimas gracias, me ha funcionado a la perfección.  ;)

Un saludo!

MinusFour

Cita de: JorgeEMX en 14 Enero 2015, 06:23 AM
Aparte del echo... tendrás que definir alguna manera en cómo saber que idioma se ha seleccionado. Algo simple como ejemplo es solicitar tu url de la forma: www.mipagina.web?language=es

Y entonces, al recibir ese valor cargar el archivo correspondiente:

Código (php) [Seleccionar]


$language = (!empty($_GET['language'])) ? $_GET['language'].'.php' : 'es.php';
include_once($language);
echo utf8_decode(T01);



Puse el código al vuelo sin confirmar nada, posiblemente tenga algún error :D

Nada mas ten cuidado con el LFI ahí. Sería mejor poner una lista blanca para que solo puedas incluir archivos de lenguaje.

¿Por cierto, si estas manejando varios lenguajes, porque usar UTF8_decode? UTF8 es mejor para representar datos de varios lenguajes que ISO-8859.

JorgeEMX

Cita de: MinusFour en 14 Enero 2015, 15:46 PM
Nada mas ten cuidado con el LFI ahí. Sería mejor poner una lista blanca para que solo puedas incluir archivos de lenguaje.

Por eso es un ejemplo básico. De cómo definir que archivo usar existen varias maneras (cookies, sesiones, DB) y obviamente la menos segura es usar GET y además no confirmar nada respecto a seguridad.

exploiterstack

#6
Hola antes de nada gracias por contestar,

Con que te refieres con lista blanca? he visto que hacéis uso de estos términos...Entiendo que es una lista/archivo | función/procedimiento donde se filtran los archivos que se deseen incluir, en este caso únicamente los archivos es.php y ca.php. Si no es así hacérmelo saber.

Luego también entiendo que se pueda hacer un Local File Inclusión, pero como determinas que se pueda un LFI y no un RFI? o seria vulnerable a los dos? Es decir cuando sabes que es vulnerable a uno y a otro?

¿Por cierto, si estas manejando varios lenguajes, porque usar UTF8_decode? UTF8 es mejor para representar datos de varios lenguajes que ISO-8859.

Digamos que estoy aprovechando dos archivos de gran tamaño que contienen una gran cantidad de constantes codificadas en esa codificación y estoy creando la pagina desde cero en HTML5 y sera para codificar esas constantes en la estructura de la nueva pagina.

Espero su respuesta, un enorme saludo!

#!drvy

#7
CitarCon que te refieres con lista blanca? he visto que hacéis uso de estos términos...Entiendo que es una lista/archivo | función/procedimiento donde se filtran los archivos que se deseen incluir, en este caso únicamente los archivos es.php y ca.php. Si no es así hacérmelo saber.

Efectivamente, una lista blanca es una lista con unos parametros predeterminados que se usa para "limitar" o "filtrar" los datos que envía el usuario. En cierto modo, restringes lo que pueda poner el usuario.

Un ejemplo:

Código (php) [Seleccionar]
<?php

$langs 
= array('es'=>'es.php''cat'=>'cat.php');

$lang = (isset($_GET['lang'], $langs[$_GET['lang']]) ? $langs[$_GET['lang']] : 'es');

include_once 
$langs[$lang]; 


De esta forma, limitas que el usuario solo pueda usar ciertos parámetros y no todo lo que quiera.

CitarLuego también entiendo que se pueda hacer un Local File Inclusión, pero como determinas que se pueda un LFI y no un RFI? o seria vulnerable a los dos? Es decir cuando sabes que es vulnerable a uno y a otro?

De hecho ese código podría ser vulnerable a RFI perfectamente siempre y cuando la directiva allow_url_include este On.

RFI es cuando eres capaz de incluir una URL, es decir, un archivo remoto que esta en otro sitio (no en tu servidor) y el LFI es justo lo contrario.

Saludos

exploiterstack

Hola #!drvy gracias de nuevo,

Yo conocía esos dos tipos de ataques, y se que se dan cuando queda al descubierto que el usuario(maligno) pueda insertar un archivo por medio de una url y siempre y cuando no este filtrado a la hora de hacer el include. Pero desconocía cuando podría ser un LFI y un RLI.

La única manera de que fuera vulnerable seria si estuviera esa directiva activada?

Un saludo!

#!drvy

CitarLa única manera de que fuera vulnerable seria si estuviera esa directiva activada?

Para RFI si, porque por defecto, include (o require) no tiene permitido hacer peticiones a URLs.

Saludos