Obtener el contenido de PHP: Problemas con POST y consulta
-
25-09-2019 - |
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!
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.