delphi4arab منتديات دلفي للعرب

نسخة كاملة : مثال عن برمجة الـ http بالدلفي.
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
بسم الله الرحمان الرحيم، الحمد لله و الصلاة و السلام على رسوله أما بعد...

لعل الغالب رأى إستعمالات الـ http لتحميل الملفات من المواقع و في مشروعنا البسيط هذا سنسرد إستعمال آخر للـ http حيث سنرسل الى موقع معلومات نخزنها و سنقرأ تلك المعلومات كذلك من برنامج ننشئه بالدلفي بوساطة من الـphp و باستخدام بروتوكول الـ http.

بعض المعلومات حول بروتوكول الـ http :

يعتمد بروتوكول الـ http على طريقة الطلب و الرد http request و http response فمثلا أنت تطلب google بهذه الطريقة http://www.google.com ليتولى بروتوكول الـ http إجابة طلبك بصفحة google الجميلة على متصفحك حسنا قم الآن بإنجاز بحث ب google عن delphi4arab و لاحظ العنوان :

http://www.google.fr/search?hl=fr&source=hp&q=delphi4arab&meta=&aq=f&oq=


لقد تم إضافة جملة بحثك الى العنوان انها طريقة لنقل بياناتك المتمثلة في جملة البحث الى صفحة اخرى و هي صفحة النتائج نفس الشيئ في بعض المواقع يتم إضافة باسورد دخولك الى العنوان و هكذا يتم تناقل المعلومات بين صفحات الانترنت سيتضح لك الأمر لاحقا ان شاء لله تابع يوجد طريقتين شائعتين لنقل البيانات و هما الطريقة GET و الطريقة POST .

الطريقة GET :

تقوم باضافة البيانات الى الرابط url .

الطريقة POST :

تقوم باضافة البيانات الى جسم الطلب بحيث تكون غير مرئية.


مشروعنا البسيط هو :

سنقوم بارسال نص الى صفحة سكريبت php بسيط حيث سيقوم أو ستقوم صفحة الـ php باستقبال النص و كتابته في ملف txt و ليكن data.txt موجود على نفس الموقع كل هذا سنستخدم فيه مكون مجاني TIEHTTP من وضع الأخ B.M.AbdelAziZ فشكرا له.

رابط الموضوع : http://www.delphi4arab.net/forum/showthread.php?tid=539

موقع المكون : http://www.myfxboard.com/tiehttp/

للتحميل مباشرة من الموقع :
http://www.myfxboard.com/tiehttp/TIE_htt..._D2007.rar

طريقة التنصيب ( أنا نصبته بهذه الطريقة) :

بعد فك الضغط ادخل الى الملف gunzip ثم source أنسخ ما بداخل الملف الى الملف bin الموجود على المسار C:\Program Files\Borland\Delphi7\Bin بعدها افتح دلفي اغلق المشروع الذي يفتح مع الدلفي أختر ovrire ثم افتح TIE_http_https.dpk ثم اضغط على compile في حالة عدم وجود أخطاء اضغط على Installer اغلق دلفي مع الحفظ اعد فتحه ستجد مكون جديد اضيف الى لوحة internet .

بالنسبة لهذا العمل يمكن إنجازه بطريقتين :

الأولى : أن تشترك في إستضافة مجانية ثم تقوم برفع صفحة الـ php و الملف data.txt الى إستضافة الموقع و القيام بالعمل.

الثانية : هي إستخدام برنامج xampp و هو برنامج يتيح لك العمل على جهازك و كأنك في إستضافة حيث لديك مترجم php و قاعدة بيانات MySql و ما إلى ذلك... البرنامج سهل نصب شغل و انتهى شخصيا سأعمل بهذه الطريقة لنبدأ.

رابط موقع البرنامج http://www.apachefriends.org/fr/xampp.html

التحميل : http://www.apachefriends.org/download.ph...-1.7.2.exe
أولا هذا هو سكريبت الـ php قمت ببرمجته أضطررت الى تعلم بعض أساسيات الـ php ليس كامل لكنه يفي بالغرض :

كود :
<html>
<head>
<title>delphi4arab</title>
    </head>
<body>
< ?php
       $_var = $_POST["varf"] ; //1  

      $_hand= fopen("data.txt","a") ; //2

     fwrite($_hand,$_var) ;//3

    Fclose ($_hand) ; //4
?>
</body>
</html>

قم بنسخ كود الـ php الى ملف txt و سمه test.txt ثم غير صيغته من .txt الى .php و انسخه الى المجلد htdocs الموجود مع ملفات برنامج xampp ، المجلد htdocs يمثل مكان وضع ملفات موقعك..لا تنسى تشغيل apache من XAMPP Control Panel ...

شرح الأكواد :
1// : شرحه لاحقا.
2// : الحصول على مقبض الملف و فتحه للكتابة و القراءة في حالتنا ملفنا هو data.txt.
3// الكتابة في الملف البرمتر الاول مقبض الملف و الثاني ماذا نكتب في الملف الأكواد الباقية أكواد html .

بالدلفي أنشئ فورم به زر و مكون Edit بالإضافة الى مكون IEHTTP سمي هذا الأخير http ، في حدث الضغط على الزر :

كود :
http.RequestMethod := 'POST';//1
http.postStr:=('varf=' + Edit1.Text);//2
http.ExecuteURL('http://127.0.0.1/test.php');//3



1 //: قمنا بتعريف طريقة POST لتنفيد الـ request اذا لم يتم تعريف طريقة POST فالمكون يعتبر الطريقة GET كطريقة افتراضية كما قلنا سابقا الطريقة POST تضيف البيانات الى جسم الطلب لذلك لن نشاهد البيانات المرسلة.
2 // : poststr هي poststring و هو ماذا سنرسل بالـ http ، varfهو اسم المتغير edit.txt هو النص الذي سيحويه المتغير.
ارجع الى كود الـ php لاحظ $_var = $_POST["varf"] $_var هو اسم المتغير الذي سنحفض فيه محتوى المتغير varf الذي سنرسله من برنامجنا دلفي في الـ php تعريف المتغيرات سهل و هو باضافة العلامة $ و حسب و لست بحاجة الى تعريف نوع المتغير و لا هم يحزنون php ينوب عنك في ذلك...$_POST هذه طريقة لاستخراج محتوى المتغير varf اذا استخدمنا GET في الدلفي ففـ php يكون لدينا $_GET ...
3// رابط عنوان صفحة الـ php بما اننا على جهازنا فنستخدم 127.0.0.1 او localhost ...
جرب البرنامج ف edit اكتب delphi مثلا ثم ارسل بالضغط على الزر.. صفحة الـ php تستخرج النص من المتغير تحصل على مقبض الملف الذي تريد كتابته تفتح الملف تكتب فيه النص و تغلق الملف...
الآن اذهب الى data.txt و هنا ستلاحظ انه قد تم اضافة النص delphi الآن الذي نريده هو ان نقوم بقراءة النص من برنامج آخر عن طريق استخدام ال http أنشء نفس الفورم السابق في مكان الـ Edit ضع Memo

كود :

كود :
http.ExecuteURL('http://127.0.0.1/data.txt');
Memo1.Lines.Add(http.sl.Text);


اولا قمنا بطلب صفحة 127.0.0.1/data.txt اذهب الى متصفحك و ضع رابط الصفحة فوق ستلاحظ انه تم عرض النص في المتصفح في البرنامج كأننا قمنا بهذه العملية الا اننا سنسنقبل النتيجة في مكون Memo .
يمكنك بهذه الطريقة من صناعة العديد من البرامج كبرنامج اضافة ردود الى المنتدات او مواضيع و غير ذلك الكثير..الشرح مختصر و أتمنى ان اكون قد افدتكم ...
لا تنسونا من صالح دعائكم ...
ان اصبت فمن الله و ان اخطأت فمن نفسي و الشيطان

سيتم تحويل الشرح الى pdf في القريب ان شاء الله ليكون أكثر وضوحا

:monster1:

سلامي
الى الامام

خطأ بسيط، لايوجد فراغ
PHP كود :
< ?php 
الصحيح هكذا
PHP كود :
<?php 

أما هذا
PHP كود :
$_var $_POST["varf"] ; //1
1// : شرحه لاحقا. 
اخذ قيمة ما تم تمريره بPost بالمتغير varf ووضعها بمتغير جديد $_var

كبديل لXAMPP يمكن استخدام WAMP
http://www.wampserver.com/

ملاحظة:
اعطاء الصلاحية للكتابة بملف بالموقع قد يكون سبب لاختراق الموقع
عامة بالواقع العملي استخدام قاعدة بيانات اظمن من ملف

غير ذلك مثال بسيط وجيد سهل للهظم خاصة للمبتدئين
والسلام عليكم ورحمة الله

للافادة:

WAMP = windows apache mysql php

وهناك أيضا

MAMP = macintosh apache mysql php

LAMP = linux apache mysql php

السلام عليكم

شكرا للتوضيح و الافادة اخ B.M.AbdelAziZ
كما قلت سيتم اعادة تنضيم على شكل pdf احسن و سأحاول تجنب مثل هذه الأخطاء قدر المستطاع
لقد تعلمت بعض من أساسيات الـ php لذلك الوقوع في مثل هذا الخطأ وراد ان شاء الله اتطور في الـ php كذلك
بمناسبة ذكرك لقواعد البيانات
اذا استعملت قاعدة بينات mysql هل يعني سأستخدم الـ http لتنفيذ العمليات عليها ام انه ما يسمى بربط قاعدة البينات يفي بالغرض
I_Tiger
شكرا للافادة
سلامي

إقتباس :اذا استعملت قاعدة بينات mysql هل يعني سأستخدم الـ http لتنفيذ العمليات عليها ام...

هناك 3 طرق

- الاتصال بالقاعدة مباشرة من دلفي
-الاتصال بالقاعدة مباشرة بphp ( تطبيقات ويب Web فقط دون دلفي - مثل منتدانا هذا Vbulletin)
-الاتصال بالقاعدة بدلفي باستخدام php بما يسمى HTTP Tunneling

الطريقة الثالثة مفيدة في حالات كثيرة لا ينفع فيها الاتصال المباشر لاسباب او اخرى
خير مثال عليها برنامج SQLyog
الثانية واضحة لا غبار عليها
يعني يبقى الاولى و الثالثة

الاولى : تقصد الاتصال بها عن طريق مكونات DAC مثل scibit اذا هذه الطريقة تمكنني من اضافة و حذف في قواعد البينات كما أشاء...

الثانية : و هي بنفس الطريقة التي اعتمدتها...

اشارة للتأكيد
شكرا للتوضيحات

نعم، فقط في الاتصال المباشر هناك نقطتين
1- من جهة الServer يكون IP المتصل بالقاعدة له الصلاحية (يغير هذا بالServer باضافة IP المتصل)
2-من جهة المتصل المنفذ Port المستخدم (3306) غير محظور (لايمنعه الجدار الناري Firewall ان وجد)
السلام عليكم
و الله يا خبيرنا انت كل رد تضيف معلومة و بالتالي سآل :
1- بالنسبة للنقطة واحد ماذا لو كان الاي بي متغير يعني عدة أشخاص يتصلون بالقاعدة...في نفس الوقت...
2- هل يمكنني استخدام البورت لاغراض أخرى لانه حتى التفكير في مشكلة البورت تأرقتني ...
سلامي
نعم شكرا اخي للتنويه
المزيد حول HTTP Tunneling ... وضح نقطة يتم حولها النقاش حتى تكون هناك أكبر إستفادة ان شاء الله
سلامي
الى الامام
هل يتم تغير مكان الايب الافتراضي 127.0.0.1 باسم الموقع ام ماذا او الايبي الخاص بالموقع
الصفحات : 1 2 3