تطبيق Web باستخدام FPC على VM
#1
السلام عليكم ورحمة الله،

سأحاول في هذا المثال أن ألخص طريقة برمجة تطبيق/موقع ويب باستخدام FPC على آلة افتراضية VM من خلال توليد ملفات cgi
سأستخدم الموقع koding.com الذي يقدم استضافة VM مجانية (يمكنك استخدام موقع آخر إن كان يوفر صلاحيات الإدارة)

1- بعد إنشاء حساب على koding قم بالتسجيل وتثبيت FPC كالآتي:
كود :
sudo apt-get install fpc

وافق على التثبيت بـ Y عند السؤال...

2- أنشئ ملف وليكن hellofpc.pas على جذر المسار، واكتب فيه:
PHP كود :
begin
    WriteLn
('content-type: text/html;');
 
   WriteLn;
 
   WriteLn('<h3>Hello Delphi4arab!</h3>');
end. 
3- قم بتجميع الملف كالآتي:
كود :
fpc hellofpc.pas -o"Web/hellofpc.cgi" 

انتهى.
وبهذا نحصل على ملف cgi يمكن لأي خادم ويب قراءته، يمكنك تصفح الناتج على الرابط:
http://USERNAME.koding.io/hellofpc.cgi

غير USERNAME إلى اسم تسجيلك.

ملاحظة: جعلت مسار التوليد Web حتى يتم تعريض الملف الناتج إلى التصفح.

الآن، سنقوم بكتابة مثال آخر لاستقبال بيانات post من خلال نموذج تسجيل Login Form

PHP كود :
uses 
    Classes
, dos;

var
 
 a:string;
 
 c:char;
 
 Str: TStringList;
 
 
begin

  
// output legal http page
 
 WriteLn('Content-Type:text/html;');
 
 WriteLn;
 
 WriteLn('<!doctype html><html><head><title>Hello FPC</title></head><body>');
 
 
  WriteLn
('<form action="#" method="post">');
 
 
  WriteLn
('<input type="text" name="username" id="username" placeholder="User Name" />');
 
 WriteLn('<input type="password" name="password" id="password" placeholder="Password" />');
 
 WriteLn('<input type="submit" value="Login" />');
 
 
  WriteLn
('</form>');
 
 
  
// demonstrate GET result
 
 //WriteLn('GET: ', GetEnv('QUERY_STRING'));
 
 
 // demonstrate POST result
 
     a:='';
 
     while not eof(input) do begin
        read
(c);
 
       a := a+c;
 
     end;
 
     
    if a 
<> '' then begin
      Str 
:= TStringList.Create;
 
     ExtractStrings(['=', '&'], [], @a[1], Str);  
      
      writeln
('<p>User Name: ', Str[0]);
 
     WriteLn('</p>');
 
     writeln('<p>Password: ', Str[1]);
 
     WriteLn('</p>');
 
     
      Str
.Free;
 
   end else begin
        WriteLn
('<p>You are not logged in</p>');
 
   end;
 
 
  WriteLn
('</body></html>');
end. 

ملاحظات: 
- استخدمت TStringList في المثال، والأفضل أن تستختدم TRequest من المكتبة HTTPDefs لقراءة البيانات (وهذا يحتاج إلى تثبيت تجميعة TFPWebModule...)
- هناك إطارات عمل يمكنك تجربتها إذا أردت عمل تطبيقات كاملة، ينظر:
http://brookframework.org/

بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#2
جميل جدا .. بارك الله فيك أستاذنا
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم