Prueba antes de insertar y antes de leer usar :
Por si no se entiende que es $conexion:
include_once("../mysqli.inc.php");
$conexion=mysqli_connect ($cfg_servidor,$cfg_usuario,$cfg_password,$cfg_basephp1);
El problema creo yo no es donde inserto, sino en donde muestro.
Por que en el Sistema almacen (Sitio Web 1)
no tengo problemas para mostrar caracteres acentuados, de hecho si EDITO mis productos puedo ver los acento perfecto, igual en la lista de productos.
El problema surge en la Pagina de ventas (Sitio Web 2) cuando consulto mediante el API y obtengo respuesta, imprimo el producto asi:
<?php
$q= miapi( "productos", "all");
foreach( $q as $key=>$val )
?>
Los
titulos de los productos salen con caracteres raros, por ejemplo la letra o acentuada, sale impresa asi:
óRepito... si voy al Sistema de Almacen (sitio web 1) yo veo las letras acentuadas bien, y si edito los productos sigo viendo todo bien.
En
abos sitios web tengo
my.cnf para que por dfault sea utf8, en el index.php invoco el header para tipo de contenido utf8, tambien el meta tag de contenido utf8 y en el httpd.conf como default utf8.
Saludos !
Ojo, primer punto: htmlentities no evita inyecciones sql, segundo: htmlentities es una funciòn diseñada para la salida de datos no la entrada, si despues si alguien necesita hacer una busqueda desde el terminal como lo hará? tendria que codificar de memoria en htmlentities y tu base de datos va a perder integridad y va a aumentar su tamaño, la función htmlentities se usa solo cuando lo vas a mostrar como en un echo no cuando lo guardas.
Wow... me sorprende...
Si busco en google, todas partes recomiendan que al momento de insertar en una BDD pases las variables por htmlentites(), por consecuencia para mostrarlas debes pasar el decode.
Y para la busqueda, pues igual forma, pasarias la "muestra" de la busqueda a htmlentities, y despues la consulta en la BD.
En fin... creo yo no es mi problema....
Como maneja el flujo de datos mi API ?Los clientes deben enviar la consulta en json encodeado (
json_encode()).
El API (servidor) recibe el flujo json encodeado, lo decodifica (
json_decode()), analiza la peticion y genera una respuesta en json encodeado (
json_encode()) y lo envia al cliente.
En el cliente (el SDK) recibe la respuesta y la decodifica (
json_decode()), esto resulta un OBJETO.
El objeto lo recorro e imprimo las partes que quiero.
Cada una de las partes (valores de las variables) fueron previamente pasadas por un htmlentities( $var, ENT_QUOTES) de lado del servidor.
Por consecuencia el cliente debe invertir esas variables pasandole un
html_entity_decode() (dependiendo el caso).
Saludos !
MOD: NO HAGAS TRIPLE POST.YO: sobres...