Ebben a tutorialban a Windows futásidejének az előcsalásával fogunk foglalkozni.
Szükséges hozzávalók: egy PHP futtatására képes Windows-os webszerver.
Én Apache 2.0.49-et PHP 4.3.5 -el használok Windows XP rendszeren.
Mivel a PHP nem támogatja a futásidő lekérését közvetlenül, ezért egy kis C++ is lesz a tutorialban, de nem bonyolult az se :)
A két #include sorral a fejlécfájlokat olvassuk be (ezekben vannak a fügvények…)
majd létrehozunk egy int (egész szám) típusú változót 0 értékkel. A GetTickCount() fügvénnyel olvassuk ki a windows futásidejét – e miatt kell a windows.h header fájl – és belepakoljuk a változónkba, majd kiírjuk – ezt a kimenetet fogja az exec() megkapni.
A progit lefordítva is megtaláljátok, gondolom nem mindenkinek van Visual C++ vagy egyébb alkalmas szoftvere a fordításhoz.
A PHP rész:
Az elején az exec() lefutattja az uptime.exe -t az elérési útvonalat természetesen írjuk át arra ahova tettük az exe -t. Érdemes kívülre tenni a www könyvtárból és akkor senki nem tudja letölteni. Az exec az utolsó sorral tér vissza amit eltárol az $uptime változóban – ezredmásodpercben. Az algoritmust ami által nap, óra, perc, másodperc alakot vesz fel a cucc, nem magyarázom (egyszerű szorzás, osztás kivonás :) )
Mostmár készen vannak a változók. Az egyszerűbb skinelhetőség érdekében template fájlt használok. Az str_replace sorok cserélik ki a megfelelő adatra a template elemeit.
Skinezés:
A template.php fájlt kell szerkeszteni. A !nap! !ora! !perc! !masodperc! fog lecserélődni a megfelelő számértékre. A template-t én dreamweaver-ben készítettem, majd a forrásán a " lecseréltem " -re és elé raktam az alábbi kódot (sort)
sort a végére meg a php lezáró tagjét "; ?> és már kész is a template :) A " jeleket azért kell lecserélni, mert egyébként azthinné a php, hogy ott vége van a stringnek és elszállna parse errorral :/
A forrásfájlok letölthetők innen
Ezt egyébként meg lehet a progi nélkül is csinálni ha a PHP-ba a W32api be van töltve, de én úgy vagyok vele, hogy ne foglalja a memóriát :)
Szerző: BlackPrince