المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : مثال عن برمجة الـ http بالدلفي.


S.FATEH
12-12-2009, 07:36 AM
بسم الله الرحمان الرحيم، الحمد لله و الصلاة و السلام على رسوله أما بعد...

لعل الغالب رأى إستعمالات الـ 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.com/forum/showthread.php?t=539

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

للتحميل مباشرة من الموقع :
http://www.myfxboard.com/tiehttp/TIE_http_https_build_071_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.php?xampp-win32-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:

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

B.M.AbdelAziZ
12-12-2009, 09:30 AM
خطأ بسيط، لايوجد فراغ

< ?php

الصحيح هكذا

<?php


أما هذا

$_var = $_POST["varf"] ; //1
1// : شرحه لاحقا.

اخذ قيمة ما تم تمريره بPost بالمتغير varf ووضعها بمتغير جديد $_var

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

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

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

I_Tiger
12-12-2009, 10:53 AM
للافادة:

WAMP = windows apache mysql php

وهناك أيضا

MAMP = macintosh apache mysql php

LAMP = linux apache mysql php

S.FATEH
12-12-2009, 01:18 PM
السلام عليكم

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

B.M.AbdelAziZ
12-12-2009, 06:55 PM
اذا استعملت قاعدة بينات mysql هل يعني سأستخدم الـ http لتنفيذ العمليات عليها ام...

هناك 3 طرق

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

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

S.FATEH
12-12-2009, 09:14 PM
الثانية واضحة لا غبار عليها
يعني يبقى الاولى و الثالثة

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

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

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

B.M.AbdelAziZ
12-12-2009, 10:28 PM
نعم، فقط في الاتصال المباشر هناك نقطتين
1- من جهة الServer يكون IP المتصل بالقاعدة له الصلاحية (يغير هذا بالServer باضافة IP المتصل)
2-من جهة المتصل المنفذ Port المستخدم (3306) غير محظور (لايمنعه الجدار الناري Firewall ان وجد)

S.FATEH
14-12-2009, 05:16 PM
السلام عليكم
و الله يا خبيرنا انت كل رد تضيف معلومة و بالتالي سآل :
1- بالنسبة للنقطة واحد ماذا لو كان الاي بي متغير يعني عدة أشخاص يتصلون بالقاعدة...في نفس الوقت...
2- هل يمكنني استخدام البورت لاغراض أخرى لانه حتى التفكير في مشكلة البورت تأرقتني ...
سلامي

S.FATEH
19-12-2009, 05:39 PM
نعم شكرا اخي للتنويه
المزيد حول HTTP Tunneling ... وضح نقطة يتم حولها النقاش حتى تكون هناك أكبر إستفادة ان شاء الله
سلامي
الى الامام

Benhlell
25-12-2009, 05:28 PM
هل يتم تغير مكان الايب الافتراضي 127.0.0.1 باسم الموقع ام ماذا او الايبي الخاص بالموقع

AL-MOB4RM3G
25-12-2009, 06:13 PM
هل يتم تغير مكان الايب الافتراضي 127.0.0.1 باسم الموقع ام ماذا او الايبي الخاص بالموقع

نعم, هذا ان كنت تطبق الدرس الذي شرحه الأخ على موقع حقيقي,
امّا ان كنت تستخدم برنامج مثل xampp لتطبيق الدرس كما فعل الأخ, فعندها, لا,
استخدم الايب الافتراضي حينها,,

بارك الله لك,
والسلام عليكم

Ahmed18
06-01-2010, 08:21 PM
ماذا لو اردت استبدال ملف ال Text بقاعدة بيانات Absolute يتم وضعها علي الموقع ثم التحكم فيا باستخدام هذا المكون ؟

B.M.AbdelAziZ
07-01-2010, 09:31 AM
بقاعدة بيانات Absolute يتم وضعها علي الموقع
قاعدة بيانات يعني وجود محرك لها بالموقع اي مثبت على جهاز الاستضافة
وهذا غير ممكن في حالة Absolute Database كونها من نوع File server
يمكنك استخدام MySql الاكثر انتشارا او PostgreSQL الواعدة!
هناك قواعد بيبنات اخرى حسب نظام الاستضافة L!nux او Wind0ws أو غيره...
وبالتوفيق

عبدالله
11-01-2010, 10:17 AM
الله يجزاك خير ويكثر من امثالك :)

درس نادرا ما نجد مثله باللغه العربيه :)

moh_ghi2000
13-01-2010, 02:47 PM
شكرا لك أخي العزيز

mamm5
17-08-2010, 11:26 PM
الف الف شكر .......
مجهود رائع و جميل
انا مبتدئ فى لغة الدلفى و قد حاولت فى البداية تجريب البرنامج و لكنه لم يعمل بشكل سليم حيث انه بعد تحميل المرفقات الى الدلفى و استكمال الاكواد حدث ان عرض رسالة خطاء خاصه ب iiehttp3 و لكن عند اضافة المرفقات مع مجلد البرنامج اشتغل بصورة ممتازة
و لكنها مع الاسف على السيرفر المحلى فقط فعند رفعها على الموقع لم يتم الاتصال بصورة صحيحة

Black_Dragon
29-11-2010, 06:03 PM
السلام عليكم ورحمة الله وبركاته

أولاشكر خاص لصاحب هذا الموضوع القيم وبارك الله فيك وجزاك كل خير

أخى فى الله Mamm5 قم بأعطاء التصريح 777 للمجلد المحوى لملف ال txt وأيضا لملف ال txt وأن شاء الله راح يتم الأتصال بالملف
حيث أن الموقع لا يعطى هذا التصريح وهو الخاص بالتعديل على الملف لكن سوف يقول هذا التصريح بالتعديل أن شاء الله
موفق

مبرمج هاوي
03-12-2010, 11:03 AM
كيف يمكن تثبيتها على دلفي 2010

S.FATEH
03-12-2010, 12:30 PM
السلام عليكم

توجد نسخة لدلفي 2009 اما 2010 لم اجربها ان شاء الله احد الاخوة يساعدك


سلامي

المحجوب
03-12-2011, 04:46 AM
تم اضافة المكون بنجاح شكر خاص لصاحب الموضوع وعلى الطرح المميز
تستاهل تقييم ع الموضوع 10\10

onexite
05-12-2011, 05:03 PM
تم اضافة المكون بنجاح شكر خاص لصاحب الموضوع وعلى الطرح المميز
تستاهل تقييم ع الموضوع 10\10

استخدم مكونات indy/idhttp