الحصول على المحتوى من PHP: مشكلة مع المنشور والاستعلام
-
25-09-2019 - |
سؤال
أعتذر عن أطول سؤالي على الإطلاق. أحاول التفاعل مع واجهة PHP لقاعدة بيانات MySQL في الجذر (إطار CERN في C ++ لتحليل الفيزياء عالية الطاقة). لتبدأ ، حاولت الحصول على واجهة PHP هذه للعب بشكل جيد wget
و curl
أولا لأنني أكثر دراية بهم. الأمر التالي يعمل:
wget --post-data "hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show_spazio_databases;" http://some.host.edu/log/log_query_matlab.php
النتائج هي:
database1
database2
هذا طيب. إذا تركت --post-data
ثم أحصل على النتيجة:
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
لديّ إمكانية الوصول إلى البرنامج النصي PHP (اقرأ فقط) ، لكن الخطأ نفسه ليس مهمًا للغاية. ما يهم ذلك باستخدام الجذر ، أستخدم وظيفة تسمى AS socket.SendRaw(message, message.Length())
(المقبس أ TSocket
) وهذا يعطيني نفس "الخطأ" كما wget
بدون تبديل بيانات النشر إذا كانت "رسالتي"
"POST http://some.host.edu/log/log_query_matlab.php?hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show_spazio_databases"
قد يكون هذا دون جدوى ، لكن هل يعرف شخص ما طريقة يجب أن أقوم بتنسيق "الرسالة" التي تتضمن شيئًا يعادل --post-data
تحول. أو ، هل هناك طريقة قياسية لتنسيق الطلبات النشر في سطر واحد (رأيت أشياء متعددة الخطوط. هل هذا صحيح؟) آسف أنا جاهل!
ملاحظة. استعلام MySQL show databases
ولكن تم استبدال المساحة بـ _spazio_
, ، الإيطالية للفضاء. يتطلب مؤلف واجهة DB و PHP (والبدائل المختلفة للرموز) ، ولكن هل رأى أي شخص هذا من قبل؟ في محاولة لاستكشاف الأخطاء وإصلاحها كان فظيعا!
المحلول
كان "بطانة واحدة" الصحيحة (كان يجب أن تكون متعددة):
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
نهاية كل سطر \r\n
. الفجوة بعد طول المحتوى لها مجموعتان من هؤلاء.