آموزش پی اچ پی

شروع موضوع توسط carp3 ‏3 دسامبر 2005 در انجمن برنامه‌نویسی با PHP

  1. carp3

    carp3 Member

    ارسال‌ها:
    214
    تشکر شده:
    16
    امتیاز دستاورد:
    16
    آموزش پي اچ پي - مقدماتي - قسمت اول - ( اگه غلط املائي داشتم ببخشيد [​IMG] )


    پي اچ پي چيست ؟
    پي اچ پي ( گرفته شده از : Hypertext Preprocessor ) يک زبان تحت سرور است
    -
    پي اچ پ چي کار ميتونه انجام بده ؟
    هرچي !
    نقطه تمرکز پي اچ پي تحت سرور بودن اون هست شما با پي اچ پي ميتوانيد CGI نويسي کنيد يعني کوکي بفرستيد دريافت کنيد صفحات دايناميکي ( پويا ) بسازيد و ...
    البته پي اچ پي کار هاي بيشتري نيز انجام ميدهد !

    اصلي ترين جاهايي که از پي اچ پي استفاده ميشه :

    برنامه نويسي تحت سرور - يعني برنامه نوسي براي يک سايت ! :d
    اين بهترين و به عبارتي اصلي ترين کاري که ميتونه پي اچ پيانجام بده هست

    برنامه نويسي خط فرماني
    مثل برنامه هاي تحت داس ! شما ميتونيد پي اچ پي را بدون وب سرور و مرور گر اجرا کنيد

    نوشتن برنامه هاي رو ميزي
    مثل برنامه هاي ويندوز ! النبته اين پي اچ پي براي اينکار خوب نيست به خصوص برنامه هاي گرافيکي ولي اگر پي اچ پي رو خوب بلد باشيد ميتوانيد اين کار را انجام بديد
    و برنامه هاي تحت ويندوز يا لينوکس درست کنيد

    پي اچ پي در بيشتر سيستم عامل ها کار ميکنه مثل : Linux, خيلي Unix گوناگون (در بر گينده HP-UX, Solaris و OpenBSD), Microsoft Windows, Mac OS X, RISC OS,

    و پي اچ پي از بيشتر وب سرور ها پشتيباني ميکنه مثل :
    Apache, Microsoft Internet Information Server, Personal Web Server, Netscape and iPlanet servers, Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd,
    و خيلي هاي ديگه !

    خوب پس با پي اچ پي آزادي داريد که کدام وب سرور و کدام سيستم عامل را انتخاب کنيد !

    با پي اچ پي ميتونيد خيلي راحت خروجي متن - swf - عکس و ... داشته باشيد ! :D

    همچنين پي اچ پي از خيلي از بانک هاي اطلاعاتي پشتيباني ميکنه مثل :
    Adabas D
    InterBase
    PostgreSQL
    dBase
    FrontBase
    SQLite
    Empress
    mSQL
    Solid
    FilePro (فقط خواندني)
    Direct
    MS-SQL
    Sybase
    Hyperwave
    MySQL
    Velocis
    IBM DB2
    ODBC
    Unix dbm
    Informix
    Oracle (OCI7 و OCI8)
    Ingres
    Ovrimos

    همچنين پي تچ پي ميتواند با سيستم هاي ديگر هم ارتباط بر قرار کند با استفاده از پروتکل هاي : LDAP, IMAP, SNMP, NNTP, POP3, HTTP, (برو روي ويندوز)COM و تعداد بيشمار ديگر

    حالا چه جوری پی اچ پی رو رو کامپیوتر خودمون اجرا کنیم ؟
    بهترین کار اینه که برنامه زامپ که کامل ترینشون رو دانلود کنید البته راه های خیلی دیگه ای وجود داره ولی زامپ راهترین و کامل ترینشونشون !
    http://www.apachefriends.org/en/xampp.html

    -------------------/////////////////--------------------////////////////////--------------



    به وسيه اين سيستم شما ميتوانيد برنامه هاي نوشته شده به زبان پي اچ پي نوشته شده اند را اجرا کنيد
    برنامه هاي پي اچ پي سورس باز هستند ( Open Source )
    خروجه اين سيستم ( پي اچ پي ) معمولا HTML است ( در بخش هاي بعدي خروجي هاي ديگر آموزش داده خواهد شد )
    خوب اين يعني چي [​IMG]
    به اين مثال توجه کنيد :
    PHP:

    <html>
       <head>
           <title>Example</title>
       </head>
       <body>

           <?php
           echo "Hi, I'm a PHP script!";
           ?>

       </body>
    </html>
     
    توجه داشته باشيد که پي اچ پي مانند زبان هاي قديمي ( C و پرل ) لازم نيست که براي داشتن خروجي HTML ثابت ( مثل : <head> ) کد نويسي انجام شود
    پي اچ پي ميتواند در بين کد HTML قرار گيرد چون پي اچ پي تگ شروع و پايان دارد [​IMG]

    پي اچ پي يه جورايي شبيه به جاوا اسکريپته ولي با اين تفاوت که جاوا اسکريپت بر روي کامپوتز کاربر اجرا ميشه ولي پي اچ پي بر روي سرور براي همين پي اچ پي گشتردگي بيشتري داره و امن تره
    همين تور اگه رايانه کاربر ساده و يا قديمي باشه باز هم کار ميکنه به عبارتي پي اچ پي ربط زيادي با مرور گر کاربر ندارد

    کار با پي اچ پي ساده و راحته !
    اما ميتونه حرفه اي ترين برنامه ها هم باهاش نوشته بشه
    شايد اولين بار که يک کد رو ديديد بگين واي ! اين ديگه چيه ؟
    مثلا مثال بالا را ککامل باز ميکنيم :
    خط اول :
    فهموندن به مرور گر که اين يک فايل HTML هست
    خط دوم :
    شروع شدن تگ هد
    خط سوم :
    مشخص کردن تيتر صفحه
    خط پنچم :
    بستن تگ هد
    خط ششم :
    شروع کردن کد بادي ( در بين اين تگ تمام خروجي هاي شما قرار ميگيرد)
    خط هفتم :
    فاصله ! [​IMG]
    خط هشتم :
    فهموندن به برنامه پي اچ پي که از اين به بعد ديگه کد پي اچ پي هست پس آنها اجرا کن : در بعضي موارد اين کد ؟> هم هست
    خط نهم :
    در اين خط ما با استفاده از دستور اکو ( ECHO ) يک خروجي ايجاد کرديم
    يک فرمان اکو ميتواند به روش هاي زيادي نوشته بشه
    دستور اکو تنها کاري که ميتونه انجام بده اينه که يک خروجي به سمت مرور گر ارسال کنه. همين ! البته دستور هاي ديگه اي مانند PRINT اين کار را انجام ميدن
    در زير تمام مديل هايي که اکو بکار رفته رو ميبينيد :
    PHP:

    <?php
    echo "SALAM ! ";

    echo "In yek mat
    chand khati
    hast "
    ;

    echo "in ham \n ham yek matn chand khati hast didid PHP \n rahate ! .";

    echo " karekter haye geyr mojaz ham gabol mishe !  \"mesle in   ! \".";

    // شما متيتونيد از متغير هم استفاده کنيد !
    $foo = "salam";


    echo "heloo yani  $foo"; // hello yani salam


    ?>
     
    البته مدل هاي ديگر هم ميشود اکو کرد ولي اين ها ساده ترين و پر کاربردي ترين نوعشون هستند
    ( توجه :
    اکو يک ميانبر هم هست يعني شما ميتونيد از آن سريع استفاده کنيد :
    PHP:

    <?=echo "salam" ?>
     
    )

    حالا ادامه بديم :
    خط دهم :
    در اينجا به برنامه پي اچ پي ميفهمونيم که کد پي اچ پي در اين جا به پايان رسيد و بعد از اين ديگه پي اچ پي نستند البته شما هر جا که دوباره لازم شد ميتونيد باز از پي اچ پي استفاده کنيد به شرطي که قبلش به برنامه بفمونيد که از اين به بعد کد پي اچ پي هست و بعدش هم کد را ببنديد

    خط يازدهم :
    فاصله [​IMG]

    خط دوازدهم :
    بستن تگ بادي
    خط دوازدهم بستن تگ بادي
    ----*-*-*-*--------------*-*-*-*------------*-*-*-*--------------
    حالا با هم ميبينيم که يک تابع پي اچ پي از چه قسمت هاي تشکيل شده :
    PHP:

    ECHO " Text ";
     
    خوب کد بالا يه ديد کلي از تابع هاي پي اچ پي بود بيشتر تابع ها به اين صورت هستند ولي همه نه بعضي ها فرق دارند
    حالا توضيح ميدم :
    ECHO که اسم تابع بود بعدش چون ما خواستين از يک متن استفاده کنيم از علامت " استفاده کردين اين علامت نشان دهنده اينه که از اين يه يعد متن عادي هست Text هم که متنمون هست و بعد از " براي بستن متن اسنفاده کرديم و
    در آخر هم با ; کد را بستيم ( توجه در بيشتر توابع پي اچ پي بايد آخر آنها را با ; بست پس حتما اين کار را بکنيد )
    -----------------------------------------------------------------

    حلا درساي بعدي رو بعدا ميدم ! :D


    سلام - قسمت دوم ! [​IMG] [​IMG] ديدين ادامه دادم !
    تو اين قسمت ميخوام نحوهي سواختن يک فرم ارتباط با ما رو نشون بدم
    نحوه کار اين جور فرم ها اينجويه :
    2 حالت وجود دارد :
    1. ذخيره اطلاعات درون بک بانک اطلاعاتي مانند MySQL
    2. ايميل کردن اطلاعات براي دارنده سايت

    خوب هوتون ميدونيد که راه دوم راحتره و امن تره
    راه دوم چند خط بيشتر برنامه نوسيس نميخواد ! [​IMG]


    براي نوشتن راه دوم اول بايد يه فرم ارتباط با ما ايجاد کنيد که ربطي به پي اچ پي ندارده ولي ميگم :
    HTML:

    <p>Contact us : </p>
    <form action="save.php" method="POST">
      <p>Your name : <input type="text" name="name" size="20"></p>
      <p>Your Email&nbsp; Address : <input type="text" name="mail" size="20"></p>
      <p>Your comment : </p>
      <p><textarea rows="7" name="comment" cols="28"></textarea></p>
      <p><input type="submit" value="Submit" name="B1"></p>
    </form>
     
    خوب کد بالا اطلاعات رو به روش پست براي پي اچ پي ميفرسته
    (حالا يه مقدار در باره فرق بين پست و گت خرف ميزنم ! ( اگه ميدونيد : [​IMG] )
    روش گت get محدوديت داره ولي در بعضي موارد واقعا کاربرديه
    در روش پست اطلاعات ارسالي در آدرس نشون داده ميشه :
    http://www.domain.com/save.php?name=pedram&mail=info@carp3.com&comment=this is a test
    در کد بالا اطلاعات زير به فايل save.php ارسال شده :
    name : pedram
    mail : info@carp3.com
    comment : this is test
    خود ديديد که اطلاعات ديده ميشه و اگه اطلاعاته مهمي باشه لو ميره ! :D
    محدوديت هم داره اونم اينه که هر اطلاعات ( هر فيلد ) نميتونه بيشتر از 255 تا باشه بعني اگه از اين مقدار بيشتر باشده همش ارسال نميشه ! [​IMG]
    ولي پست وحدوديت نداره و آدرس به اين صورت هستش :
    http://www.domain.com/save.php
    هيچي به آدرس اضافه نميشه و اطلاعات با امنيت بيشتري ارسال ميشه و هيچمحدوديتي نداره پس از پست بيشتر استفاده کنيد !
    حالا برگرديم به کار خودمون ! :D


    اين رو توي کد پي اچ پيتون بزاريد : ( sve.php )
    PHP:
               
    <?PHP
    //Adrese email shoma :
    $to = "info@domain.com";
    //END
    $name = $HTTP_POST_VARS['name'];
    $mail = $HTTP_POST_VARS['mail'];
    $comment = $HTTP_POST_VARS['comment'];
    $message = "
    Hi ! \n
    some one send a email from your contact us page : \n
    From : $name \n
    comment :  \n
    $comnent  \n
    END "
    ;
    $mail_headers = "";
    $mail_headers .= "From: $mail\n";
    $mail_headers .= "Reply-to: $mail\n";
    $mail_headers .= "Return-Path: $mail\n";
    mail($to,'Contcat us page - $name ',$message,$mail_headers) or die("Can't send email - please tryagain latar ";
    echo("Your Comment Saved ! ");
    ?>
     
    خوب حالا به تحليل اين کد ميپردازيم :
    خط اول : شروع کد
    خط دوم : توضيحات ( در پي اچ پي براي گزاشتن توضيح در کد بايد اول دو تا / بزاريد ( // ) يا اولش */ و آخريش /* بزارين )
    حط سوم : يک متغير که توش آدرس ايميل شما نوشته شده - متغير هاي با $ شروع ميشود
    خط چهرم : باز هم يک توضيح
    خظ پنجم : فهموندن که متغير name$ چيه ؟ اصلا چه چيزي بايد تو اونها ذخيره شده براي اين کار اينجوري کار ميکنيم :
    براي ارسال به وسيله پست :
    PHP:

    $motegayer = $HTTP_POST_VARS['namefild'];
     
    براي ارسال به وسيله گت :
    PHP:

    $motegayer = $HTTP_GET_VARS['namefild'];
     
    البته راه هاي ديگه اي هم وجود داره که اين راه استاندارد ترينشونه
    خط ششم و هفتم مانند خط پنجم هستند
    و اما خط هشتم :
    در اين خط ما يک هدر ( سرانداز ! ) واسه ناممون ميسازيم که البته اين هدر يک هدر استاندارد نيست !
    البته در خط هشتن اين هدر خليه و ما فقط يک استرينگ خالي ميسازيم
    خط نهم :
    در اين خط ما به متغير mail_headers يک مقدار اضافه ميکنيم ( براي اضافه کردن به يک متغير کافيه که قبل از مساوي يه نقطه ( . ) اضافه کنيد )
    در اين هدر ما نام فرستنده نامه را مشخص ميکنيم
    در خط بعدي ( دهم ) اينکار تکرار ميشه و ما مسيري که براي جواب دادن نامه بايد به آن ارسال شود را مشخص ميکنيم
    در خط بعديش ( يازدهم ) ما مسيري براي پس فرستادن ايميل را مشخص ميکنيم ( مثلا وقتي که ميل باکس شما پر شده باشد نامه برگش زده خواهد شد )
    خط دوازدهم :
    در اين خط ما نامه را بوسيله اسال کننده نامه در پي اچ پي ارسال ميکنيم :

    PHP:

    mail('FROM@FROM.COM,'SUBJECT','EMAIL BODY HERE','HEADER HAYE EMAIL);
     
    اون ( die مردن ) واسه اينه که اگه نتونست ايميل رو ارسال کنه صفحه رو متوقف کن ( بکش ! ) و ادامه ندا و پيام داخلش رو نشن بده ( Can't send email - please tryagain latar )
    اين موقعي رخ ميده که سرور شلوغ باشه يا به اينترنت وصل نباشه ! ( مثل موقعي که در لومال تستش ميکنيد )
    در خط سيزدهم :
    در اين خط هم يه پيام به کاربر ميديم و بهش ميگيم که پيام شما ذخيره شد اگه ايميل ارسال نشده باشه اين نشون داده نميشه چون اون DIE صفحجه رو متوقف کرده !
    خط آخر :
    کد پي اچ پي تموم شد [​IMG]
    ---------------------
    خسته شدم ! دفعه بعد بقيه ( آموزش هاي بعدي )



    ربطی نداره فک کنم ب خواتر کلاسش هست !
    قعلا یه قسمت دیگه آماده کردم :
    سلام - باز اومدم ! [​IMG] [​IMG] [​IMG] [​IMG] [​IMG] [​IMG]
    اين دفعه ديگه اسکريپت آماده درس نميدم و نکته هاي ساده و کيليدي رو ميگم ( نکته ها خيلي ساده و کاربردي هست [​IMG] )

    خوب
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% : اوليش :
    اول اينکه چجوري تو يه if تعييد کنيم که اگه مثلا date$ مساوي فلان نبود ادامه بده ؟ :
    براي اين کار قبل از تعيرف استرينگ يا قيب از == يک علامت تعجب ميزاريم ( ! ) يعني : ==! - يعني اگه مساوي اون نبود ادامه بده : يک مثال - در مثال پايين اگه مقدار date$ مساوي با test نباشه ادامه ميده اگه مساوي باشه ادامه نميده

    PHP:

    <?PHP
    if(!$date=="test"){
    echo("Hello world ! ");
    }
    ?>
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% : دوميش :
    اگه خواستيم که صفهمون ارور(error) نده ( يعني اگه يه مشکلي پيش امد ( مثلا وقتي ميخواد ايميل بفرسته و سرور به اينترنت وصل نباشه )
    تو اول صفحمون يکي از اينا ( بسته به نوع کارتون داره ) اضافه ميکنيم :
    PHP:
    <?PHP
    //hich errori neshon nemide
    error_reporting (0);
    //fagat FATAL ERROR ro neshon mide
    error_reporting (E_ERROR);
    //Fagat WARNING haro neshon mide
    error_reporting (E_WARNING);
    // Fagat PARSE error haro neshon mide
    error_reporting (E_PARSE);
    //fagat NOTICE haro neshon mide
    error_reporting (E_NOTICE);
    ?>
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% : سوميش :
    گرفتن USER AGENT ( مرور گر کاربر ) ( با استفاده از اين ميشه تشخيس داد که کاربر از چه مرور گري استفاده ميکنه ) :
    PHP:
    <?php
    echo $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
    ?>
    اين کد اينو خروجي ميده :
    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
    البته در مرورگر ها و ويندوز هاي مختلف فرق داره
    اين اسکريپت هم اگه از آي اي استفاده کنيد يه چيز از خود در ميکنه ! ( منو جو گرفت )
    PHP:

    <?php
    if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
       echo 'You are using Internet Explorer.<br />';
    }
    ?>
     
    حلا يه نموره در باره strpos با هم حرف بزنيم اين يه چيز تو مايه هاي find خودمونه ترتيبشم به اين صورته :
    PHP:
    strpos("matne asli","Matni ke bayad peyda kone" );
    //////////////////////
    injori ham mishe :
    $mystring = 'abc';
    $findme   = 'a';
    $pos = strpos($mystring, $findme);
     
    اگه پيدا کرد TRUE خروجي ميده اگه نکرد FALSE خورجي ميده

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% : حرف آخر :
    خوب اين چند تا چيزه جالب و بدرد بخور که اميد وارم به دردتون خرده باشه
    در آخر هم بايد بگم خدا پدر آصف رو بيامرزه که اگه اين QSmile نبود بايد همشو آنلاين مينوشتن ! [​IMG]
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



    حالا قسمت چهارم !
    سلام دوباره [​IMG] [​IMG]
    [​IMG] [​IMG] [​IMG] [​IMG]




    اين دفه ميخوام ياد بدم که چجوري يه سيستم نمايش تعداد بازديدکنند ها بسازيم اين سيستم فقط نياز به 2 فايل داره :
    فايل اول : - add.php
    توش اينو بزاريد بعدا ميگم چه تغييري نياز داره و فايل رو باز ميکنيم ( تحلبل )
    PHP:

    <?PHP
        $big_num = file("num.txt");
        $big_num = $big_num[0];
        if(!$big_num or $big_num == ""){ $big_num = 1; }
        $big_num ++;
        $num_file = fopen("num.txt", "w");
        fwrite($num_file, $big_num);
        fclose($num_file);
    ?>
     
    خط اول : شروع پي اچ پي
    خط دوم : معيت کردن فايلي که آمار قبلي رو ازش بخونه شه ( معمولا با فايلي که روش نوشته ميشه يکي هست در اينجا فايل num.txt هست
    براي خواند يک فايل در پي اچ پي ميتونيم از readfile و file استفاده کنيم که البته اين دو با هم فرق دارن ولي تو اينجا از جفنشون ميشه استفاده کرد
    خط سوم : در اين جا مشخص ميکنيم که ما خط اول رو نياز دارم ( 0 )
    خط چهارم : مشخص ميکنيم که اگه استرينگ وجود نداشد ( اول ! گذاشتيم ) يا اگه خلي بود ( ""== ) اين متغير ( استرينگ ) big_num$ را روي 1 تنظيم کنه اي موقه اي استفاده ميشه که فايل خالي باشه ( اولين بار باشه که کونتور اجرا ميشه )
    خط پنجم : در اين خط ما به متغير big_num$ يک شمازه اضافه ميکنيم ( ++ )
    خط ششم : در اين خط هم ما فايل را به به قصد نوشتن باز ميکنيم ميبينيد گه در انتخاب دوم w رو اضافه کدريم کل چيز هايي که ميتونيم انتخاب کنيم اينها هست :
    r : باز کردن فايل فقط براي خواندن
    r+ (اول r بعد + : +r ) : باز کردن فايل براي خواند و نوشتن ( نشانهگر را در اول فايل قرار ميدهد )
    w : باز کردن فايل فقط براي نوشتن - نشانه گر را در اول فايل قرار ميدهد يعني در هنگام نوشتن محتويات قبلي پاک ميشود - اگر فايل وجود نداشته باشد فايل سعي در ساختش ميکنه
    w+ (اول w بعد + : +w ) : باز کردن فايل براي نوشتن و خواندن - نشانه گر در ابتداي فايل قرار ميگيريد - اگر فايل وجود نداشته باشد سعي در ساخت آن ميکند
    a : باز کردن فايل براي نوشتن - نشانه گر در انتهاي فايل قرار ميگيرد
    a+ (اول a بعد + : +w ) : باز کردن فايل براي نوشتن و خواندن - نشانه گر در انتهاي فايل قرار ميگيرد - اگر وجود نداشت سعي در ساختنش ميکند
    x : ساختن و باز کردن فايل براي نوشتن - نشانه گر در اول فايل - اگر فايل وجود داشت fopen خورحي FALSE ميدهد - اين فقط در فايل هاي لوکال کار ميکند
    x+ (اول x بعد + : +x ) : ساختن و باز کردن فايل براي نوشتن و خواندن - نشانه گر در اول فايل - اگر فايل وجود داشت fopen خورحي FALSE ميدهد - اين فقط در فايل هاي لوکال کار ميکند


    خط هفتم : نوشتن بر روي فايل ( num_file$ )
    خط هشتم : بستن فايل
    خط نهم : پايان کد پي اچ پي ! [​IMG]
    -
    خوب [​IMG]
    حالا بايد اينو تو صفحه اصليتون اينکلود ( include) کنيد با اين دستور :
    PHP:

    <?php
    include("add.php");
    ?>
    خوب حالا يه فايل خالي درست کنيد و سي اچ مود ( CHMOD ) آن را روي 777 قرار دهيد اسمش رو هم num.txt بزاريد
    حالا هر جا خواستيد که تعداد بازديد کننده ها رو ببينيد فايل رو اينکلود کنيد :
    PHP:

    <?php
    include("num.txt");
    ?>
    -----------------------------تمام شد ! [​IMG] [​IMG] [​IMG] [​IMG] [​IMG]

    سي اچ مود : CHMOD :
    CHMOD کردن فقط در سرور هاي لينوکس نيازه و ويندوز نيازي به سي اچ مود کردن نداره
    براي اين کار در برنامه هاي اف تي پي کليک راست کنيد و بر روي Permission يا properties کليک کنيد و تمام تيک ها را بزنيد يا عدد را به 777 تغيير بدين
    همين !
    --------------
    تا دفعه بعد خدا حافط [​IMG]
     
    نوشته شده توسط carp3 در ‏3 دسامبر 2005
    iLove، vahid_3d، maysam.m و 2 نفر دیگر از این ارسال تشکر کرده اند.
  2. carp3

    carp3 Member

    ارسال‌ها:
    214
    تشکر شده:
    16
    امتیاز دستاورد:
    16
    سلام ! [​IMG]
    بعد از يک ماه تاخير بالاخره قسمت شيشومشو هم نوشتم ! [​IMG]
    تو اين قسمت ميخواه در باره جي دي صحبت کنم و راه استفاده از اونو بگم ... [​IMG]
    اول يه مقدار مقدمه ! [​IMG]

    پي چ پي فقط به دادن خروجي متن محدود نيست شما ميتونيد عکس هاي متعددي با فرمت هاي متنوع با پي اچ پي خروجي داشته باشيد مثل PNG , GIF , JPG . WBMP , XPM و البته چندين فرمت ديگر که بايد پي اچ پي رو با اون ساطگاري بدين
    پي اچ پي ميتونه عکس رو مستقيم به سوي مرو گر هدايت کنه
    البته پي اچ پي به صورت پيش فرض اي ساخت عکس پشتيباني نميکنه که بايد آن را نصب کنيد ( GD ) البته اين کتابخانه ( library ) روي بيشتر سرور ها به صورت پيش فرض نصب هست ...
    اما اگر نصب نبود ميتوانيد اين را از http://www.boutell.com/gd/ اينجا دانلود و نصب کنيد و يا به مدير سرور خود بگوييد که آن را نصب کند ...
    در جيدي پشتيباني از PNG در نسخه 1.6 به بعد به وجود آمد و پشتيباني از GIF در نسخه -2.0.28 به وجود آمد

    يک مثال :
    PHP:
    <?php

    header("Content-type: image/png");
    $string = $_GET['text'];
    $im     = imagecreatefrompng("images/button1.png");
    $orange = imagecolorallocate($im, 220, 210, 60);
    $px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
    imagestring($im, 3, $px, 9, $string, $orange);
    imagepng($im);
    imagedestroy($im);

    ?>
    براي استفاده از مثال بالا در صفحهات خود از اين دستور استاده کنيد :
    HTML:
    <img src="button.php?text=text">
    حالا اين مثال چيکار ميکنه ؟
    مثال بالا ( button.php ) اول فايل images/button1.png رو باز ميکنه و بعد متغير TEXT رو روش مينويشه ( به صورت يک لايه جدا )
    مثلا اگ شما دکمه هاي يکجور زيادي با متن متفاوت داريد ميتوانيد با استفاده از اين اسکيپت در وضا صرفه جويي کنيد و ديگر همه دکمه ها را در سايت آپلود نکنيد و به عبارتي دکمه به صورت ديناميکي ( dynamically ) ساخته ميشود








    در پايين ليست و نحوه استفاده تمامي توابع gd نوشته شده :

    gd_info
    دادن اطلاعات در باره نسخه و ديگر چيزهاي GD نصب شده
    :
    اين تابع خروجي از نسخه چي دي و فرمت هاي پشتيباني شده توسط جي دي و ... را به شما ميدهد :

    PHP:
    <?php
    print_r(gd_info());
    ?>
     
    مثال بالا خروجي زير را بدنبال داره ( براي همه يکسان نيست )
    کد (Text):
    Array
    (
        [GD Version] => bundled (2.0.28 compatible)
        [FreeType Support] => 1
        [FreeType Linkage] => with freetype
        [T1Lib Support] =>
        [GIF Read Support] => 1
        [GIF Create Support] => 1
        [JPG Support] => 1
        [PNG Support] => 1
        [WBMP Support] => 1
        [XBM Support] => 1
        [JIS-mapped Japanese Font Support] =>
    )
    ------------------------------
    getimagesize
    گرفتم اندازه عکس ( ابعاد)
    با استفاده از اين تابع ميتوان اندازه عکس رو به دست آورد مثلا 48*52
    اين تابع از GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM, or WBMP پشتيباني ميکند
    مثلا :
    PHP:
    <?php
    list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
    echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";
    ?>
    در نسخه 4.0.5 به بعد از URL هم پشتيبانش شد :
    PHP:
    <?php
    $size = getimagesize("http://www.example.com/gifs/logo.gif");

    ?>

    ------------------------------
    image_type_to_extension
    گرفتن پسون عکس براي image type ()
    روش استفاده :
    PHP:
    image_type_to_extension ( int imagetype [, bool include_dot] )


    -----------------------------
    image_type_to_mime_type
    گرفتن mime type يک عکس
    ( mime type در شناسوندن نوع عکس ( مثلا PNG ) به مرور گر کاربرد دارد البته در حاهاي ديگر هم کاربرد دارد )
    مثال :
    PHP:
    <?php
    header("Content-type: " . image_type_to_mime_type(IMAGETYPE_PNG));
    ?>
    اين تابع ميتواند حاوي يکي از خروجي هاي زير باشد :
    خروجي نوع عکس
    IMAGETYPE_GIF image/gif
    IMAGETYPE_JPEG image/jpeg
    IMAGETYPE_PNG image/png
    IMAGETYPE_SWF application/x-shockwave-flash
    IMAGETYPE_PSD image/psd
    IMAGETYPE_BMP image/bmp
    IMAGETYPE_TIFF_II(intel byte order) image/tiff
    IMAGETYPE_TIFF_MM (motorola byte order) image/tiff
    IMAGETYPE_JPC application/octet-stream
    IMAGETYPE_JP2 image/jp2
    IMAGETYPE_JPX application/octet-stream
    IMAGETYPE_JB2 application/octet-stream
    IMAGETYPE_SWC application/x-shockwave-flash
    IMAGETYPE_IFF image/iff
    IMAGETYPE_WBMP image/vnd.wap.wbmp
    IMAGETYPE_XBM image/xbm

    توجه : اين تابع نيازي به کتابخانه جي دي ندارد [​IMG]

    --------------------------------------
    image2wbmp
    دادن خروجي به يک فايل يا مرور گر
    مثال :
    PHP:
    <?php

    $file = 'php.png';
    $image = imagecreatefrompng($file);

    header('Content-type: ' . image_type_to_mime_type(IMAGETYPE_WBMP));
    image2wbmp($image); // output the stream directly

    ?>

    لیست بقیه توابع رو بعدا میزارم ( حد اکثر تا هفتهی دیگر ...)
     
    نوشته شده توسط carp3 در ‏3 دسامبر 2005
    Webber از این پست تشکر کرده است.
  3. carp3

    carp3 Member

    ارسال‌ها:
    214
    تشکر شده:
    16
    امتیاز دستاورد:
    16
    -----------------
    imagealphablending
    دادن حالت محو بودن به يک عکس يا نوشته
    به قول شير فرهاد اينکه گفتي يعني چه ؟
    يعني اين :
    [​IMG]

    اگه تو عکس بالا دقت کرده باشين ميبينيد که هم carp3 ديئه ميشه هم آرم پي اچ پي !
    يعني تو هم مخلوط شدن ! يا اگه با فوتشاپ کار کرده باشين اوپاسيتي رو کم ميکونه ! :D

    اين مثال نداره !
    توجه : اين تابع در جي دي 2.0.1 به بعد پشتيباني ميشود ...


    --------------------
    imageantialias
    جلوگيري از نام مستعار يا خير ...
    نحوه استفاده :
    PHP:
    imageantialias ( resource im, bool on )
    ----------------------
    imagearc
    با اين تابع ميتونيد عکس هاي هندسي بکشيد مثل دايره - بيضي - تخم مرغ [​IMG] !
    نحوه استفاده :
    PHP:
    imagearc ( resource image, int cx, int cy, int w, int h, int s, int e, int color )
    مثال :

    PHP:
    <?php

    // create a 200*200 image
    $img = imagecreatetruecolor(200, 200);

    // allocate some colors
    $white = imagecolorallocate($img, 255, 255, 255);
     
    // draw a white circle
    imagearc($img, 100, 100, 150, 150, 0, 360, $white);

    // output image in the browser
    header("Content-type: image/png");
    imagepng($img);
     
    // free memory
    imagedestroy($img);

    ?>
    اين مثال يک دايره در يک عکس 200*200 درست ميکنه

    ----------
    imagechar
    کشيدن يک حرف به صورت افقي :
    مثال :
    PHP:
    <?php

    $im = imagecreatetruecolor(100, 100);

    $string = 'PHP';

    $bg = imagecolorallocate($im, 0, 0, 0);
    $black = imagecolorallocate($im, 100, 100, 100);

    // prints a gry "P" in the top left corner
    imagechar($im, 20, 0, 0, $string, $black);

    header('Content-type: image/png');
    imagepng($im);

    ?>
     

    ----------
    imagecharup
    عين تابع بالا ولي با اين فرق که حرف رو به صورت عمودي مينويسه :
    PHP:
    <?php

    $im = imagecreatetruecolor(100, 100);

    $string = 'Note that the first letter is a N';

    $bg = imagecolorallocate($im, 255, 255, 255);
    $black = imagecolorallocate($im, 150, 150, 150);

    // prints a black "Z" on a white background
    imagecharup($im, 3, 10, 10, $string, $black);

    header('Content-type: image/png');
    imagepng($im);

    ?>
     
    ---------------
    imagecolorallocate
    احتصاص دادن يک رنگ به يک عکس
    مثال :
    PHP:
    <?php

    $im = imagecreatetruecolor('example.jpg');
    // sets background to red
    $background = imagecolorallocate($im, 255, 0, 0);

    // sets some colors
    $white = imagecolorallocate($im, 255, 255, 255);
    $black = imagecolorallocate($im, 0, 0, 0);

    // hexadecimal way
    $white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
    $black = imagecolorallocate($im, 0x00, 0x00, 0x00);

    ?>
     
    -----------------------
    imagecolorallocatealpha
    احتصاص دادن يک رنگ به يک عکس ( حالت محو )
    در مثال زير که يک مقدار پيشرفته است ولي راحته شما 3 تا دايره که تو هم محو شدن يا به عبارتي تو هم رقتن ! رو ميبينيد :
    PHP:
    <?php
    $size = 300;
    $image=imagecreatetruecolor($size, $size);

    // something to get a white background with black border
    $back = imagecolorallocate($image, 255, 255, 255);
    $border = imagecolorallocate($image, 0, 0, 0);
    imagefilledrectangle($image, 0, 0, $size - 1, $size - 1, $back);
    imagerectangle($image, 0, 0, $size - 1, $size - 1, $border);

    $yellow_x = 100;
    $yellow_y = 75;
    $red_x    = 120;
    $red_y    = 165;
    $blue_x   = 187;
    $blue_y   = 125;
    $radius   = 150;

    // allocate colors with alpha values
    $yellow = imagecolorallocatealpha($image, 255, 255, 0, 75);
    $red    = imagecolorallocatealpha($image, 255, 0, 0, 75);
    $blue   = imagecolorallocatealpha($image, 0, 0, 255, 75);

    // drawing 3 overlapped circle
    imagefilledellipse($image, $yellow_x, $yellow_y, $radius, $radius, $yellow);
    imagefilledellipse($image, $red_x, $red_y, $radius, $radius, $red);  
    imagefilledellipse($image, $blue_x, $blue_y, $radius, $radius, $blue);

    // don't forget to output a correct header!
    header('Content-type: image/png');

    // and finally, output the result
    imagepng($image);
    imagedestroy($image);
    ?>
     


    imagecolorat
    گرفتن رنگ يک پيکسل از يک عکس :
    PHP:
    <?php
    $im = ImageCreateFromPng("pic.png");
    $rgb = ImageColorAt($im, 2, 2);
    $r = ($rgb >> 16) & 0xFF;
    $g = ($rgb >> 8) & 0xFF;
    $b = $rgb & 0xFF;
    ?>
    ---------------
    imagecolorclosest
    گرفتن رنگ هاي بسته از يک عکس :
    نحوه استفاده :
    PHP:
     imagecolorclosest ( resource image, int red, int green, int blue )
    // ya :
    imagecolorclosest($im, $r, $g, $b);
    imagecolorclosestalpha
    گرفتن رنگ هاي بسته از يک عکس : همراه با آلفا
    توجه : اين تابع در جي دي 2.0.1 بخ بعد موجود ميباشد

    بقیه رو بعدا ...
     
    نوشته شده توسط carp3 در ‏3 دسامبر 2005
    sc-me و Webber از این پست تشکر کرده اند.
  4. هادی ابراهیمی

    هادی ابراهیمی Member

    ارسال‌ها:
    371
    تشکر شده:
    12
    امتیاز دستاورد:
    16
    اقا خیلی نکته جالب ادامش بده
     
    نوشته شده توسط هادی ابراهیمی در ‏9 دسامبر 2005
    tajerman از این پست تشکر کرده است.
  5. joliocesar

    joliocesar New Member

    ارسال‌ها:
    23
    تشکر شده:
    3
    امتیاز دستاورد:
    1
    دستت درد نکنه
     
    نوشته شده توسط joliocesar در ‏9 دسامبر 2005
    tajerman از این پست تشکر کرده است.
  6. joliocesar

    joliocesar New Member

    ارسال‌ها:
    23
    تشکر شده:
    3
    امتیاز دستاورد:
    1
    دستت درد نکنه
     
    نوشته شده توسط joliocesar در ‏9 دسامبر 2005
    tajerman از این پست تشکر کرده است.
  7. mehran_j

    mehran_j Member

    ارسال‌ها:
    167
    تشکر شده:
    10
    امتیاز دستاورد:
    16
    كارت عاليه...مقالت بسيار علي و روان بود
    ممنون....در ضمن ميتوني اونو به pdf تبديل كني و بذاري براي دانلود...اما به هر حال عالي بود
     
    آخرین ویرایش: ‏28 دسامبر 2005
    نوشته شده توسط mehran_j در ‏9 دسامبر 2005
    tajerman از این پست تشکر کرده است.
  8. inteligent_iut

    inteligent_iut New Member

    ارسال‌ها:
    3
    تشکر شده:
    1
    امتیاز دستاورد:
    1
    salam
    kheili mofid bood
    mersi
     
    نوشته شده توسط inteligent_iut در ‏27 دسامبر 2005
    tajerman از این پست تشکر کرده است.
  9. mehdi_php

    mehdi_php Member

    ارسال‌ها:
    91
    تشکر شده:
    8
    امتیاز دستاورد:
    6
    mer30

    ترجمه ی خوبی بود
     
    نوشته شده توسط mehdi_php در ‏27 دسامبر 2005
    tajerman از این پست تشکر کرده است.
  10. *Ashkan*

    *Ashkan* New Member

    ارسال‌ها:
    13
    تشکر شده:
    1
    امتیاز دستاورد:
    1
    agha dasdet dard nakone kolli hal dadi ;)
     
    نوشته شده توسط *Ashkan* در ‏28 دسامبر 2005
    tajerman از این پست تشکر کرده است.
  11. carp3

    carp3 Member

    ارسال‌ها:
    214
    تشکر شده:
    16
    امتیاز دستاورد:
    16
    ممنون فکر نکنم حالا حالاها فقط کنم ادامه بدم ... ولی سعی میکنم ! :d
     
    نوشته شده توسط carp3 در ‏1 ژانویه 2006
    nvb، tajerman و livan از این ارسال تشکر کرده اند.
  12. livan

    livan New Member

    ارسال‌ها:
    12
    تشکر شده:
    5
    امتیاز دستاورد:
    1
    فایل پی دی اف

    سلام به همه
    مرسی از دوستان که لطف کردند و آموزش رو نوشتن
    من یک فایل پی دی اف در مورد آموزش پی اچ پی میخوام
    دوستان اگه لطف کنن لینک دانلودی چیزی دارن بدن که لازم دارم ناجور
     
    نوشته شده توسط livan در ‏8 دسامبر 2008
    tajerman از این پست تشکر کرده است.
  13. I.NoBody

    I.NoBody Active Member

    ارسال‌ها:
    1,157
    تشکر شده:
    365
    امتیاز دستاورد:
    36
    دوستاني كه از اين مبحث استفاده كردند يا ارزشي براي كار carp3 قائل هستند، لطفاً روي دكمه تشكر مربوط به ايشون كليك كنند.
     
    نوشته شده توسط I.NoBody در ‏8 دسامبر 2008
    tajerman، livan و Webber از این ارسال تشکر کرده اند.
  14. livan

    livan New Member

    ارسال‌ها:
    12
    تشکر شده:
    5
    امتیاز دستاورد:
    1
    آموزش وبلاگ نویسی یا ساخت وبلاگ

    ضروری
    سلام
    اگه کسی در زمینه کد نویسی برای وبلاگ ( ساخت یک وبلاگ برای بلوگفا ) سر زسته ای داره و میتونه به من کمک کنه بگه
    در مورد پی اچ پی هم اگه فایل پی دی اف دارین بذارین برای دانلود ممنون میشم اگه لطف کنین
    ببخشید که این همه دستور دادم
    متشکر
    :rose:
    ضروری
     
    نوشته شده توسط livan در ‏9 دسامبر 2008
    tajerman از این پست تشکر کرده است.
  15. I.NoBody

    I.NoBody Active Member

    ارسال‌ها:
    1,157
    تشکر شده:
    365
    امتیاز دستاورد:
    36
    فکر کنم بهتره برای این مطلب یه تاپیک دیگه برنید
     
    نوشته شده توسط I.NoBody در ‏9 دسامبر 2008
    tajerman و livan از این پست تشکر کرده اند.

به اشتراک بگذارید