ط§ظ„ط¯ط±ط³ ط§ظ„ط´ط§ظ…ظ„ ظ„ط´ط±ط* ط§ظ„ط³ط¨ط¹ ظ†ظ‚ط§ط· ط§ظ„ط°ظ‡ط¨ظٹط© ظ„طھط¹ظ„ظ… ط§ظ„php










بسم الله الرحمن الرحيم

كثيرا ممن أرادو تعلم لغة البرمجة الphp يواجهوا صعوبات فى تطبيقها, خصوصا
لو أرادوا ان يستغلوا ما تعلموه بأنتاج شىء حى,انطلاقا من هذه المشكله,
أحببت ان أقدم لكم هذا الدرس مفصل والذى سيحل لكم هذه المشكلة, والدرس مفصل سوف
يفتح لكم آفاق كثيره فى فهم الphp بشكل جيد, لانى سأستعرض لكم الامثلة التقليدية الغير معقدة, وسنتدرج فى صعوبتها لتفهم كيف تلعب وتتحكم
أنت بالphp وأن تخضعها لتفكيرك وخبرتك ,وليس ان تكون انت خاضع لها,

اولا دعونا نستعرض ما راح نشرح طريقةه فى الدرس مفصل كفهرس منظم للدرس مفصل:



1-اول كود code حقيقى ستكتبه بيدك
2-ادراج كود code php فى كود codehtml وكيف تحترف ذلك
3-المصفوفات arrays وكيف تحترف التعامل بكافة أنواعها
4-الحالات الشرطية if وكيف تستخدم أكثر من أسلوب لها
5-الوظائف المعقده functions وكيف تخضعها لك بسهوله
6-روابط الphp فى المتصفح php url parameter وكيف تتعامل معها
7-مكتبة الcurl وجلب البيانات من اى موقع(الاساسيات والاحتراف)


وقبل أن أبدأ , عليكم بتنفيذ هذه الملاحظات جيدا وبتركيز عالى:


1-اولا كل كود code عليك بكتابته بيدك على الاقل 3 مرات
2-وأنت بتكتب الكود code, أفهم ما تكتبه وحاول تحفظ على الاقل الطريقة
3-بعد تنفيذ كافة أمثلة الدرس مفصل, حاول ان تمسك عنوان كل نقطة فى الدرس مفصل, وتقوم بكتابة كود code جديد يكون بنفس الطريقة دون النظر للامثلة





نبدأ على بركة الله ........


اولا: اول كود code حقيقى ستكتبه بيدك




شاهد المثال العملى من هــنــا

قبل ان أبدأ معكم بما هو جديد عليكم, دعونا نسخن معكم بمثال بسيط
لكود code بسيط فى كيفية كتابة كود code php بسيط, وطبعا حتى نترجم الكود code لشىء حى
سنحتاج لسيرفر SERVER محلى به حزمة ترجمة الphp كappserv و xamp

نشوف الكود code:

رمز Code:
<?php $nickname = 'vista-design'; echo '<p>This is PHP</p>'; echo &quot;<p>My name is $nickname</p>&quot;; echo '<p>i am aweb developer '.$nickname.'</p>'; ?>
طبعا ناتج هذا الكود code سيكون :

رمز Code:
this is php my name is vista-design there is aweb developer called vista-design

قد ترى ان هذا الكود code بسيط, لكن أريدك أن تستغل كل شىء فى هذا الكود code
فهو حصيلة لاشياء كثيرة ستتعلمها من خلاله وهى :

1-طريقة ادراج وسم html مثل <p> بداخل كود code php
2-استخدام المتغير ك nickname$ واستخدامه
3-كيف تضع المتغير ك nickname$ بين كود code html

هل رأيت ما استفدنا من هذا الكود code البسيط..........



ثانيا:ادراج كود code php فى كود codehtml وكيف تحترف ذلك





شاهد المثال العملى
من هــنــا

سنتعلم مع هذه الجزئية كيف يمكنك استخدام كود code php داخل كود code html
وتطبيقه

لنأخذ هذا المثال البسيط ونطبق عليه :


رمز Code:
<?php $firstname = 'mohamed'; $secondname = 'amin'; $age = 24; $job = &quot;web developer&quot;; ?> <h1>personal identity</h1> <p>my first name is <?php echo $firstname;?> and the second name is <?php echo $secondname;?> ,the previous was my full name,now my age is <?php echo $age;?> and my current job is <?php echo $job;?> i hope now u knew my full identification in abrief.</p>

وناتج تنفيذ هذا الكود code:

رمز Code:
personal identity my first name is mohamed and the second name is amin ,the previous was my full name,now my age is 24 and my current job is web developer.i hope now u knew my full identification in abrief

المثال العملى من هــنــا


طبعا الكود code عبارة عن تعريف باسمى وسنى ووظيفتى بالانجليزية ,

من هذا الكود code البسيط , أكيد ستتعلم الاتى:

1-كيف ادرجنا متغير php وتنفيذه داخل كود code html بسيط




ثالثا:المصفوفات واحتراف اللعب بها




تعتبر المصفوفات arrays من الاشياء المهمه والمستخدمه بكثرة,اتقانك التعامل مع المصفوفات سوف يحسن من مستواك البرمجى , لذلك شاهد كيف ستتعلم بنفسك احتراف التعامل مع المصفوفات مع الشرح طريقة الأتى:

كلنا نعلم وعلى سبيل المثال البسيط هذه النوعية من المصفوفات

رمز Code:
$lampstack = array('Linux','Apache','MySQL','PHP');
دعونا من هذه المصفوفه نقوم بتطويرها أكثر معرفة :

رمز Code:
<ul> <?php $lampstack = array('Linux','Apache','MySQL','PHP'); echo '<li>Operating System:'.$lampstack[0] . '</li>'; echo '<li>Server:' . $lampstack[1] . '</li>'; echo '<li>Database:' . $lampstack[2] . '</li>'; echo '<li>Language:' . $lampstack[3] . '</li>'; ?> </ul>

جرب المثال العملى من هـــنــا


طبعا هذه الطريقة تعتبر شىء من الغباء فى البرمجة , لاننا هنا لم نستخدم
قوة المصفوفات فى ان تسهل لنا مهمة عرض البيانات ,
فتخيل مثلا لو انك اردت ان تكتب 100 مصفوفة , هل كل مره ستكتب هذا الكم من الاسطر البرمجية لعمل لست li لعرض بيانات المصفوفة

لذلك سنقوم بتسحين وتسهيل عرض البيانات باستخدام لوب loop ب for
تقوم بتوليد لست li اوتوماتيكية لاى مصفوفة تريد طبع قيم متغيراتها

رمز Code:
ul> <?php $lampstack = array('Linux','Apache','MySQL','PHP'); $labels = array('Operating System','Server','Database','Language'); $length = sizeof($lampstack); for( $i = 0;$i < $length;$i++ ){ echo '<li>' . $labels[$i] . ':' . $lampstack[$i] . '</li>'; } ?> </ul>

المثال العملى
من هــنــا

هل ترى بعينك ان الكود code أصبح أكثر ديناميكية وأسهل, فلقد قمنا بعمل لوب باستخدام for بحيث فى كل مره نريد طبع قيم مصفوفة , ستقوم هذه القطعة بعمل ذلك بنفسها بدون الحاجه للطريقة السابقة التقليدية

ولاحظ متغير length$ وظيفته لتحديد حجم المصفوفة لنضع حد أقصى للوب عند استخدام الfor



الحين شوفنا مثال جيد لاستخدام المصفوفات, لكن دعنا نسهل أكثر وأكثر
على أنفسنا هذا المثال عن طريق استخدام المصفوفات الارتباطيه associative arrays والتى يمكننا ان نجمع المصفوفتين السابقتين الخاصة بالمتغيرين lampstack$ والlabels$ فى مصفوفة واحدة فقط




شاهد الكود code:

رمز Code:
<ul> <?php $lampstack = array( 'Operating System' => 'Linux', 'Server' => 'Apache', 'Database' => 'MySQL', 'Language' => 'PHP' ); $length = sizeof($lampstack); $keys = array_keys($lampstack); for( $i = 0;$i < $length;$i++ ){ echo '<li>' . $keys[$i] . ':' . $lampstack[$keys[$i]] . '</li>'; } ?> </ul>

جرب المثال العملى
من هـــنــا

لاحظ ان الarray_keys وظيفتها انها ستعطينا مفاتيح keys الموجوده داخل المصفوفة لنستخدمها أثناء عمل لوب للمصفوفة ب for

والمفاتيح فى الكود code السابق أقصد بها operating system,server,database,language


دعنا بعد المثال السابق ان نسهل على أنفسنا أكثر وأكثر وأكثر
بان نسوى لوب للمصفوفة باستخدام foreach بدلا من الfor

شوف الكود code:

رمز Code:
<ul> <?php $lampstack = array( 'Operating System' => 'Linux', 'Server' => 'Apache', 'Database' => 'MySQL', 'Language' => 'PHP' ); foreach( $lampstack as $key => $stackelm ){ echo '<li>' . $key . ':' . $stackelm . '</li>'; } ?> </ul>


شوفت السهوله فى الاستخدام, واحب اذكركم بطريقة استخدام foreach
فبداخل هذه اللوب توجد العبارة

رمز Code:
$lampstack as $key => $stackelm
وتعنى اننا سنعامل المتغير lampstack ك(as) كمفتاح key$ له قيمة وهى stackelm$


بهيك أعتقد بعد تطبيقك وفهم الاكواد السابقة جيدا, سوف تحترف التعامل
مع المصفوفات بشكل جيد.........



رابعا:الحالات الشرطية واللعب بها






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

نبدأ بهذا المثال:

رمز Code:
<ul> <?php $lampstack = array( 'Operating System' => 'Linux', 'Server' => 'Apache', 'Database' => 'MySQL', 'Language' => 'PHP' ); if( sizeof($lampstack) > 0 ){ foreach( $lampstack as $key => $stackelm ){ echo '<li>' . $key . ':' . $stackelm . '</li>'; } } ?> </ul>

اول مثال وهو استخدام الsizeof , فهى تستخدم لتحديد للتأكد
من ان هناك قيمة موجوده للمتغير بالفعل اولا, والمثال السابق استخدمناه للتأكد ان المصفوفة بها قيم أكبر من 0 أى ان هناك قيم بالفعل


طريقة أخرى :

رمز Code:
<ul> <?php $lampstack = array( 'Operating System' => 'Linux', 'Server' => 'Apache', 'Database' => 'MySQL', 'Language' => 'PHP' ); if( isset($lampstack) ){ foreach( $lampstack as $key => $stackelm ){ echo '<li>' . $key . ':' . $stackelm . '</li>'; } } ?> </ul>

باستخدام isset ايضا نقدر ان نتأكد من ان المتغير lampstack$ تم ظبطه
وتحديده , اى بالفعل موجود كمتغير له قيمة وهى المصفوفة .......


لذلك تذكر دائما مع الحالة الشرطية ال sizeof وisset فى اى حالة أردت فيها ان تتأكد من كونها تعمل او لها قيمة ام لا..........


خامسا:الوظائف المعقده وسهولة التحكم بها






ما رأيك ان نستخدم الfunction فى تسهيل المثال
السابق فى توليد لوب للمصفوفة

شاهد المثال:

رمز Code:
<?php function renderList($array){ if( sizeof($array) > 0 ){ echo '<ul>'; foreach( $array as $key => $item ){ echo '<li>' . $key . ':' . $item . '</li>'; } echo '</ul>'; } } $lampstack = array( 'Operating System' => 'Linux', 'Server' => 'Apache', 'Database' => 'MySQL', 'Language' => 'PHP' ); renderList($lampstack); $awfulacting = array( 'Natalie Portman' => 'Star Wars', 'Arnold Schwarzenegger' => 'Batman and Robin', 'Keanu Reaves' => '*' ); renderList($awfulacting); ?>

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

رمز Code:
renderList($xxxx);
حيث xxxxx هى اسم متغير المصفوفة اللى راح نطبق عليه فانكش renderlist
لعمل قائمه للمصفوفة تلقائيا

شاهد المثال العملى من هـــنــا


سادسا:روابط الphp فى المتصفح url parameters والتعامل معها



هذه الجزئية من الاجزاء المهمه والتى لابد ان نفهمها جيدا لنعرف كيف نتعامل معها

وسنعرض سويا أهم الطرق لتعرف كيف تستخدمها فى برمجياتك:


اولا: لابد ان تعلم حتى نجلب اى عنوان من شريط المتصفح , سنستخدم GET_$

مثال لرابط :

رمز Code:
http://localhost/index.php?language=fr&font=large

لو أردنا جلب البارمتر language فسيكون كالاتى:

رمز Code:
$_GET['language']
ولو أردنا جلب البارمتر font فسيكون كالاتى:

رمز Code:
$_GET['font']

دعنا نشاهد كود code بسيط

رمز Code:
<?php $name = 'vista-design'; // اذا لم يتم ايجاد اللغة الانجليزية , يتم التحويل للغة الفرنسية if( !isset($_GET['language']) ){ $welcome = 'Oh, hello there, '; } if( $_GET['language'] == 'fr' ){ $welcome = 'Salut, '; } switch($_GET['font']){ case 'small': $size = 80; break; case 'medium': $size = 100; break; case 'large': $size = 120; break; default: $size = 100; break; } echo '<style>body{font-size:' . $size . '%;}</style>'; echo '<h1>'.$welcome.$name.'</h1>'; ?>

المثال العملى
من هــنــا

من الكود code السابقة واستخدام الswitch يمكننا التغيير بين أكثر من عنوان

أمثله :

http://localhost:8888/index.php
http://localhost:8888/index.php?language=fr
http://localhost:8888/index.php?language=fr&font=large


تمعن فى الامثلة السابقة حتى تفهم هذه الطريقة قبل ان اشرح طريقة النقطه القادمه........

تمام الان, بعد ان فهمت الامثلة السابقة, لابد ان تعلم ان هذا الكود code
البسيط يحتاج لبعض التأمين من الاستغلال بحقنه بكود code خارجى او التعديل عليه ليتم اختراقه او فيما يسمى ب xss

لذلك حتى نقوم بتأمين تلك الطريقة , علينا بفلترة هذه البيانات وحمايتها,وذلك باستخدام أحد طرق الفلترة فى php والتى يمكنك
الاطلاع على شرح طريقةها من هـــنـــا


نأخذ المثال الاتى:

رمز Code:
<?php $search_html = filter_input(INPUT_GET, 's', FILTER_SANITIZE_SPECIAL_CHARS); $search_url = filter_input(INPUT_GET, 's', FILTER_SANITIZE_ENCODED); ?> <form action=&quot;index.php&quot; method=&quot;get&quot;> <div> <label for=&quot;search&quot;>Search:</label> <input type=&quot;text&quot; name=&quot;s&quot; id=&quot;search&quot; value=&quot;<?php echo $search_html;?>&quot;> </div> <div class=&quot;bar&quot;><input type=&quot;submit&quot; value=&quot;search&quot;></div> </form> <?php if(isset($_GET['s'])){ echo '<h2>You searched for '.$search_html.'</h2>'; echo '<p><a href=&quot;index.php?search='.$search_url.'&quot;> Search again.</a></p>'; } ?>

جرب المثال العملى
من هـــنــا


الكود code السابق عبارة عن فورم للبحث ,لكن فيه ميزه رائعه, وهى اننا
قمنا بتأمين المدخلات اللى راح يتم كتابتها فى مربع البحث بواسطة دالة الفلترة filter_input,هل تعلم انك لو لم يتم استخدام هذه الطريقة,
فمحرك البحث Search Engine هذا أصبح أداه رخيصة وسهله للاستغلال والاختراق
, فالمخترق قد يستغلها بزرع كود code جافا اسكربت خبيث
رمز Code:
index.php?s=&quot;<script>
بهيك عرفنا كيف نأمن الurl parameter من الاستغلال
----------


مثال ثانى لاستخدام الurl paramters لترسيخ المعلومة بشكل جيد فى عقلك


فلنفرض اننا لدينا الصفحات الاتيه داخل المجلد navbar

home.php
aboutus.php
services.php
testimonials.php
contact.php

ونريد ان تأخذ الروابط الشكل الاتى:


رمز Code:
http://localhost/navbar/index.php?pg=home http://localhost/navbar/index.php?pg=aboutus http://localhost/navbar/index.php?pg=services http://localhost/navbar/index.php?pg=testimonials http://localhost/navbar/index.php?pg=contact


بدلا ان تأخذ الشكل التقليدى مثل:

رمز Code:
http://localhost/navbar/home.php http://localhost/navbar/aboutus.php http://localhost/navbar/services.php http://localhost/navbar/testimonials.php http://localhost/navbar/contact.php

دعونا نعرف كيفية عمل هذه الطريقة سويا...........


اول كود code ال html للصفحة :

رمز Code:
<p style=&quot;display:block;padding:0px 0px 20px 0px;&quot;><a href=&quot;?pg=home&quot; title=&quot;Home&quot;>Home</a> | <a href=&quot;?pg=about_us&quot; title=&quot;About us&quot;>About us</a> | <a href=&quot;?pg=services&quot; title=&quot;Services&quot;>Services</a> | <a href=&quot;?pg=testimonials&quot; title=&quot;Testimonials&quot;>Testimonials</a> | <a href=&quot;?pg=contact_us&quot; title=&quot;Contact us&quot;>Contact us</a></p>

كود code الphp الخاص بصفحة index.php

رمز Code:
<?php if (isset($_GET['pg']) && $_GET['pg'] != &quot;&quot { $pg = $_GET['pg']; if (file_exists('navbar/'.$pg.'.php')) { @include ('navbar/'.$pg.'.php'); } elseif (!file_exists('navbar/'.$pg.'.php')) { echo 'Page you are requesting doesn´t exist'; } } else { @include ('navbar/home.php'); } ?>
عذرا على عدم وضع المثال العملى حتى لا يتم استغلاله كما تعلمون


شرح طريقة الكود code:

التأكد من وجود بارمتر وانه غير فارغ

رمز Code:
if (isset($_GET['pg']) && $_GET['pg'] !=&quot;&quot {
اذا كانت الجمله غير صحيحه, سيعود للرئيسية


رمز Code:
} else { @include ('navbar/home.php'); }

اما اذا كانت صحيحة, سيرفق البارمتر الموجود بالمتصفح فى المتغير
pg$

رمز Code:
$pg = $_GET['pg'];
ثم بعدها يتم التأكد ان كان الملف المراد جلبه موجود ام لا

رمز Code:
if (file_exists('navbar/'.$pg.'.php')) {
اذا كان موجود بالفعل , سيتم جلبه

رمز Code:
@include ('navbar/'.$pg.'.php');
اما اذا كان لا, فسيتم اعطاء عبارة بعدم وجود الملف

رمز Code:
} elseif (!file_exists('navbar/'.$pg.'.php')) {

بهيك أعتقد نكون قد هضمنا نقطة url parameters بشكل جيد






سابعا:مكتبة الcurl وجلب البيانات من اى موقع






من اجمل ما تتميز به الphp, هى قدرتها على قراءة الملفات واستعلامها من مواقع أخرى, ولعل خاصية الاستعلام الخارجية remote قد يتم ايقافها
عن طريق السيرفر SERVER للحماية, الا ان كثير من المواقع نجد ان الخاصية هذه متاحه, كمثال من هــــنــــا عند الضغط على خاصية ارفع ملفاتك, ستجدانه تم
جلب موقع اخر بداخل موقع اخر, هذه الطريقة الموجوده فى المثال السابق
تم عملها باستخدام true box فى الjquery,لكن ما رأيك ان نعطيكم الطريقة الرائعه من خلال php لجلب بيانات اى موقع ,

رمز Code:
<?php // الموقع المراد فتحه $url = 'http://www.advpphp.com'; // ابدأ الدالة $ch = curl_init(); // اخبار الداله ما هو العنوان curl_setopt($ch, CURLOPT_URL, $url); // اخبار الداله بانك تريد العوده من الموقع بمحتواه curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // ابدأ تنفيذ الدالة $output = curl_exec($ch); // انهاء استعلام الدالة curl_close($ch); // اظهار ناتج الاستعلام echo $output; ?>

يمكن تجربة المثال عمليا من هـــنـــا


هذه الطريقة يمكنك تطبيقها على اى موقع تريده , بشرط ان دالة الcurl
فى php شغاله على السيرفر SERVER وغير متوقفه


أيضا يمكننا كبعض التطوير ان نجلب البيانات على هيئة لست بعناوين محتوى الموقع


رمز Code:
<?php // حدد الموقع $url = 'http://www.advphp.com'; // ابدأ الدالة $ch = curl_init(); // اخبار الدالة ما هو نوعية عنوان الموقع curl_setopt($ch, CURLOPT_URL, $url); // اخبار الدالة بانك تريد العوده بمحتويات الموقع curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // ابدأ تنفيذ الدالة $output = curl_exec($ch); // انهاء الاستعلام curl_close($ch); t if($_GET['filter'] == 'links'){ echo '<ul>'; preg_match_all('/<a[^>]+>[^<\/a>]+<\/a>/msi',$output,$links); foreach($links[0] as $l){ echo '<li>' . $l . '</li>'; } echo'</ul>'; } else { echo $output; } ?>


حاليا يتم استخدام api او كما تسمى واجهة interface مخاطبة المبرمج ,كما يوجد فى المواقع الكبرى ك twitter




بهيك يكون انتهى درس مفصلنا , على أمل ان تكونوا استفدتوا منه جيدا.....

أخوكم vista-design







التعديل الأخير كان بواسطة vista-design; 18 - 11 - 2014 الساعة 16:49





©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى©