Pregunta

Disculpas por mi pregunta más largo en que nunca. Estoy tratando de interactuar con una interfaz PHP para una base de datos MySQL en la raíz (un marco CERN en C ++ para el análisis de la física de alta energía). Para empezar, he intentado conseguir esta interfaz PHP para el juego agradable con wget y curl primero porque estoy más familiarizado con ellos. El siguiente comando funciona:

wget --post-data "hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show_spazio_databases;" http://some.host.edu/log/log_query_matlab.php

Los resultados son:

database1

database2

Eso es bueno. Si dejo el --post-data entonces consigo el resultado:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'admin'@'localhost' (using password: NO) in /log/log_query_matlab.php on line 6
i'm dead! Access denied for user 'admin'@'localhost' (using password: NO) 
Warning: mysql_query() [function.mysql-query]: Access denied for user 'admin'@'localhost' (using password: NO) in /log/log_query_matlab.php on line 29

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /log/log_query_matlab.php on line 29

Tengo acceso al script php (sólo lectura), pero el error en sí no es demasiado importante. Lo que importa es que el uso de ROOT, utilizo una función llamada como socket.SendRaw(message, message.Length()) (socket es un TSocket) y esto me da lo mismo "error" como wget sin cambiar los datos de correos si mi "mensaje" es

"POST http://some.host.edu/log/log_query_matlab.php?hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show_spazio_databases"

Esto puede ser en vano, sino que lo hace a alguien conoce una manera que debería formatear el "mensaje" que incluye algo que es equivalente al parámetro de --post-data. O, ¿hay una forma estándar de formato de las solicitudes POST en una sola línea (he visto múltiples -line cosas. ¿Es correcto eso?) En este momento no tengo ni idea!

PS. La consulta MySQL es show databases pero el espacio ha sido sustituido por _spazio_, italiano por el espacio. El autor de la interfaz db y php lo requiere (y varios sustitutos de los símbolos), pero alguien ha visto esto antes? Tratando de solucionar problemas que era terrible!

¿Fue útil?

Solución

El correcta "revestimiento" (tenía que ser multilínea) fue de:

POST http://some.host.edu/log/log_query_matlab.php HTTP/1.1
Host: some.host.edu
Content-Type: application/x-www-form-urlencoded
Content-Length: 73

hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show databases

El extremo de cada línea tiene \r\n. La brecha después de longitud de contenido tiene dos conjuntos de aquellos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top