منتديات كاس العالم الترفيهيه

اختار لغه المنتدى

اربط حزام الامام و اضغط

منتديات كاس العالم الترفيهيه

انت الزائر رقم؟

عدد زوار المنتدى

زوار المنتدى

المواضيع الأخيرة

» واجهات مجانيه للشات الكتابي و الصوتي
الأربعاء أغسطس 01, 2012 2:32 am من طرف الصقر

» حركات خطيره لكرة القدم بلاي ستيشن 2
الثلاثاء نوفمبر 15, 2011 6:34 pm من طرف AHMMED

» الان حصريا كود لعبه بلياردو اون لاين
الأحد أغسطس 21, 2011 1:56 pm من طرف Mr_King

» رتب و نجوم الاعضاء و المشرفين
السبت يوليو 02, 2011 9:07 pm من طرف غوغو

» شرح كيفية اضافة موقعك الى ( msn ( bing وجلب روبوتاته الى منتداك ! بالشرح المفصل !
الأحد مايو 15, 2011 5:50 am من طرف حرائر السامر

» احدث كود العاب فلاشية لموقعك 2010 متجدد + مجانا
الإثنين مايو 09, 2011 3:26 am من طرف مهدي العكيلي

» كود لعبه من سيربح المليون (حصريا)
الإثنين مايو 09, 2011 3:25 am من طرف مهدي العكيلي

» استايل لمركز التحميل كليجا
الخميس مارس 03, 2011 9:23 pm من طرف Admin

» كود محرك نشر المواضيع
الخميس مارس 03, 2011 8:28 pm من طرف Admin

راديو روتانا

 

    دورة برمجة لوحة تحكم الدرس الثاني

    شاطر
    avatar
    Admin
    المدير العام
    المدير العام


    عدد المساهمات : 431
    نقاط : 881
    السٌّمعَة : 0
    تاريخ التسجيل : 07/11/2010
    العمر : 30

    دورة برمجة لوحة تحكم الدرس الثاني

    مُساهمة من طرف Admin في الخميس فبراير 10, 2011 1:53 am




    في الدرس السابق تناولنا انشاء ملف الإتصال بقاعدة البيانات config.php وتناولنا ملف تنصيب السكربت install.php


    درس اليوم


    سنتناول ملف functions.php و ملف mysql.class.php
    سنتناول ملف template.php ومجلد rawabetcash
    سنقوم بإنشاء ملف login.php وملف checklogin.php وملف logout.php



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


    بالنسبة لملف الفنكشن سيحتوي على عملية تامين المدخلات والحماية من الثغرات


    كما يلي :


    كود PHP:
    الكود:
    [LEFT]
    <?php
    if (eregi("functions.php", $_SERVER['SCRIPT_NAME'])) {
        Header("Location: index.php"); die();
    }
    if (!ini_get('register_globals')) {
        $superglobals = array($_SERVER, $_ENV,
            $_FILES, $_*****E, $_POST, $_GET);
        if (isset($_SESSION)) {
            array_unshift($superglobals, $_SESSION);
        }
        foreach ($superglobals as $superglobal) {
            extract($superglobal, EXTR_SKIP);
        }
    }
    $phpver = phpversion();
    if ($phpver < '4.1.0') {
            $_GET = $HTTP_GET_VARS;
            $_POST = $HTTP_POST_VARS;
            $_SERVER = $HTTP_SERVER_VARS;
    }
    $phpver = explode(".", $phpver);
    $phpver = "$phpver[0]$phpver[1]";
    if ($phpver >= 41) {
            $PHP_SELF = $_SERVER['PHP_SELF'];
    }
    foreach ($_GET as $sec_key => $secvalue) {
            if ((eregi("<[^>]*script*\"?[^>]*>", $secvalue)) ||
            (eregi("<[^>]*object*\"?[^>]*>", $secvalue)) ||
            (eregi("<[^>]*iframe*\"?[^>]*>", $secvalue)) ||
            (eregi("<[^>]*applet*\"?[^>]*>", $secvalue)) ||
            (eregi("<[^>]*meta*\"?[^>]*>", $secvalue)) ||
            (eregi("<[^>]*style*\"?[^>]*>", $secvalue)) ||
            (eregi("<[^>]*form*\"?[^>]*>", $secvalue)) ||
            (eregi("<[^>]*img*\"?[^>]*>", $secvalue)) ||
            (eregi("<[^>]*onmouseover*\"?[^>]*>", $secvalue)) ||
            (eregi("\([^>]*\"?[^)]*\)", $secvalue)) ||
            (eregi("\"", $secvalue))) {
                    die ("غير مسموح لقد إستخدمت أكواد ضارة");
            }
    }
    foreach ($_POST as $secvalue) {
            if ((eregi("<[^>]*onmouseover*\"?[^>]*>", $secvalue)) || (eregi("<[^>]script*\"?[^>]*>", $secvalue)) || (eregi("<[^>]style*\"?[^>]*>", $secvalue))) {
                    die ("غير مسموح لقد إستخدمت أكواد ضارة");
            }
    }
    require_once ('../includes/config.php');
    include("mysql.class.php");
    $db = new sql_db($dbhost, $dbusername, $dbpassword, $dbname, false);
    if(!$db->db_connect_id) {
          echo "<br><font color=\"#1783DB\"><h5><br><center>الموقع خارج الخدمة</b><br><br>";
                  echo mysql_error();
          die();
    }
    ?>
     
    [/LEFT]
    ملف كلاس قاعدة البيانات سنقوم بإنشاء كلاس خاص بالعمليات لقاعدة البيانات وسيكون على النحو التالي


    كود PHP:
    الكود:
    [LEFT]
    <?php
    ob_start();
    if (eregi("mysql.class.php", $_SERVER['SCRIPT_NAME'])) {
        Header("Location: index.php"); die();
    }
    if(!defined("SQL_LAYER")){
    define("SQL_LAYER","mysql");
    class sql_db{
            var $db_connect_id;
            var $query_result;
            var $row = array();
            var $rowset = array();
            var $num_queries = 0;
            function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true){
                    $this->persistency = $persistency;
                    $this->user = $sqluser;
                    $this->password = $sqlpassword;
                    $this->server = $sqlserver;
                    $this->dbname = $database;
                    if($this->persistency){
                            $this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password);
                    }else{
                            $this->db_connect_id = @mysql_connect($this->server, $this->user, $this->password);
                    }
                    if($this->db_connect_id){
                            if($database != "")
                            {
                                    $this->dbname = $database;
                                    $dbselect = @mysql_select_db($this->dbname);
                                    if(!$dbselect){
                                            @mysql_close($this->db_connect_id);
                                            $this->db_connect_id = $dbselect;
                                    }
                            }
                            return $this->db_connect_id;
                    }else{
                            return false;
                    }
            }
            function sql_close(){
                    if($this->db_connect_id){
                            if($this->query_result){
                                    @mysql_free_result($this->query_result);
                            }
                            $result = @mysql_close($this->db_connect_id);
                            return $result;
                    }else{
                            return false;
                    }
            }
            function sql_query($query = "", $transaction = FALSE){
                    // Remove any pre-existing queries
                    unset($this->query_result);
                    if($query != ""){
                            $this->query_result = @mysql_query($query, $this->db_connect_id);
                    }
                    if($this->query_result){
                            unset($this->row[$this->query_result]);
                            unset($this->rowset[$this->query_result]);
                            return $this->query_result;
                    }else{
                            return ( $transaction == END_TRANSACTION ) ? true : false;
                    }
            }
            function sql_numrows($query_id = 0){
                    if(!$query_id){
                            $query_id = $this->query_result;
                    }
                    if($query_id){
                            $result = @mysql_num_rows($query_id);
                            return $result;
                    }else{
                            return false;
                    }
            }
            function sql_affectedrows(){
                    if($this->db_connect_id){
                            $result = @mysql_affected_rows($this->db_connect_id);
                            return $result;
                    }else{
                            return false;
                    }
            }
            function sql_numfields($query_id = 0){
                    if(!$query_id){
                            $query_id = $this->query_result;
                    }
                    if($query_id){
                            $result = @mysql_num_fields($query_id);
                            return $result;
                    }else{
                            return false;
                    }
            }
            function sql_fieldname($offset, $query_id = 0){
                    if(!$query_id){
                            $query_id = $this->query_result;
                    }
                    if($query_id){
                            $result = @mysql_field_name($query_id, $offset);
                            return $result;
                    }else{
                            return false;
                    }
            }
            function sql_fieldtype($offset, $query_id = 0){
                    if(!$query_id){
                            $query_id = $this->query_result;
                    }
                    if($query_id){
                            $result = @mysql_field_type($query_id, $offset);
                            return $result;
                    }else{
                            return false;
                    }
            }
            function sql_fetchrow($query_id = 0){
                    if(!$query_id){
                            $query_id = $this->query_result;
                    }
                    if($query_id){
                            $this->row[$query_id] = @mysql_fetch_array($query_id);
                            return $this->row[$query_id];
                    }else{
                            return false;
                    }
            }
            function sql_fetchrowset($query_id = 0){
                    if(!$query_id){
                            $query_id = $this->query_result;
                    }
                    if($query_id){
                            unset($this->rowset[$query_id]);
                            unset($this->row[$query_id]);
                            while($this->rowset[$query_id] = @mysql_fetch_array($query_id)){
                                    $result[] = $this->rowset[$query_id];
                            }
                            return $result;
                    }else{
                            return false;
                    }
            }
            function sql_fetchfield($field, $rownum = -1, $query_id = 0){
                    if(!$query_id){
                            $query_id = $this->query_result;
                    }
                    if($query_id){
                            if($rownum > -1){
                                    $result = @mysql_result($query_id, $rownum, $field);
                            }else{
                                    if(empty($this->row[$query_id]) && empty($this->rowset[$query_id])){
                                            if($this->sql_fetchrow()){
                                                    $result = $this->row[$query_id][$field];
                                            }
                                    }else{
                                            if($this->rowset[$query_id]){
                                                    $result = $this->rowset[$query_id][$field];
                                            }elseif($this->row[$query_id]){
                                                    $result = $this->row[$query_id][$field];
                                            }
                                    }
                            }
                            return $result;
                    }else{
                            return false;
                    }
            }
            function sql_rowseek($rownum, $query_id = 0){
                    if(!$query_id){
                            $query_id = $this->query_result;
                    }
                    if($query_id){
                            $result = @mysql_data_seek($query_id, $rownum);
                            return $result;
                    }else{
                            return false;
                    }
            }
            function sql_nextid(){
                    if($this->db_connect_id){
                            $result = @mysql_insert_id($this->db_connect_id);
                            return $result;
                    }else{
                            return false;
                    }
            }
            function sql_freeresult($query_id = 0){
                    if(!$query_id){
                            $query_id = $this->query_result;
                    }
                    if ( $query_id ){
                            unset($this->row[$query_id]);
                            unset($this->rowset[$query_id]);
                            @mysql_free_result($query_id);
                            return true;
                    }else{
                            return false;
                    }
            }
            function sql_error($query_id = 0){
                    $result["message"] = @mysql_error($this->db_connect_id);
                    $result["code"] = @mysql_errno($this->db_connect_id);
                    return $result;
            }
    } //
    } //
    ?>
     
    [/LEFT]
    الان ملف التمبلت الذي سنقوم بإستخدامه لتصميم لوحة التحكم ومجلد الكاش الذي سيأخذ تصريح 777


    ملف التمبلت :


    كود PHP:
    الكود:
    [LEFT]
    <?php
    /*
     @ Project: EasyTemplate 1.3
     @ Link: http://daif.net/easy/
     @ Author: Daifallh Al-Otaibi <daif55@gmail.com>
     @ Developer: AzzozHSN <www.azzozhsn.net>
    */
     class EasyTemplate{
      var $vars; //Reference to $GLOBALS
      var $HTML; //html page content
      var $Temp="style";// your template path OR "./"
      var $Cache="rawabetcash";// must be writeable check permission OR use $_ENV["TEMP"];
      var $color = array();
      //patterns Array
      var $pats = array(
      //Foreach Variables
      "/{{([A-Z0-9_\]\[\"]{1,})}}/i",
      //Globals Variables
      "/{([A-Z0-9_\]\[\"]{1,})}/i",
      //Foreach Statement
      "/<LOOP\s+NAME\s*=\s*(\"|)+([a-z0-9_]{1,})+(\"|)\s*>/i",
      //Foreach Statement With Limited Value
      "/<LOOP\s+NAME\s*=\s*(\"|)+([a-z0-9_]{1,})+(\"|)\s*LIMIT\s*=\s*(\"\\d+\"|\\d+)\s*>/i",
      "/<\/LOOP>/i",
      "/<ELSE>/i",
      "/<\/IF>/i",
      //Switch Statement
      "/<SWITCH\s+NAME\s*=\s*\"([A-Z0-9_]{1,})\"\s*CASE\s*=\s*\"(.+)\"\s*VALUE\s*=\s*\"(.+)\"\s*>/i",
      //Include Statement
      "/<INCLUDE\s+NAME\s*=\s*\"(.+)\"\s*>/iU"
      );
      //Replacements Array
      var $reps = array(
      "<?= \$var[\"\\1\"]?>",
      "<?= \$this->vars[\"\\1\"]?>",
      "<? foreach(\$this->vars[\"\\2\"] as \$key=>\$var){ ?>",
      "<? \$this->_limit(\"\\2\",\\4);foreach(\$this->vars[\"\\2\"] as \$key=>\$var){ ?>",
      "<? } ?>",
      "<?} else {?>",
      "<? } ?>",
      "<?= \$this->_switch(\$this->vars[\"\\1\"],\"\\2\",\"\\3\")?>",
      "<?= EasyTemplate::_include(\"\\1\",array(\"\$this->Temp\",\"\$this->Cache\")); ?>"
      );
      function EasyTemplate(){
      $php = (phpversion()>="4.3.0")?1:0;
      if(!$php) exit("<b>ERROR:</b> Update Your PHP version To 4.3.0 Or later, Your's ".phpversion());
      }
     //Function to load a template file.
      function _load_file($FileName){
      if(!file_exists($this->Temp)) exit("<b>ERROR:</b> Template Folder $this->Temp Not Exists");
      if(!file_exists($FileName)) exit("<b>ERROR:</b> Template File $FileName Not Exists");
      $this->HTML = file_get_contents($FileName);//it is the preferred way to read the contents of a file into a string.
      }
     //Function to make limited Array, I wrote this function On Ramadan 3eed :)
      function _limit($arr_name,$limit=10){
      $arr  = $this->vars[$arr_name];
      $page = $this->vars[_GET][$arr_name.'_PS'];
      $pagestart = ($page*$limit > count($arr))?0:$page*$limit;
      $pageend  = ($page*$limit+$limit > count($arr))?count($arr):$page*$limit+$limit;//need some Optimization
      for($i=$pagestart;$i<$pageend;$i++) $page_array[] = $arr[$i];
      $this->vars[$arr_name] = $page_array;
      $query = preg_replace("/(\&|)$arr_name+_PS=\\d+/i","",$_SERVER[QUERY_STRING]);
      $prefix = ($query)?"?$query&":"?";
      for($i=0;$i<count($arr)/$limit;$i++)
      $this->vars[$arr_name.'_paging'] .= ($page==$i)?"<b>$i</b> ":"<a href=".$prefix.$arr_name."_PS=$i class=paging>$i</a> ";
      }
     //Function to if.
      function _if_callback($matches){
      $condition = str_replace('.','"]["',$matches[2]).'"]';
      if($matches[4]){
        $condition = "$matches[2]\"]==\"$matches[4]\"";
      }
      if(strtoupper($matches[1])=="LOOP"){
        return "<? if(\$var[\"$condition){ ?>";
      }else{
        return "<? if(\$this->vars[\"$condition){ ?>";
      }
      }
     //Function to Switch Color.
      function _sw($index){
      return $this->color["$index"] = ($this->color["$index"]) ? false:true;
      }
     //Function to Replace Array Variables
      function _replace_callback($matches){
      return str_replace('.','"]["',$matches[0]);
      }
     //Function to Replace Array Variables
      function _color_callback($matches){
      $rand = rand();
      return "=<?= (\$this->_sw($rand)) ? \"$matches[1]\":\"$matches[2]\"?>";
      }
     //switch Tag
      function _switch($var,$case,$value){
      $case  = explode(',',$case);
      $value = explode(',',$value);
      foreach($case as $k=>$val)
      if($var==$val) return $value[$k];
      }
     //include Tag
      function _include($fn,$config){
      $this->Temp  = $config[0];
      $this->Cache = $config[1];
      return($this->display($fn));
      }
     //Function to Assign Veriables
      function assign($var,&$to){
      $GLOBALS[$var] = $to;
      }
     //Function to Clean Old Cache File
      function _clean($fn){
      $fn = (is_array(glob($fn)))?glob($fn):array();
      foreach ($fn as $file) unlink($file);
      }
     //Function to parse the Template Tags
      function _parse(){
      $this->HTML = preg_replace_callback("/<IF\s+(NAME|LOOP)\s*=\s*\"([A-Z0-9_\.\-]{1,})+(=(.*)|)\"\s*>/i",array('EasyTemplate','_if_callback'),$this->HTML);
      $this->HTML = preg_replace_callback("/({[A-Z0-9_\.\-]{1,}})/i",array('EasyTemplate','_replace_callback'),$this->HTML);
      $this->HTML = preg_replace_callback("/=\"([#0-9A-Z_\.\-\/]{1,})\|([#0-9A-Z_\.\-\/]{1,})\"/iU",array('EasyTemplate','_color_callback'),$this->HTML);
      $this->HTML = preg_replace($this->pats,$this->reps,$this->HTML);
      }
     //Function to OUTPUT
      function display($FileName) {
      $this->vars  = &$GLOBALS;
      $this->Cache = (!is_writeable($this->Cache))?$_ENV["TEMP"]:$this->Cache;
      $FileFullName    = $this->Temp."/".$FileName;
      $tmd = @filemtime($FileFullName);
      $FileName = str_replace('/', '-', $FileName);
      $CacheFileName = $this->Cache."/".$tmd.$FileName.".php";
      if(!file_exists($CacheFileName)){
        $this->_clean("./$this->Cache/*$FileName.php");
        $this->_load_file($FileFullName);
        $this->_parse();
        $fp = fopen($CacheFileName,"w");
        fwrite($fp,$this->HTML);
        fclose($fp);
      }
      ob_start();
      include($CacheFileName);
      $this->page = ob_get_contents();
      ob_end_clean();
      return $this->page;
      }
     }
    ?>
     
    [/LEFT]
    ملاحظة مهمة لملف التمبلت في السطر 11 والسطر 12 كما يلي :


    كود PHP:
    الكود:
    [LEFT]
      var $Temp="style";// your template path OR "./"
      var $Cache="rawabetcash";// must be writeable check permission OR use $_ENV["TEMP"];
     
    [/LEFT] 


    var $Temp="style";// your template path OR "./"
    var $Cache="rawabetcash";// must be writeable check permission OR use $_ENV["TEMP"];



    كائن $Temp سيدل على مجلد التصميم قم بتعديله كيفما شئت
    كائن $Cache سيدل على ملف الكاش الخاص بالقوالب والذي يجب منحه تصريح 777

    --------------------------------------------------------------------------------

    الان سنقوم بإنشاء ملف

    login.php


    بالبدياة الجميع يعلم ان ملف login.php سيحتوي على قالب تسجيل الدخول الذي سيمنحني ادخال معلومات الدخول للبرنامج

    إلى هنا لا يوجد أي مشاكل

    لكن في حال اني كنت مسجل الدخول مسبقاً ماذا سأفعل

    لنتابع معاً


    في البداية قم بإنشاء الملف

    وقم بتعريف الملف على انه برمجية بي اتش بي وقم بوضع دوال بداية الجلسات سيشين كما يلي



    كود PHP:
    الكود:
    [LEFT]
    <?php
    ob_start();
    session_start();
    ob_end_flush();
    ?>
     
    [/LEFT]
    الأن بعد عملية إنشاء الملف وتضمين الأكواد البدائية


    سنقوم بعملية تفحص السيشن اي الجلسة إن كان هنالك عملية تسجيل دخول أم لا


    تابع معي


    كود PHP:
    الكود:
    [LEFT]
    if(isset($_SESSION['susername']) && isset($_SESSION['spass'])){
      header("Location: index.php");
      exit();
    }
     
    [/LEFT] 

    في البداية سنقوم بإعتبار قيم اليوزر نيم هي $_SESSION['susername'] وقيمة الباسورد $_SESSION['spass']


    الان قمنا بعمل جملة شرطية وبدئنا بـ if اي اذا كان هنالك قيمة للسيشن الخاص باليوزر نيم و كان هنالك قيمة للسيشن الخاص بالباسورد قم بتنفيذ ما يلي :


    كود PHP:
    الكود:
      header("Location: index.php"); 

    كود PHP:
    الكود:
    [LEFT] exit();
    [/LEFT] 



    اي قم بتحويل المتصفح الى صفحة index.php وتوقف عن تنفيذ باقي الاكواد



    طيب فلنفترض انه لا يوجد اي قيم للسيشن الخاص باليوزر نيم والباسورد

    سيقوم البرنامج بتجاهل الجملة الشرطية وينتقل لتنفيذ الاكواد التالية




    الأن ركز معي لان الاكواد الباقية قليلة لكن اهميتها كبيرة




    سنقوم بجلب ملف التمبلت template.php

    كما يلي :


    كود PHP:
    الكود:
    [RIGHT][LEFT] [/LEFT]
    [LEFT]include('template.php');[/LEFT]
    [LEFT]$rawabetvb = new EasyTemplate;[/LEFT]
    [LEFT] [/LEFT]
    [LEFT][/LEFT][/RIGHT] 

    الان سيقوم البرنامج بتضمين محتوى ملف التمبلت والذي من خلاله سنقوم بطباعة قالب تسجيل الدخول




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



    كود PHP:
    الكود:
    [RIGHT][LEFT] [/LEFT]
    [LEFT]print $rawabetvb->display('login.html');[/LEFT]
    [LEFT] [/LEFT]
    [LEFT][/LEFT][/RIGHT] 





    إلى هنا ينتهي إنشاء ملف تسجيل الدخول وسيكون بشكل كامل كما يلي :


    كود PHP:
    الكود:
    [RIGHT][LEFT] [/LEFT]
    [LEFT]<?php[/LEFT]
    [LEFT]ob_start();[/LEFT]
    [LEFT]session_start();[/LEFT]
    [LEFT]/*[/LEFT]
    [LEFT]copyright : rawabetvb.com[/LEFT]
    [LEFT]programing by : mohanad[/LEFT]
    [LEFT]phone : 00962786881355[/LEFT]
    [LEFT]Version : 1.0[/LEFT]
    [LEFT]*/[/LEFT]
    [LEFT]if(isset($_SESSION['susername']) && isset($_SESSION['spass'])){[/LEFT]
    [LEFT]  header("Location: index.php");[/LEFT]
    [LEFT]  exit();[/LEFT]
    [LEFT]}[/LEFT]
    [LEFT]include('template.php');[/LEFT]
    [LEFT]$rawabetvb = new EasyTemplate;[/LEFT]
    [LEFT]print $rawabetvb->display('login.html');[/LEFT]
    [LEFT]ob_end_flush();[/LEFT]
    [LEFT]?>[/LEFT]
    [LEFT] [/LEFT]
    [LEFT][/LEFT][/RIGHT]



    يتبع للدرس القادم



    _________________

      الوقت/التاريخ الآن هو الخميس أبريل 26, 2018 3:53 am