السلام عليكم و رحمة الله و بركاته
بسم الله الرحمن الرحيم و الصلاة و السلام على اشرف المرسلين سيدناو نبينا محمد بن عبد الله النبي الامى و على اله و اصحبه اجمعين
مبدأيا و قبل الخوض فى سرد و كتابة مقارنات و الخوض فى نقاط ضخمة سؤال لكل قارئ لهذا الموضوع
هل تظن نفسك محترف PHP ؟ هل تظن انه يمكنك ان تقوم بكل ما يطلب منك مستخدما لغة الــ PHP ؟ ما هى فكرة الاحتراف من وجهة نظرك ؟
امممم ؟ ايه مفيش ردود ؟ اظن ان كل واحد دلوقتى ممكن يسأل نفسه السؤال ده ويفكر فيه و يلاقى اجابة او رد و ممكن لا ؟ و غالبا فيه ناس كتير ممكن تقول ايه السؤال ده ؟ انا عديت المرحلة ديه خلاص احتراف مين و بتاع مين انا حبدأ لغة تانية خلاص الــ PHP بالنسبالى Piece Of Cake
عموما انا لا احتسب نفسي احسن من حد ولا احتسب نفسي اعلم من حد لكن نفكر مع بعض شوية بصوت عالى كده و بمناقشة لذيذة لانى بجد حاسس ان لو كل مبرمج PHP عربي صادق مع نفسه اقرى الموضوع ده و حاول مجتهدا انه يتقدم بجد انا متأكد مليون فى المية ان بكرة حنلاقى
مشاريع تخلي wordpress و joomla يقفلوا مواقعهم من بكرة لانى متاكد ان عندنا طاقات و عقول تقهر اى حاجة
نرجع للسؤال محور النقاش : هل انت مبرمج PHP محترف او خبير ؟
طيب قبل ما تجاوب على السؤال خلينا نشوف مجموعة اكواد مبسطة كده و من خلالها نبدأ نحكم ببساطة
نشوف المثال الاول:
<?php
$names = 'fouad,tarek,mohamed,farok';
$namesarray = explode(',',$names);
foreach ($namesarray as $value){
$length = 10;
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$string = '';
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters))];
}
echo 'Username : '.$value.'<br />Password : '.$string.'<br /><hr width="150" align="left" />';
}
?>نشوف المثال تانى :
<?php
function getUsers($name){
$namesarray = explode(',',$name);
return $namesarray ;
}
function genPass($length){
$length = $length;
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$string = '';
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters))];
}
return $string ;
}
$names = 'fouad,tarek,mohamed,farok';
foreach ( getUsers($names) as $value){
echo 'Username : '.$value.'<br />Password : '.genPass('10').'<br /><hr width="150" align="left" />';
}
?>و ده مثال ثالث :
<?php
class users{
public $names ;
public $nameArray = array();
public $lenght ;
public $string ;
public $characters ;
public $p ;
public function __construct($names,$length){
$this->names = $names;
$this->length = $length;
}
public function getUsers(){
$nameArray = explode(',',$this->names);
return $nameArray ;
}
public function genPass(){
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$string = '';
for ($p = 0; $p < $this->length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters))];
}
return md5($string) ;
}
}
$names = 'fouad,tarek,mohamed,farok';
$ctrUser = new users($names,'10');
foreach ( $ctrUser->getUsers() as $value){
echo 'Username : '.$value.'<br />Password : '.$ctrUser->genPass().'<br /><hr width="150" align="left" />';
}
?>و اللى جاى بقى ده الرابع و الاخير :)
<?php
class users{
///////////////////////////
//declare my variables :)//
///////////////////////////
private $names ;
public $nameArray = array();
public $length ;
private $string ;
private $characters ;
private $p ;
private $input ;
////////////////////////////////////////////////////////////////////////////////////
//now im creating my construct :) oh my god im fouad writing good class i think :)//
////////////////////////////////////////////////////////////////////////////////////
public function __construct($names,$length){
//let me dfine my main objects first
$this->names = $names;
$this->length = $length;
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//first i want clear my inputs from bad sql injection and bad guys :) im not one of them BTW :)//
/////////////////////////////////////////////////////////////////////////////////////////////////
public function protect($input) {
$input = mysql_real_escape_string($input);
// move html tages from inputs
$input = htmlentities($input, ENT_QUOTES);
//removing most known vulnerable words
$codes = array("script","java","applet","iframe","meta","object","html", "<", ">", ";", "'","%");
$input = str_replace($codes,"",$input);
//return clean string
return $input;
}
////////////////////////////////////////////////////////////////////
//now im converting the strong of names into array to deal with it//
////////////////////////////////////////////////////////////////////
public function getUsers(){
// im using explode function to split my string into array with protected objects
$nameArray = explode(',',$this->protect($this->names));
return $nameArray ;
}
/////////////////////////////////
//now im generating my passwords//
/////////////////////////////////
public function genPass(){
//this my array which include all chars and numbers
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
//define my empty string which will carry the password
$string = '';
//now let me loop through an array to get the password length
for ($p = 0; $p < $this->length; $p++) {
//here its the password coming
$string .= $characters[mt_rand(0, strlen($characters))];
}
//now return my secure password
return $this->protect(md5($string)) ;
}
}
//declare my string which have names
$names = 'fouadjava,tarek,mohamed,farok';
//now initial my class using the string of names and the length of password
$ctrUser = new users($names,'10');
//looping to get back my output
foreach ( $ctrUser->getUsers() as $value){
echo 'Username : '.$value.'<br />Password : '.$ctrUser->genPass().'<br /><hr width="150" align="left" />';
}
?>شوفنا الامثلة حد فاهم حاجة ؟ أكيد لا لانى مبرمج فاشل :)
طيب نسيبنا من الهزار تعالوا نفهم شوية الدنيا شغالة ازاى
طبعا كل الامثلة اللى فاتت بسيطة و كلها تؤدى نفس الغرض عندنا String فيه شوية اسامى و بينهم فواصل احنا بقى حنفصل الــ String حنخليه Array و حنعمل باسورد لكل اسم
بسيطة صح ؟
طيب ليه كل الامثلة ديه ؟ علشان تسال نفسك كودك شكله زى اى كود فى دول ؟ و هنا بقى المقارنة
المثال الأول
أهلا بيك فى عالم الــ PHP كا مبتدئ
لان ده كود مبتدئ ليه بيشوف امثلة كتب و بيحاول ينفزها ربنا يعينك المشوار طويل بس سهل لانى عارف انك ذكى نصحيتي ليك اقرى كتير على قد ما تقدر حتعرف توصل
المثال التانى
مبروك عليك لقب مبرمج بدئنا نفهم يعنى ايه function و ازاى نلم الكود بشكل كويس محتاج تقري برضه شوية و نصحيتي ليك ماتخدش مشاريع كبيرة واحدة واحدة
المثال الثالث
ايوه كده احنا وصلنا بقى هو ده الشغل بدئنا نفهم يعنى OOP بدائنا نكتب Classes بس برضه لسه شويه صغيرة لحد ما نحترف الف مبروك عليك لقب خبير
المثال الرابع
انت محترف اهلا بيك فى عالم الاحتراف
-------------------------------------------------------------------------------------
طيب نسأل سؤال ايه الفرق الكبير بين الخبرة و الاحتراف انا مش شايف فرق كبير يعنى ؟
لا حقولك لو شوفن المثال التالت و الرابع حنلاقى فيه Function زيادة Protect كمان حنلاقى ان الكود كله Commented ده بيدل على ايه
انا راجل مبرمج خبير بعرف اكتب كلاس بس مش محتك كتير بشغل كبير يعنى محدش حيكتب ورايا ولا شغال فى فريق عمل كودى ليا رغم انه مهم اكتب Comments علشان افهم الكود لما ارجعله تانى بس عادى انا بفهمه من غير حاجة زائد كمان انى كل اهتماتى بالغة لكن
مقرتش كتير عن امن المواقع يعنى معرفش يعنى ايه XSS ولا عندى خبرة جامدة بالــ SQL injection بس انا خبير PHP و عارف عنها كتير
طيب لو قارنا الاكواد اللى فاتت و طلعنا كلنا بنكتب اكودنا بالشكل اللى فى المثال الرابع معنى كده ان خلاص الدنيا وقفت انا ملك مفيش حاجة تانى اعملها ادور على لغة تانية بقى انا كده خلصت PHP
حاسب يا عم رايح فين تعالى هنا
هو مبرمج الــ PHP ده ايه ؟ مش مبرمج Web applications ؟
طيب تعرف ايه عن الــ SEO و الــ SEM ؟ قريت عنهم ؟
تسمع عن تطبيقات الــ Web 2.0 ?
تعرف تتكتب APP يشتغل معى Amazon API او Ebay API ولا حتى Google Maps ?
استنى بس قولى قولى تعرف ايه عن الــ Joomla , Drupal , Wordpress ؟
تسمع عن الــ MVC , Yii , Codeigniter , Symfony , ZEND Framework ?
طيب قريت عن الــ Software Engineering ?
طب قولى بس تعرف الفرق بين الــ Singleton , Factory , Abstract ,Builder , Prototype Patterns ?
طب كملنا و قرينا عن الــ interfaces و الــ Polymorphism ?
طيب بلاش كل ده انت عارف ان الكود كده اساس مش Secure ؟
اها رغم انك محترف بس الكود لسه فيه حتة ناقصة عارف ايه هى ؟
الباسورد مش مأمن مية فى المية يا حج ناقصله شوية ملح :) اها فعلا ملح انت متعرفش Salted Passwords ?
خلاص مدام متعرفش الــ Salted Passwords يبقى كمان متعرفش brute-force attacks و اكيد متعرفش rainbow table attacks
ملحوظة : ممكن نتكلم عن كل حاجة من الحاجات اللى ذكرت اعلاه فى مواضيع منفصلة ده للقراء اللى ميعرفوش و عايزين نعرفوا بس موضوعنا مش لشرح الــ Advanced Technic's
خلاصة الموضوع فى قرارة نفسي انا مش مقنع بكلمة خلاص انا خلصت مع الــ PHP اشوفلى لغة تانية بقى اتعلمها لانى مفيش حاجة اسمها انا متمكن مليون فى المية
فيها حاجة اسمها محترف و بكتب كود حلو بس فيه مشاريع ممكن تطلب منى انا اكيد لسه معملتهاش
زائد انى مقتنع ان المبرمج بيحترف لغة واحدة بس يكتب بيها كويس اوى و مفيش مانع طبعا ان يعرف جنبها لغات او تقنيات مكملة ليها يعنى مثلا Ajax على سبيل المثال لا الحصر
لكن السؤال بقى ايه اللى انت محتاج تعمله بالــ PHP و الــ PHP متقدرش عليه فانت مضطر انك تتعلم لغة تانية ؟
و السؤال الاهم و اللى مبنى عليه الموضوع بقى انت فعلا كودك انه كود في الامثلة ؟
و يا ترى انت وصلت للمثال الرابع و بدأت تواجه مشاكل مش لاقى ليها حل فى الــ PHP و عايز لغة تانية ؟
ولا انت لسه فى المثال الاول و عقلك صورلك ان ديه النهاية ؟
والاهم لو انت كودك زى اى مثال من الامثلة اللى فاتوا يا ترى حتبدئ تقرى و تنمى قدراتك بعد ما عرفت ان ديه مش اخر الدنيا و لسه فيه كتير ؟
السؤال مطروح للنقاش و اسف للاطالة و على الغلطات الاملائية اللى متاكد انها متوفرة بكثرة :)
اقعدوا بالعافية ويجعله عامر :)

