[C con Clase] Es complejo: PHP, C, MySql y sockets

Augusto alshira en gmail.com
Mie Abr 4 14:36:31 CEST 2012


Buen día Erick!

Creo que ayudaria mucho para poder ayudar saber como esta interactuando tu
programa de C con PHP, si lo estas haciendo por CGI o como, si aún no
tienes las librerias para crear un programa de C que reciba de forma
estandar por POSt y GET puedes usar:

http://www.gnu.org/software/cgicc/

Saludos.

2012/4/4 erick <etpg38 en hotmail.com>

> AUNQUE ESTA CONSULTA EMPIEZA HABLANDO DE PHP Y MSQL, LA DUDA ES EN
> REALIDAD DE LENGUAJE C, LEAN HASTA EL FINAL , POR FAVOR.
>
> Saludos. Tengo una pregunta un poco extraña porque involucra PHP, Mysql, C
> y además trabajo con sockets. ¿Raro verdad? Pues lo realmente raro y que
> desearía que alguien me explicara es lo siguiente:
> Tengo un script PHP que se llama actualiza.php el cual envía por el metodo
> POST tres variables a otro script llamado valida.php.  Las variables son:
> nombre de usuario, un password y otro dato arbitrario para actualizar una
> BBDD.
> Este segundo script, valida.php, lo que hace es conectarse a una base de
> datos Mysql y preguntar si existe el usuario y la contraseña que le han
> enviado vía POST y en caso positivo actualiza la BBDD con el tercer dato
> recibido:
> //Recepción de las variables:
> $user  = mysql_real_escape_string($_POST['user']);
> $pass  = mysql_real_escape_string($_POST['pass']);
> $dato3  = mysql_real_escape_string($_POST['dato3']);
> //Primera consulta:
> $sql= "SELECT * FROM `usuarios` WHERE `pass`='$pass' AND `user`='$user' ";
> . . .
> //Segunda consulta:
> $sql = "UPDATE `usuarios` SET `dato3`='$dato3' WHERE `pass`='$pass'";
>
> Hasta aquí, todo bien, la ejecución de valida.php se realiza perfectamente
> y la BBDD se actualiza... y aquí viene lo bueno... solo si envio las
> variables vía POST mediante el script actualiza.php... pero si trato de
> enviar esas mismas variables vía POST desde un ejecutable en C, (que fusilé
> por Internet), utilizando conexión por sockets...¡Sorpresa!: las consultas
> a la BBDD (que en teoría no tienen nada que ver con el origen de las
> variables o el origen de la invocación del archivo valida.php) no se
> ejecutan correctamente. Más exactamente, si elimino la expresión WHERE, las
> consultas se ejecutan bien, pero si la expresión WHERE está presente en las
> consultas, devuelve un array vacío, como si ese usuario y password no
> existiesen. Como es natural, una consulta sin WHERE no me sirve de nada
> porque yo no quiero hacer un volcado de toda la base de datos, sino una
> validación de un usuario-password específico.
>
> ¿Alguien tiene idea de por qué el envío de las variables desde el
> ejecutable C, vía POST, provoca este comportamiento incoherente en la
> ejecución de las consultas a Mysql del script valida.php?
>
> Aclaración: todas las variables están llegando a valida.php,  por
> cualquiera de los dos métodos, lo cual he comprobado poniendo  echo
> $nombre_variable  en el script valida.php, para mostrarlas en pantalla. Y
> en teoría no debe existir ningun error de sintaxis en valida.php, ya que en
> el primero de los casos,  (usando actualiza.php), las consultas a la BBDD
> se ejecutan sin fallos.
>
> Aclaración 2: Para los curiosos: ¿Si ya me funciona en PHP, para que
> quiero disparar la actualización de las variables desde C? Porque el
> sistema que pretendo implementar, con php solo le sería útil a usuarios que
> por pura casualidad tengan un servidor Apache instalado en su ordenador,
> mientras que con un ejecutable desde el SO, el servicio será accesible para
> cualquiera con solo correr la aplicación autónoma. ( o  invocándolo
> periódicamente como tarea programada que es en realidad el objetivo final)
> Se desprende que actualiza.exe estará en el ordenador local del usuario y
> valida.php en un servidor remoto.
>
> Aclaración 3: ¿Por qué no hago todo el acceso a la BBDD remota y la
> validación desde C? Primero porque no sé si se puede y segundo porque no
> tengo ni idea. Y en caso de ser posible, seguramente es mucho más complejo
> que simplemente enviarle las variables al script php y que éste se encargue
> de todo el rollo. ¿A que si?
> De cualquier manera, yo no puedo crear en la BBDD, para cada usuario
> potencial,  un nombre de usuario y una contraseña válidos para que accedan
> desde su ordenador, directamente, a una BBDD remota, alojada en un hosting
> compartido, (es más, ni yo mismo puedo acceder directamente, porque el
> servicio de hosting no me da acceso externo, solo desde el panel de
> phpmyadmin) por lo cual debo dirigir todas las peticiones de actualización
> hacia un script común de validación, que se ejecute del lado servidor y que
> sea allí  donde se compruebe si ese usuario está registrado o no en la BBDD.
>
> Algun alma caritativa que arroje luz sobre el asunto...
> http://listas.conclase.net/iconos/0106-crying.gif
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120404/a45852b0/attachment.html>


Más información sobre la lista de distribución Cconclase