Obtendo conteúdo do PHP: Problemas com postagem e consulta
-
25-09-2019 - |
Pergunta
Desculpas pela minha pergunta mais longa sobre isso. Estou tentando interagir com um front -end PHP para um banco de dados MySQL no root (uma estrutura CERN em C ++ para análise de física de alta energia). Para começar, tentei fazer com que essa interface PHP seja bem wget
e curl
Primeiro porque estou mais familiarizado com eles. O seguinte 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
Os resultados são:
database1
database2
Isso é bom. Se eu deixar de fora o --post-data
Então eu recebo o 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
Tenho acesso ao script PHP (somente leitura), mas o erro em si não é muito importante. O que importa que, usando root, eu uso uma função chamada como socket.SendRaw(message, message.Length())
(o soquete é um TSocket
) e isso me dá o mesmo "erro" que wget
Sem a chave de dados post, se minha "mensagem" for
"POST http://some.host.edu/log/log_query_matlab.php?hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show_spazio_databases"
Isso pode ser em vão, mas alguém sabe uma maneira de formatar a "mensagem" que inclui algo que é equivalente ao --post-data
trocar. Ou existe uma maneira padrão de formatar solicitações de postagem em uma única linha (eu vi material multi-linha. Está certo?) Desculpe, eu não tenho noção!
Ps. A consulta MySQL é show databases
Mas o espaço foi substituído por _spazio_
, Italiano para espaço. O autor da interface DB e PHP exige (e várias substituições para símbolos), mas alguém já viu isso antes? Tentando solucionar problemas, isso foi terrível!
Solução
O "Liner" correto (tinha que ser multilina) era:
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
O final de cada linha tem \r\n
. A lacuna após o comprimento do conteúdo tem dois conjuntos deles.