I'm Sorry... Sajnálom...

A "delphi program" nem tölthető le!
(átmeneti oldal hiba)

Bezár

I'm Sorry... Sajnálom...

A "css ötlet" nem tölthető le!
(átmeneti oldal hiba)

Bezár

I'm Sorry... Sajnálom...

A "php ötlet" nem tölthető le!
(átmeneti oldal hiba)

Bezár

Információk


Honlap infók:
Adatok
2006. 05. 21-től

Összes látogatás:

Mai látogatás:

Összes látogató:

Mai látogató:

Aktuális látogató:

Üdvözöllek!
(34.239.152.207)
« Előző »
« látogatásod: »
(2023/03/31 - 05:16)
Oldal módosítva:
2012. 10. 17. 12:07.
Buzsák





Domain teszter
(a kiszolgáló elérhetőségét vizsgáló program)

Ez az ismertető egy internetes elérhetőséget mérő program egyszerűsített leírását és forráskódját tartalmazza. A működéséhez szükséges "JS", továbbá "PHP" és egy kis "CSS" ismeret.
Az ismertető elolvasása előtt a működőképes DOMAIN TESZTER demo-t előbb tekintsd meg!
Szabványosság tekintetében megfelel az "XHTML 1.0 Transitional" elvárásainak. (ráadásul CSS-valid is...)


"domain_teszter.php"

A teszter szerkezete egy alap-fájlból (domain_teszter.php) és három  <IFRAME>-be behívott fájlból (ping_teszt.phpdownload_file.phpping_mutat.php) áll össze.
A mérési adatok a szerveren lévő, egyedi névvel rendelkező fájlokba kerülnek elmentésre(letöltés és későbbi megjelenítés céljából). Azért, hogy ezek a fájlok ne foglaljanak el túl sok helyet a 24 óránál régebbiek automatikusan törlődnek. A törlés megvalósítása érdekében az alap-fájl, még a <HTML> fejléc előtt néhány sor PHP-kóddal kezdődik. Az  rmdirr függvény  egy beállított idő előtt létrehozott "könyvtár-tartalom" és/vagy "könyvtár plusz tartalom" törlésére hivatott. Sokrétű alkalmazhatósága miatt íme a forráskódja:

««  rmdirr függvény  »»

Kijelölés
GeSHi Syntax Highlighting 1.0.8.1 © 2004-2007, Nigel McNie, 2007-2008 Benny Baumann.
  1. <?php
  2.   $_SESSION['dom'] = '';
  3.   //könyvtár és tartalom törlése: $ido-nél van régebbi fájl / ha $oc=1 a könyvtárat is!!
  4.   function rmdirr($dirname,$oc=0,$ido)
  5.   { // Ha nem létezik -> false
  6.           if (!file_exists($dirname))
  7.     { return false; }
  8.           // Ha fájl és időn túli -> törlés
  9.           if (is_file($dirname) && (time()-filemtime($dirname))>$ido) //3600=1óra
  10.     { return unlink($dirname); }
  11.           // Ha könyvtár
  12.           if(is_dir($dirname))
  13.           { $dir = dir($dirname);
  14.             while (false !== $entry = $dir->read())
  15.       { // Ha a benne levő nem fájl fájl -> a következő ciklus
  16.               if ($entry == '.' || $entry == '..')
  17.         { continue; }
  18.               // Rekurzív meghívás a talált fájlra
  19.               rmdirr("$dirname/$entry",$oc,$ido);
  20.             }
  21.             $dir->close();
  22.           }
  23.           // Könyvtárt is töröl
  24.           if ($oc==1)
  25.           { return rmdir($dirname); }
  26.   }
  27.   //adat-fájl törlése 24 óra után
  28.   rmdirr('data',0,86400);  //1 nap=86400
  29. ?>
  30.  

(A fenti forráskód utolsó sorában látható a függvény alkalmazásának módja.)

A  <HEAD>  rész a szokásos módon épül fel, ahol egyetlen fájl az oldal formázását végző CSS fájl kerül meghívásra.
A  <BODY>  rész is egyszerű felépítésű az  <IFRAME>-ek használata miatt. Az egyetlen dolog ami nem <IFRAME>, az az aktuális kapcsolat kijelzésének kialakítása, mely egy "rajzol" ID-vel rendelkező DIV-ben kerül megrajzolásra. Azonban a "rajzolás" rutinját már az első <IFRAME>-be behívott "ping_teszt.php" fájlban került elhelyezésre.
A fentieket megvalósító konkrét forráskód itt tekinthető meg, tölthető le:

««  <BODY> <IFRAME>-ek  »»

Kijelölés
GeSHi Syntax Highlighting 1.0.8.1 © 2004-2007, Nigel McNie, 2007-2008 Benny Baumann.
  1.   <div id="contentbg">
  2.    <div id="contenttart">
  3.      <h2>Domain teszter</h2>
  4.       <h3>
  5.         (a kiszolgáló elérhetőségét vizsgáló program)
  6.       </h3>
  7.     <div class="doboz">
  8.       <iframe id="teszt" src ="ping_teszt.php"></iframe>
  9.     </div>
  10.     <div class="doboz">
  11.       <div class="rajzol" id="rajzol">
  12.         <h5>Kapcsolat lánc</h5>
  13.       </div>
  14.     </div>
  15.     <div class="doboz">
  16.       <iframe id="download" src ="download_file.php"></iframe>
  17.     </div>
  18.     <div class="doboz">
  19.       <iframe id="mutat" src ="ping_mutat.php"></iframe>
  20.     </div>
  21.    </div><!-- contentbg -->
  22.   </div><!-- contenttart -->
  23.  

Mivel az oldal formázását tartalmazó  CSS-fálj  egyszerű, nincs benne semmi különös, ezért ismertetésére külön nem kerül sor. A működéshez azonban szükséges, ezért most ennek a forráskódja következik:

««  CSS-fájl  »»

Kijelölés
GeSHi Syntax Highlighting 1.0.8.1 © 2004-2007, Nigel McNie, 2007-2008 Benny Baumann.
  1. /* CSS Document */
  2. body{margin:5px auto;border-style:none;padding:0;background-color:#CECECE;
  3.      width:770px;font:14px Verdana,arial,Helvetica;text-align:center;}
  4. a:link{color:#161612;text-decoration: none; }
  5. a:visited{color:#77775e;}
  6. a:active{color:#515140;outline:none;}
  7. a:focus{outline:none;}
  8. a:hover{color:#515140;}
  9. #oldal{margin:0 auto;border-style:none;padding:0;width:770px;text-align:center;}
  10. #headerbg{margin:0 auto;border-style:none;padding:0;width:770px;height:91px;float:left;}
  11. #headertart{margin:0 auto;padding:25px 0 50px 0;width:700px;text-align:left;}
  12. #contentbg{margin:0 auto;border-style:none;padding:0;width:770px;float:left;}
  13. #contenttart{margin:0 auto;padding:0;text-align:center;width:770px;}
  14. #footerbg{margin:0 auto;border-style:none;padding:0;width:770px;height:91px;float:left;}
  15. #footertart{margin:0 auto;padding:25px 0 50px 0;width:700px;text-align:right;}
  16. #headerbg{background:transparent url('images/fent-hatter-h.gif') no-repeat left top;}
  17. #contentbg{background:transparent url('images/kozep-hatter-h.gif') repeat-y left top;}
  18. #footerbg{background:transparent url('images/lent-hatter-h.gif') no-repeat left top;}
  19. .clear{clear:both;height:0;line-height:0;overflow:hidden;}
  20. .balkicsibold{text-align:left;font-size:10px;font-weight:700;}
  21. .kicsi{padding:0 50px 0 0;text-align:right;font-size:12px;font-weight:700;}
  22. .doboz{margin:0 auto;padding:5px 10px;text-align:center;width: 650px;}
  23. input, select{background-color:#F2F2F2;}
  24. code{font-size:14px;}
  25. h1{display:inline;font-size:20px;}
  26. .rajzol{margin:0 auto;padding:3px 6px;width:612px;height:auto;overflow:hidden;border:1px solid #515140;}
  27. .elem{float:left;margin:3px 0;padding:0;width:32px;height:17px;border-style:none;}
  28. iframe{margin:0;padding:12px;width:600px;text-align:center;border:1px solid #515140;}
  29. iframe#teszt{height:140px;}
  30. iframe#download{height:122px;}
  31. iframe#mutat{height:306px;}
  32. /* IE */
  33. * html iframe#teszt{height:160px;}
  34. * html iframe#download{height:142px;}
  35. * html iframe#mutat{height:306px;}
  36.  





"ping_teszt.php"

A fájlban, még a <HTML>  fejléc előtti PHP-kódok  szerepe többrétű. Az "ipaddress" függvény a felhasználó IP-címét kérdezi le, az "options" függvény a <SELECT> elem helyes működését hivatott bíztosítani. A PHP-s változók beállítása mellett itt történik a megadott kiszolgáló elérhetőségének vizsgálata, valamint az adatok fájlba mentése is.
További magyarázat helyett íme a forráskód:

««  fejléc előtti PHP-kódok  »»

Kijelölés
GeSHi Syntax Highlighting 1.0.8.1 © 2004-2007, Nigel McNie, 2007-2008 Benny Baumann.
  1.   $domain_name = '';
  2.   $file_dir = 'data/';
  3.   $ip_eleres = 'false';
  4.   $this_time = date('G:i:s');
  5.   //IP LEKÉRDEZÉS
  6.   function ipaddress()
  7.   { if (@getenv("HTTP_X_FORWARDED_FOR"))
  8.     { $ip = @getenv("HTTP_X_FORWARDED_FOR"); }
  9.     else
  10.     { $ip = @getenv("REMOTE_ADDR"); }
  11.     if (strstr( $ip, "," ) )
  12.     { $elvalaszto = ","; $ipcim = strtok ($ip, $elvalaszto); return $ipcim; }
  13.     else
  14.     { return $ip; }
  15.   }
  16.   if(isset($_REQUEST['ker_domain']) && !empty($_REQUEST['ker_domain']))
  17.   {
  18.     $domain_name = $_REQUEST['ker_domain'];
  19.     //elérhetőség vizsgálat;
  20.     if (gethostbynamel($domain_name))
  21.       $ip_eleres = 'true';
  22.     else
  23.       $ip_eleres = 'false';
  24.     // időpont meghatározás;
  25.     $this_time = date('G:i:s');
  26.     // napló fájl névmeghatározás;
  27.     $filenam = ipaddress().'_'.date('Y_m_d').'.txt';
  28.     $filename = $file_dir.$filenam;
  29.     $counter2 = $filename;
  30.     //naplózás fájlba;
  31.     $fp2 = fopen($counter2, "a");
  32.     $line2 =  $this_time."|".$ip_eleres ."|".$domain_name."-\n";
  33.     $size2 = strlen($line2);
  34.     fputs($fp2, $line2, $size2);
  35.     fclose($fp2);
  36.   }
  37.   //"select" opciók beállítás
  38.   function options($options, $selected = null, $labelIsValue = false)
  39.   {
  40.     $html = '';
  41.     settype($selected, 'array');
  42.     settype($options, 'array');
  43.     foreach ($options as $value=>$label)
  44.     {
  45.       if (is_array($label))
  46.       {
  47.         $value = $label[0];
  48.         $label = $label[1];
  49.       }
  50.       //"htmlspecialchars" konvertál:  '<' => '&lt;' és '>' => '&gt;' és '&' => '&amp;'
  51.       //Ha "ENT_QUOTES"-t beállítják, akkor:    '"' => '&quot;' és ''' => '&#39;'  is
  52.       $label = htmlspecialchars($label, ENT_QUOTES, "utf-8");
  53.       $value = $labelIsValue ? $label : htmlspecialchars($value, ENT_QUOTES, "utf-8");
  54.       $html .= '<option value="'.$value.'"';
  55.       if (in_array($value, $selected))
  56.       {
  57.         $html .= ' selected="selected"';
  58.       }
  59.       $html .= '>'.$label.'</option>';
  60.     }
  61.     if (!$html)
  62.     {
  63.       $html .= '<option value="0">---</option>';
  64.     }
  65.     return $html;
  66.   }
  67.   if(!isset($_REQUEST['ciklus'])) $_REQUEST['ciklus'] = 4;
  68.  


A  <HEAD>  rész a szokásos módon épül fel, azonban itt kerültek elhelyezésre a minimális formázást bíztosító CSS-kódok és a  JS-függvények  is. A ciklikus mérés működését bíztosító "ismetel" függvényt. Az "UjAdat" függvényt, amely az aktuális mérés kijelzését végzi szülő dokumentumban. Végül a "LancTorol" függvényt, mellyel szintén a szülő dokumentumban lehet az eddigi kijelzéseket törölni.

««  <HEAD> JS-függvények  »»

Kijelölés
GeSHi Syntax Highlighting 1.0.8.1 © 2004-2007, Nigel McNie, 2007-2008 Benny Baumann.
  1.   <script type="text/javascript">
  2.     //<![CDATA[
  3.     //ciklikus működés vezérlés
  4.     function ismetel()
  5.     {
  6.       var ismetles_ido = '<?php echo $_REQUEST["ciklus"]; ?>';
  7.       var ujbol = 120000;
  8.       switch (ismetles_ido)
  9.       {
  10.         case '0': {ujbol = 60000; break;}
  11.         case '1': {ujbol = 120000; break;}
  12.         case '2': {ujbol = 180000; break;}
  13.         case '3': {ujbol = 240000; break;}
  14.         case '4': {ujbol = 300000; break;}
  15.         case '5': {ujbol = 360000; break;}
  16.         case '6': {ujbol = 420000; break;}
  17.         case '7': {ujbol = 480000; break;}
  18.         case '8': {ujbol = 540000; break;}
  19.         case '9': {ujbol = 600000; break;}
  20.         default:  {ujbol = 120000; break;}
  21.       }
  22.       if (document.digiora.engedely.checked == true)
  23.       { setTimeout("document.digiora.submit()",ujbol); }
  24.       setTimeout("ismetel()",ujbol); //5perc=300000ms
  25.     }
  26.     //aktuális mérés-kijelzés vezérlése szülő dokumentumban
  27.     function UjAdat()
  28.     {
  29.       var van_e = '<?php echo $ip_eleres; ?>';
  30.       var idopont = '<?php echo $this_time; ?>';
  31.       var kiszolg = '<?php echo $domain_name; ?>';      
  32.       if (van_e === 'true')
  33.       {
  34.         parent.document.getElementById("rajzol").innerHTML = parent.document.getElementById("rajzol").innerHTML +
  35.                '<div class=\"elem\" style=\"background-image:url(images/ping_lanc.gif);background-position: 0 0;\"'+
  36.                ' title=\"'+kiszolg+'/'+idopont+'\"><\/div>';
  37.       }
  38.       else
  39.       {
  40.         parent.document.getElementById("rajzol").innerHTML = parent.document.getElementById("rajzol").innerHTML +
  41.                '<div class=\"elem\" style=\"background-image:url(images/ping_lanc.gif);background-position: 0 17px;\"'+
  42.                ' title=\"'+kiszolg+'/'+idopont+'\"><\/div>';
  43.       }
  44.     }
  45.     //mérések kijelzésének törlése    
  46.     function LancTorol()
  47.     {
  48.       parent.document.getElementById("rajzol").innerHTML = '<h5>Kapcsolat lánc<\/h5>'+
  49.                '<div class=\"elem\" style=\"background-image:url(images/ping_lanc.gif);background-position: 0 17px;\"<\/div>';
  50.     }
  51.     //]]>
  52.   </script>
  53.  


A  <BODY>  rész fő eleme a "domainteszt" <FORM>, melynek "action" paramétere maga a "ping_teszt.php" fájl és a "Kapcsolat lánc törlése" gomb megnyomásakor pluszként meghívásra kerül a "LancTorol" JS-függvény. A "ker_domain" - "engedely" - "ipeleres" <INPUT> elemek és a "ciklus" <SELECT> elem beállítását / működését / stílus-módosítását valamint az aktuális "adatfájl" nevének megjelenítését PHP-kóddal oldottam meg.

««  <BODY>  »»

Kijelölés
GeSHi Syntax Highlighting 1.0.8.1 © 2004-2007, Nigel McNie, 2007-2008 Benny Baumann.
  1. <body style="text-align:left; font-size:14px; font-weight:700;">
  2.   <form method="post" name="digiora" action="ping_teszt.php">
  3.     <table style="margin:0;padding:0;border-style:none;width:100%;" summary="" >
  4.      <tr>
  5.        <td style="width:40%;">
  6.          <label title="<?php echo 'Módosítsd a kívánt névre, majd indítás! '; ?>"
  7.                 class="help" for="ker_domain"><?php echo 'A kiszolgáló neve:';?></label>
  8.        </td>
  9.        <td style="width:60%;">
  10.          <input type="text" size="50" name="ker_domain" id="ker_domain"
  11.                <?php if(isset($_REQUEST['ker_domain']) && !empty($_REQUEST['ker_domain']))
  12.                {echo 'value="'.$_REQUEST['ker_domain'].'"';} else {echo 'value="google.hu"';} ?> />
  13.        </td>
  14.      </tr>
  15.      <tr>
  16.        <td style="width:40%;">
  17.          Ciklikus ellenőrzés:
  18.        </td>
  19.        <td style="width:60%;">
  20.          <select name="ciklus" id="ciklus" >
  21.            <?php
  22.             $num = ($_REQUEST['ciklus']) ? intval($_REQUEST['ciklus']) : 0;
  23.             echo options(array(0 => '1 percenként', 1 => '2 percenként', 2 => '3 percenként',
  24.                                 3 => '4 percenként', 4 => '5 percenként', 5 => '6 percenként',
  25.                                 6 => '7 percenként', 7 => '8 percenként', 8 => '9 percenként',
  26.                                 9 => '10 percenként'), $num);
  27.            ?>
  28.          </select>&nbsp;&nbsp;
  29.          <input type="checkbox" name="engedely" id="engedely" value="engedely"
  30.                title="<?php echo 'Ismétlődés engedélyezése'; ?>"
  31.                 <?php if(isset($_REQUEST['engedely'])) {echo 'checked="checked"';} ?> />
  32.        </td>
  33.      </tr>
  34.      <tr>
  35.        <td style="width:40%;">
  36.          Aktuális elérhetőség:
  37.        </td>
  38.        <td style="width:60%;">
  39.          <input type="text" name="ipeleres" size="50" readonly="readonly"
  40.                style="<?php if ($ip_eleres=='true') {echo 'color:black;font-weight:700;';} else {echo 'color:red;font-weight:700;';} ?>"
  41.                 value="<?php if ($domain_name  && $ip_eleres && $this_time) {echo '/'.$domain_name.'/ elérés: '.$ip_eleres.' ('.$this_time.'-kor)';}
  42.                             else {echo 'Még nem történt meg az indítás!';} ?>" />
  43.        </td>
  44.      </tr>
  45.      <tr>
  46.        <td style="padding:8px 0;text-align:center;" colspan="2">
  47.          <input type="submit" name="kuldes" value="Ellenőrzés indítás" />
  48.          <input type="button" name="torles" id=torles value="Kapcsolat lánc törlése" onclick="javascript:LancTorol();" />
  49.        </td>
  50.      </tr>
  51.      <tr>
  52.        <td style="padding:8px 0;text-align:center;" colspan="2">
  53.          Aktuális adatfájl neve:&nbsp;&nbsp;"<?php echo $filenam; ?>"
  54.        </td>
  55.      </tr>
  56.     </table>
  57.   </form>
  58.   <script type="text/javascript">
  59.     //<![CDATA[
  60.    //aktuális mérés-kijelzés indítás szülő dokumentumban
  61.    UjAdat();
  62.    //ciklikus működés figyelés
  63.    setTimeout("ismetel()",1); //1ms
  64.    //]]>
  65.   </script>
  66. </body>
  67.  

(A <form> után még két JS-hívás van a "aktuális mérés-kijelzés" és a "ciklikus működés" indítása.)



"download_file.php"

A fájl, még a <HTML> fejléc előtt néhány sor PHP-kóddal kezdődik. Az  total_size függvény  egy adott könyvtárban lévő fájlok össz. méretét adja visszatérési értékként, de itt csak az adat-könyvtár ürességének vizsgálatára használom fel. Azért érdekességként íme a forráskódja:

««  total_size függvény  »»

Kijelölés
GeSHi Syntax Highlighting 1.0.8.1 © 2004-2007, Nigel McNie, 2007-2008 Benny Baumann.
  1. <?php
  2.   //Könyvtárban lévő fájlok össz. mérete (felhasználás: VAN-E FÁJL?)
  3.   function total_size($dir)
  4.   {  
  5.     $handle = opendir($dir);  
  6.     $total = 0;
  7.     while($file = readdir($handle))
  8.     {  
  9.       $total = $total + filesize ($dir.$file);  
  10.       if((is_dir($dir.$file.'/')) &&($file != '..')&&($file != '.'))  
  11.       {  
  12.         $total = $total + total_size($dir.$file.'/');  
  13.       }  
  14.     }  
  15.     return $total;  
  16.   }  
  17.   $total = total_size('data/');
  18. ?>
  19.  


A  <HEAD> és <BODY>  rész is nagyon egyszerű, ezért ezeket együtt ismertetem. A <HEAD> részben egyetlen JS-kód van, melynek feladata az, hogy adatfájlok listája a szülő oldalon is frissítve legyen látható.
A <BODY> részben pedig csak egy, az adatfájlok letölthetőségét biztosító <FORM> szerkezet található, melynek felépítésében egy PHP-s rutin méltó említésre. Ez a rutin végzi a <SELECT> elem feltöltését az adat-könyvtár tartalmával.

««  <HEAD> és <BODY>  »»

Kijelölés
GeSHi Syntax Highlighting 1.0.8.1 © 2004-2007, Nigel McNie, 2007-2008 Benny Baumann.
  1.   <!-- ................. -->
  2.   <!-- főoldal frissítés -->
  3.   <script type="text/javascript">
  4.     //<![CDATA[
  5.    function reloadPage()
  6.    {
  7.      window.location.reload();
  8.    }
  9.    //]]>
  10.   </script>  
  11. </head>
  12. <body style="margin:10px auto 10px auto;text-align:center;font-size:14px;">
  13.   <span style="font-size:16px;font-weight:700;text-align:center;">
  14.     Adatfájlok letöltése HDD-re
  15.   </span>
  16.   <br style="height:16px;" />
  17.   <form method="post" action="letolt.php" name="letolt" enctype="multipart/form-data" >
  18.     <div>
  19.       <label class="help" for="nevek">(A 24 óránál régebbi adatfájlok automatikusan törlődnek!)</label>
  20.       <br />
  21.       <select name="nevek" id="nevek" title="A saját adatokat töltsd le minden nap!"
  22.              style="<?php if ($total>0) {echo 'color:#000000;';} else {echo 'color:#FF0000;font-weight:700;';} ?>">
  23.         <?php
  24.          if ($total>0)
  25.           {
  26.             foreach (glob("data/*.txt") as $filename)
  27.             {
  28.               $path_parts = pathinfo($filename);
  29.               $theFileName = $path_parts['basename'];  
  30.               $fajlnev = $theFileName;  
  31.               echo "<option value=".$fajlnev.">".$fajlnev."</option> \n";
  32.             }
  33.           }
  34.           else
  35.           {
  36.             echo '<option value="Nincs fájl">Nem volt teszt, nincs adatfájl!</option>';  
  37.           }
  38.         ?>
  39.       </select>
  40.       <br />
  41.       <br />
  42.       <input class="help" name="letoltes" id="submit" type="submit"
  43.             title="Ha van kiválasztott fájl, letöltés..." value="Fájlletöltés indítás"
  44.             <?php if ($total <=0) {echo 'disabled="disabled"';} ?> />
  45.       <input class="help" name="frissit" id="frissit" type="button"
  46.             title="Ha már van adatfájl, lista frissítés..."
  47.             value="Lista frissítés" onclick="reloadPage();" />
  48.       <input type="hidden" name="post" />
  49.     </div>
  50.   </form>
  51. </body>
  52.  

(Úgy érzem a fenti kódsorok működéséről különösebb magyarázat nem szükséges...)

Van még egy dolog ami ide tartozik, mivel a <FORM> "action" paraméterében kerül meghívásra, ez pedig a  letolt.php  fájl. Ez indítja el a <SELECT> elemben aktuálisan kiválasztott fájlra a böngésző letöltési procedúráját.

««  letolt.php  »»

Kijelölés
GeSHi Syntax Highlighting 1.0.8.1 © 2004-2007, Nigel McNie, 2007-2008 Benny Baumann.
  1. <?php
  2.   if(isset($_REQUEST['nevek']) && !empty($_REQUEST['nevek']))
  3.   {
  4.     $file = 'data/' . $_REQUEST['nevek'];
  5.     $theFileName = $_REQUEST['nevek'];
  6.   }
  7.   header('Content-Type: application/force-download');  
  8.   header ("Content-Length: " . filesize($file));  
  9.   header ("Content-Disposition: attachment; filename=$theFileName");  
  10.   $fd = fopen($file, "r");  
  11.   while(!feof($fd))  
  12.   {  
  13.     echo fread($fd, 4096);  
  14.     ob_flush();  
  15.   }
  16. ?>
  17.  




"ping_mutat.php"

A <HTML> fejléc előtti PHP-kódot itt nem ismertetem, mivel az "rmdirr függvény" és feladata már az ismertető első szakaszának  <HEAD>  részében ismertetve lett. Az egyszerű, szabványos <HEAD> rész ismertetésére sincs szükség, mivel sem CSS, sem JS, sem PHP kódot nem tartalmaz.
A fájl további része, azaz a  <BODY> tartalom  már tartalmaz említésre méltó kódsorokat. Az első érdekesség talán a <FORM> "post adatok" elküldésének módja. A "file" tipusú <INPUT> mező aktuális értékét "onchange" esemény lefutásakor JS-kóddal átmásolódik egy "hidden" tipusú <INPUT> mezőbe és ennek a "submit" esetén létrejövő változónak az értéke kerül felhasználásra a következő PHP-kódsorokban.
Ezen PHP-s rész lefutása során a kiválasztott lokális fájl ideiglenesen feltöltődik a szerverre, majd ellenőrzés után feldolgozásra kerül. A feltöltött fájlban lévő korábbi ellenőrzési adatok formázása és megjelenítése szintén PHP-s kódokkal történik. A "ping_mutat.php" fájl minden betöltődésekor a szerveren lévő ideiglenes fájlok 1 percnél, a mérési adatfájlok 1 napnál régebbi példányai törlődnek.

««  <BODY> tartalom  »»

Kijelölés
GeSHi Syntax Highlighting 1.0.8.1 © 2004-2007, Nigel McNie, 2007-2008 Benny Baumann.
  1. <body style="margin:10px auto 10px auto;text-align:center;font-size:14px;">
  2.   <span style="font-size:16px;font-weight:700;text-align:center;">
  3.     A kiszolgáló aktívitásának kimutatása letöltött adatfájlból
  4.   </span>
  5.   <br style="height:16px;" />
  6.   <form method="post" action="" name="form" enctype="multipart/form-data" >
  7.     <div>
  8.       <label title="Fájlok letöltése a középső ablakban lehetséges." class="help" for="hd_file"
  9.              style="font-size:12px;">(A HDD-én kiválasztott adatfájl)</label>
  10.       <br />
  11.       <input title="Fájl kiválasztása merevlemezen..." class="help"
  12.             type="file" name="hd_file" id="hd_file" size="63"
  13.             onchange="javascript:document.form.rejtett.value=document.form.hd_file.value;"
  14.             <?php if(isset($_REQUEST['hd_file']) && !empty($_REQUEST['hd_file'])){echo 'value="'.$_REQUEST['hd_file'].'"';} ?> />
  15.       <input type="hidden" name="rejtett" id="rejtett" size="34" />
  16.       <br /><br />
  17.       <input title="Ha van kiválasztott fájl, feldolgozás..." class="help" name="formaz"
  18.             type="submit" value="Fájl Feldolgozás" id="submit" />
  19.       <input type="hidden" name="post" />
  20.     </div>
  21.   </form>
  22.   <div style="margin:10px auto 10px auto; text-align:center;">
  23.     <?php
  24.      //adatok ellenőrzése
  25.      $path_fajl_valaszt = (isset($_REQUEST['rejtett']) && !empty($_REQUEST['rejtett'])) ? $_REQUEST['rejtett'] : false;
  26.      $path_fajl_vizsgal = '';
  27.      //a kiválasztott lokális fájl ellenőrzése
  28.      $path = "$path_fajl_valaszt";
  29.      //a már ideiglenesen feltöltött fájlok törlése (0 másodpercnél régebbiek)
  30.      rmdirr('upload',0,0);
  31.      //a kiválasztott fájl áttöltése/feltöltése kijelzés céljából ideiglenesen
  32.      if ($path_fajl_valaszt)
  33.      { //ha fájl van ideiglenes feltöltése
  34.        if (isset($_POST['formaz']))
  35.        {
  36.          $maxfilesize = 120000;
  37.          $filedir = 'upload';
  38.          $size = $_FILES['hd_file']['size'];
  39.          $type = $_FILES['hd_file']['type'];
  40.          //Engedélyezett fájl formátum
  41.          if ($type == "text/plain")
  42.          {
  43.            if($_FILES['hd_file']['size'] < $maxfilesize)
  44.            {
  45.              if (is_uploaded_file($_FILES['hd_file']['tmp_name']))
  46.              {
  47.                if(!file_exists($filedir . '/' . basename($_FILES['hd_file']['name'])))
  48.                {
  49.                  move_uploaded_file($_FILES['hd_file']['tmp_name'],$filedir . '/'.basename($_FILES['hd_file']['name']));
  50.                  //vizsgálandó, feltöltött fájl neve eléréssel
  51.                  $path_fajl_vizsgal = 'upload/' . basename($_FILES['hd_file']['name']);
  52.                }
  53.              }
  54.            }
  55.            else
  56.            {
  57.              echo 'A fájl mérete meghaladja a megengedett méretet!';
  58.            }
  59.          }
  60.          else
  61.          {
  62.            echo 'A fájl formátuma nem megfelelő!';
  63.          }
  64.        }
  65.      }
  66.      //betöltés feltöltött "hdd"-fájlból
  67.      if(file_exists($path_fajl_vizsgal))
  68.      { //Kiválasztott fájl feldolgozás, megjelenítés
  69.        //fájl nevének meghatározása kiíráshoz
  70.        $path = $path_fajl_vizsgal;
  71.        $file = basename($path, ".txt");
  72.        //Kimutatás fejszövege
  73.        $szoveg = 'A(z) "'.$file.'" fájlban tárolt elérhetőségi  adatok.';
  74.        echo '<br />';
  75.         echo '<div style="padding:0;margin:0 auto;font-weight:700;font-size:16px;color:#323227;text-align:center;">'.$szoveg.'</div>';
  76.         echo '<br />';
  77.         //adatok olvasása és megjelenítése kiválasztott fájlból
  78.         $lines = file($path_fajl_vizsgal);
  79.         // adatok soromkénti feldolgozása
  80.         echo '<div style="margin:0;padding:3px 16px;width:544px;height:auto;overflow:hidden;border-style:none;">';
  81.         foreach($lines as $line)
  82.         { //aktuális sor változóba
  83.           list($this_line) = explode("-",$line);
  84.           //aktuális sor felbontása: idő/IPcím
  85.           list($datum_cell,$boolean_cell,$domain_name) = explode("|",$this_line);
  86.           //sor-adatok kijelzése
  87.           if ($boolean_cell === 'true')
  88.           {
  89.             echo '<div style="float:left;margin:3px 0;padding:0;width:32px;height:17px;border-style:none;';
  90.     echo 'background-image:url(images/ping_lanc.gif);background-position: 0 0;" title="'.$domain_name.'/'.$datum_cell.'"></div>';
  91.           }
  92.           else
  93.           {
  94.             echo '<div style="float:left;margin:3px 0;padding:0;width:32px;height:17px;border-style:none;';
  95.     echo 'background-image:url(images/ping_lanc.gif);background-position: 0 17px;" title="'.$domain_name.'/'.$datum_cell.'"></div>';
  96.           }
  97.         }
  98.         echo '</div><br />';
  99.       }
  100.       //ideiglenesen feltöltött fájlok törlése 1 perc után
  101.       rmdirr('upload',0,60);
  102.       //adat-fájl törlése 2 nap után
  103.       rmdirr('data',0,86400);  //1 nap=86400, 2 nap=172800, 3 nap=259200
  104.     ?>
  105.   </div>
  106. </body>
  107.  

Remélem az ismertető rövid és érthető volt, valamint a kimásolható kódok felhasználásával bárki létre tud hozni egy a DEMO-ban látható, működőképes példányt is.




- Egy talált faágból akkor lesz sétapálca,
ha türelmesen és kitartóan elkezded faragni -
(anonymus)
xhtml   css   cc  

Reklámok