[SOLUCIONADO] Llamar a PHP desde C

Iniciado por AleBallesta, 13 Junio 2015, 18:00 PM

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

AleBallesta

Holaa! (tanto tiempo). Estoy desarrollando un programa muy simple que simule ser un "Sistema de Contabilidad", pero que sea perfectamente funcional. Al empezar con la parte de usuarios y contraseñas, me surgio una duda: quiero llamar a la funcion md5() de PHP para comprobar que el usuario y contraseña sean validos. Estos datos estan guardados en forma de dos hash md5 en dos archivos y quiero que cuando se metan los datos del login, estos se pasen a dos hash md5 para comprobar si son iguales a los que estan en los archivos.
Alguien conoce alguna forma de ejecutar PHP desde C o de codificar un string en md5 desde C de forma sencilla?
Gracias.
La cantidad de combinaciones de particulas definen la cantidad de universos posibles. A su vez, una combinacion determnada, solo da lugar a una posible cadena de hechos relacionados por causa y efecto.
LA CASUALIDAD NO EXISTE, SOLO LA CAUSALIDAD.

engel lex

No conseguiste en google alguna librería para hacer md5 en c?

son muy comunes y simples
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Peregring-lk

Aunque lo correcto es tirar por lo que ha dicho `engel lex` (buscar una librería), si estás en linux al menos, siempre puedes hacer una llamada a `system` con un script PHP utilizando el `she-bang`:

Código (bash) [Seleccionar]

#!/usr/bin/php + opciones que sean necesarias.

// tus llamadas a md5()

// guardar el valor en un fichero


Y luego tu código C++:

Código (c++) [Seleccionar]

system("./script-php");

// Leemos el fichero escrito por el script


O también podrías crear un fichero temporal, y en la llamada a `system` redirigir la salida estándar de dicho script php a dicho fichero temporal. También puedes buscar algún wrapper de PHP para C++. O utilizar una librería para lanzar un proceso en vez de llamar a `system` (para hacer a la aplicación independiente de la plataforma), y utilizar sockets para comunicar PHP con C.

En fin... no se me ocurre nada más.

AleBallesta

Graciaaas! Con respecto a lo de engel lex, busque, pero, comos siempre, me quedo la duda si esa era la forma mas "correcta" de hacerlo, ya que los resultados variaban bastante.
Voy a intentar lo de "system", me gustaria que el programa sea portable, pero si no puedo usar las funciones de md5 de C, no me va a quedar mas remedio.
Gracias por la ayuda.
La cantidad de combinaciones de particulas definen la cantidad de universos posibles. A su vez, una combinacion determnada, solo da lugar a una posible cadena de hechos relacionados por causa y efecto.
LA CASUALIDAD NO EXISTE, SOLO LA CAUSALIDAD.

Peregring-lk

#4
Puedes usar la librería openssl: http://stackoverflow.com/a/10324904/1794803

ThunderCls

#5
Creo que estas complicando mucho algo que es demasiado simple, solo para obtener un MD5, pq tienes que acudir a PHP? :-\
Dependiendo de si estas en Linux/Windows cualquiera de estas te serviria:
-> Usando una libreria <-
-> Usando la CryptoAPI <-

Aunque si lo que quieres es portabilidad te recomiendo irte por la primera variante  ::)
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

AleBallesta

Gracias por responder. Por lo que veo, usar una libreria seria lo mas practico. A mi se me habia ocurrido usar PHP, porque me acorde de su funcion md5() cuando empece con la parte de usuarios y contraseñas.
Ahora toca buscar una libreria de md5 simple, ya que solo quiero convertir un string y nada mas (hay librerias que lo dividen en varias funciones distintas).
Gracias por la ayuda, por lo que a mi respecta, el tema esta solucionado: ya se llamar a PHP desde C y se que tengo que buscar librerias.
Gracias!
La cantidad de combinaciones de particulas definen la cantidad de universos posibles. A su vez, una combinacion determnada, solo da lugar a una posible cadena de hechos relacionados por causa y efecto.
LA CASUALIDAD NO EXISTE, SOLO LA CAUSALIDAD.