آموزش PHP

آموزش PHP - مفاهیم وب

این جلسه نشان می دهد چگونه PHP می تواند محتوای پویا را با توجه به نوع مرورگر، اعداد تصادفی تولید شده یا ورودی کاربر فراهم کند. همچنین نحوه هدایت مرورگر کلاینت (سمت سرویس گیرنده) را نیز نشان خواهد.

شناسایی مرورگر و پلت فرم

PHP  برخی از متغیرهای محیطی مفید را ایجاد می کند که می تواند در صفحه phpinfo.php مشاهده شود که برای تنظیم محیط PHP استفاده می گردد.

یکی از متغیرهای محیطی که توسط PHP تعیین شده HTTP_USER_AGENT است که مرورگر و سیستم عامل کاربر را شناسایی می کند.

PHP یک تابع ()getenv را برای دسترسی به مقدار تمام متغیرهای محیطی فراهم می کند. اطلاعات موجود در متغیر محیط HTTP_USER_AGENT می تواند برای ایجاد محتوای پویا مناسب برای مرورگر استفاده شود.

مثال زیر نشان می دهد که چگونه می توانید یک مرورگر کلاینت (سمت سرویس گیرنده) و سیستم عامل را شناسایی کنید.

<html>
   <body>
   
      <?php
         function getBrowser() { 
            $u_agent = $_SERVER['HTTP_USER_AGENT']; 
            $bname = 'Unknown';
            $platform = 'Unknown';
            $version = "";
            
            //First get the platform?
            if (preg_match('/linux/i', $u_agent)) {
               $platform = 'linux';
            }elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
               $platform = 'mac';
            }elseif (preg_match('/windows|win32/i', $u_agent)) {
               $platform = 'windows';
            }
            
            // Next get the name of the useragent yes seperately and for good reason
            if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) {
               $bname = 'Internet Explorer';
               $ub = "MSIE";
            } elseif(preg_match('/Firefox/i',$u_agent)) {
               $bname = 'Mozilla Firefox';
               $ub = "Firefox";
            } elseif(preg_match('/Chrome/i',$u_agent)) {
               $bname = 'Google Chrome';
               $ub = "Chrome";
            }elseif(preg_match('/Safari/i',$u_agent)) {
               $bname = 'Apple Safari';
               $ub = "Safari";
            }elseif(preg_match('/Opera/i',$u_agent)) {
               $bname = 'Opera';
               $ub = "Opera";
            }elseif(preg_match('/Netscape/i',$u_agent)) {
               $bname = 'Netscape';
               $ub = "Netscape";
            }
            
            // finally get the correct version number
            $known = array('Version', $ub, 'other');
            $pattern = '#(?<browser>' . join('|', $known) . ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
            
            if (!preg_match_all($pattern, $u_agent, $matches)) {
               // we have no matching number just continue
            }
            
            // see how many we have
            $i = count($matches['browser']);
            
            if ($i != 1) {
               //we will have two since we are not using 'other' argument yet
               
               //see if version is before or after the name
               if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
                  $version= $matches['version'][0];
               }else {
                  $version= $matches['version'][1];
               }
            }else {
               $version= $matches['version'][0];
            }
            
            // check if we have a number
            if ($version == null || $version == "") {$version = "?";}
            return array(
               'userAgent' => $u_agent,
               'name'      => $bname,
               'version'   => $version,
               'platform'  => $platform,
               'pattern'   => $pattern
            );
         }
         
         // now try it
         $ua = getBrowser();
         $yourbrowser = "Your browser: " . $ua['name'] . " " . $ua['version'] .
            " on " .$ua['platform'] . " reports: <br >" . $ua['userAgent'];
         
         print_r($yourbrowser);
      ?>
   
   </body>
</html>

نتایج زیر را در دستگاه من تولید می کند. این نتیجه ممکن است بسته به آنچه که شما استفاده می کنید متفاوت باشد.

نتایج زیر را تولید می کند:

Your browser: Google Chrome 54.0.2840.99 on windows reports: 
Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 
   Chrome/54.0.2840.99 Safari/537.36

نمایش تصاویر به صورت تصادفی

تابع ()rand در PHP  برای تولید یک عدد تصادفی استفاده می شود. این تابع می تواند اعداد را با یک در محدوده داده تولید کند. ژنراتور عدد تصادفی باید برای جلوگیری از الگوی منظم اعداد تولید شود. این کار با استفاده از تابع ()srand انجام می شود که تعداد دانه را به عنوان استدلال آن تعیین می کند.

مثال زیر نشان می دهد که چگونه می توانید هر زمان تصویری از چهار تصویر را نمایش دهید:

<html>
   <body>
   
      <?php
         srand( microtime() * 1000000 );
         $num = rand( 1, 4 );
         
         switch( $num ) {
            case 1: $image_file = "/php/images/logo.png";
               break;
            
            case 2: $image_file = "/php/images/php.jpg";
               break;
            
            case 3: $image_file = "/php/images/logo.png";
               break;
            
            case 4: $image_file = "/php/images/php.jpg";
               break;
         }
         echo "Random Image : <img src=$image_file />";
      ?>
      
   </body>
</html>

استفاده از فرم های HTML

مهمترین موردی که به هنگام کار با HTML و PHP  متوجه می شوید این است که هر عنصر فرم در یک صفحه HTML به طور خودکار برای اسکریپت های PHP شما در دسترس خواهند بود.

مثال زیر را با قرار دادن کد منبع در اسکریپت test.php امتحان کنید.

<?php
   if( $_POST["name"] || $_POST["age"] ) {
      if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
         die ("invalid name and name should be alpha");
      }
      
      echo "Welcome ". $_POST['name']. "<br />";
      echo "You are ". $_POST['age']. " years old.";
      
      exit();
   }
?>
<html>
   <body>
   
      <form action = "<?php $_PHP_SELF ?>" method = "POST">
         Name: <input type = "text" name = "name" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
      
   </body>
</html>

نتیجه زیر را تولید می کند:

forms

  • متغیر PHP به طور پیش فرض متغیر PHP_SELF_$ برای نام اسکریپت PHP استفاده می شود و هنگامی که شما بر روی دکمه "submit (ارسال)" کلیک می کنید همان اسکریپت PHP را فراخوانی می کند و نتیجه زیر را تولید می کند.
  • method = "POST" برای ارسال داده های کاربر به اسکریپت سرور استفاده می شود. دو روش ارسال اطلاعات به اسکریپت سرور وجود دارد که در بخش PHP GET و POST بحث شده اند.

 

هدایت مرورگر

تابع ()header هدر HTTP خام را به مرورگر می دهد و می تواند برای هدایت آن به مکان دیگری استفاده شود. اسکریپت redirection باید در بالای صفحه باشد تا مانع از بارگذاری هر قسمت دیگر صفحه شود.

هدف توسط هدر Location: به عنوان argument برای تابع ()header مشخص شده است. پس از فراخوانی این تابع، می توان از تابع ()exit برای متوقف کردن تجزیه بقیه کد استفاده نمود.

مثال زیر نشان می دهد که چگونه می توانید درخواست مرورگر را به یک صفحه وب دیگر هدایت کنید. با قرار دادن کد منبع در اسکریپت test.php، این مثال را امتحان کنید.

<?php
   if( $_POST["location"] ) {
      $location = $_POST["location"];
      header( "Location:$location" );
      
      exit();
   }
?>
<html>
   <body>
   
      <p>Choose a site to visit :</p>
      
      <form action = "<?php $_SERVER['PHP_SELF'] ?>" method ="POST">
         <select name = "location">.
         
            <option value = "http://www.tutorialspoint.com">
               Tutorialspoint.com
            </option>
         
            <option value = "http://www.google.com">
               Google Search Page
            </option>
         
         </select>
         <input type = "submit" />
      </form>
      
   </body>
</html>

نتیجه زیر را تولید می کند:

browser redirection

 

در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش PHP

Learn PHP

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...