PHP

PHP grafika - R.E. PHP Graph v1.0

Törpi a sztár

Ez a program egy PHP grafikus osztálykönyvtár próbálna lenni. És úgy néz ki, hogy eddig sikerült is neki. némely részei 2 éve porosodnak a gépemen, és most gondoltam úgy, hogy eljött az ideje ezen változtatni.
Letöltés: R.E. PHP Graph v1.0
Dokumentáció letöltése
Dokumentáció online megtekintése
Példa képek


Tudnivalók:
A dokumentációban nagyjából minden le van írva. De azért nagy vonalakban miről is van szó. A Graph.class.php-t kell beilleszteni a programba elsőként. Majd létre kell hozni egy grafika objektumot, amire rá lehet pakolni egyéb objektumokat:

<?php
require_once 'rephpgraph/Graph.class.php';
$graph = new Graph(150,150);
$graph->type = 'png';
$graph->transparent = true;
?>

A szélességet és a magasságot kell csak megadni. Valamint megadható a kép típusa, és hogy legyen-e áttetsző a háttérszín. Ha szükség van objektumokra, akkor azt importálni kell a Graph osztály statikus importObject() metódusával. Ha paraméter nélkül hívjuk, akkor minden objektumot importál (Azaz osztályt). Ha stringet kap, akkor az osztály nevét kéri csak. Ha tömböt kap, akkor a tömbben kapja az osztályok neveit.
Az importIterator() ugyanezen elven működik. Csak iterátorokat importál.

Ezek után létre lehet hozni egy tetszőleges objektumot. És a $graph objektum add metódusával hozzá adható a képhez.

<?php
require_once 'rephpgraph/Graph.class.php';
$graph = new Graph(150,150);
$graph->type = 'png';
$graph->transparent = true;

$ora = new AnalogClock(74,mktime(7,10,30));
$ora->x = $graph->width-$ora->width/2;  //óra középpontjának koordinátái a képen
$ora->y = $graph->height-$ora->height/2;
$ora->background = $ora->createColor(0,0,130);
$ora->transparent = true;

$graph->add($ora); //óra felvétele  aképre

$graph->flush(); //kép megjelenítése

?>

A $graph objektum flush() metódusa küldi ki a képet a kimenetre. De lehetőség van lementeni is a képet a

<?php
$graph->save('fajlneve.png');
?>

metódushívással, vagy akár letöltésre kiküldeni a böngészőnek:

<?php
$graph->saveClient('fajlneve.png');
?>

Ennek kimenete:

Analóg óra
Természetesen az óra nem csak statikus időt tartalmazhat, hanem mindig az aktuális időt is.
Terveim közt szerepel még több objektum megírása, de egyelőre sok más elfoglaltság mellett halasztom a dolgot.

Megosztás/Mentés

Meghívós loginrendszer - R.E. login 1.8.1

R.E. Login 1.8.1

Egy csaknem 4 éves általam írt PHP loginrendszerről van szó, ami elég sok apró hibát tartalmazott. Most volt időm javítani ezeket a hibákat és 1.8.1 -es verziószámmal közzé is teszem.
Letöltés: R.E. Login v1.8.1
Képernyőképek

Megosztás/Mentés

PHP tortadiagram kezelő v1.1

Tortadiagram

Ez a php program Különböző adatok egymáshoz viszonyított arányát ábrázolja tortadiagramon.
Használatához mysql adatbázisra van szükség. Az adatbázis kapcsolódáshoz szükséges adatokat a config.php-ben lehet beállítani. Az 1.0 verzióhoz képest nem változott semmi, csak hibajavítások történtek. 4 éve még nem figyeltem az apróságokra annyira. Illetve beépítettem egy kijelentkezést is.
Letöltés: Tortadiagram kezelő v1.1


Telepítése
Ha a config.php-t beállítottad, másold fel a fájlokat a szerverre, és nyisd meg az index.php-t. Ekkor a telepítés megtörténik, és az sql.sql fájlt törli a program.
Ha az adatok helyesek a config.php-ben, de mégsem sikerül a telepítés, lehet, hogy már létezik a diagram tábla az adatbázisban. Ekkor ezt törölni kell és újra próbálkozni.

Adminisztráció
Mindent az admin.php oldalon tudsz beállítani. Nyisd meg ezt a szerveren böngészőből, és kezdd el felvenni az adatokat. Beállíthatod milyen színnel jelenjen meg a diagramon bármelyik adat. Törölhetsz és módosíthatsz. Jelszó szükséges. Alapértelmezetten: "password". De ezt is beállíthatod a config.php-ben.

Használata
Ahol a diagramot a mellette található színmagyarázatokkal megjelenítenéd, használd a következő php kódot:

<?php include('tortadiagram/inc.php'); ?>

Ahol feltételeztem, hogy diagram fájljait a tortadiagram mappában lehet megtalálni.
Ha csak a tortadiagramra van szükség, akkor a következő html kód használható:
<img src="tortadiagram/diagram.php" alt="diagram" />

Képernyőképek

Megosztás/Mentés

Webes fájlkezelő php-ben

Fájlkezelő

Ezt a fájlkezelőt még a phpstudio-ra készítettem 2006 szeptemberében.
A kezelése és a megjelenése nem a legpraktikusabb / legmodernebb, de azért még így is hasznát lehet venni :)
Letöltés: Fájlkezelő


Amit tud
A fájlkezelõ képes mappákat, fájlokat másolni, áthelyezni, átnevezni, létrehozni, törölni.
Fájlokat meg is nyithatsz, és módosíthatod. Hasznos lehet apróbb hibák esetében, ha nem akarsz ftp-t használni.
Lehetőség van fájlok feltöltésére. Maximum 2MB lehet a fájlméret.

Beállítások:
A fajlkezelo.php nevű fájl elején megtalálod a $konyvtar változót.
Állitsd be azt a mappát, ahova szeretnéd tenni a feltöltött fájlokat.
pl : $konyvtar = "temp";
A belépéshez még szükség van egy jelszóra. Ezt is a fajlkezelo.php elején teheted meg.
Töltsd fel a fajlkezelo.php fájt a szervered gyökérkönyvtárába, és máris tallózhatsz a fájlok között.

Használata
Válaszd ki a mappát, ahonnan szeretnéd listázni a fájlokat. Ezt megtalálod a "honnan" link mellett.
Majd válaszd ki, hogy hova szeretnél másolni, áthelyezni, stb... Ezt pedig a hova link mellett találod.
Ha egy szintet feljebb szeretnél ugrani a mappákban, akkor válaszd az >>1 szint fel<< opciót.

Miután a fájlok listája megjelenik, válaszd ki a fájlt, amivel dolgozni szeretnél. És jelöld ki azt másolást, vagy az áthelyezést attól függöen, mit szeretnél a fájllal. Lehetõség van a fájlok átnevezésére. Ezt akár a másolás, akár az áthelyezés opcioval is megteheted. Ha csak másolni szeretnél ugyanabba a mappába, ahol a forrásfájl található, csak jelöld ki a másolást, és nevezd át a fájlt. A cél mappa (hova) egyezzen.

Ha már egy meglévő fájlt, pl egy php szkriptedet szeretnéd feltölteni, azt is megteheted.

Ha egy meglévő fájlt szeretnél szerkeszteni, válaszd ki a fájlok listájában a fájlt, és kattints a szerkeszt linkre.
Itt módosíthatod a fájlokat. A megnyitás csak szöveges fájlok esetében működik. Így például nem tudsz megnyitni képfájlokat szerkesztésre.

Fájlok méretét is megnézheted. Amikor kiválasztod a fájlt, automatikusan megjelenik az oldal tetején a mérete a nevével együtt.

Megosztás/Mentés

Szövegben url-ek linkké alakítása automatikusan php-vel

Szokás fórumokon, vendégkönyvekben a beírt url-eket automatikusan felismertetni és átalakítani kattintható linkké. Erre jól használhatók a reguláris kifejezések. Az első példa rövid, de felismeri a linkeket, amik http-vel, https-el, www-el, wap-al kezdődnek. Viszont ha vessző kerül a végére, mert épp egy tagmondat végén van, vagy pont, esetleg felkiáltó jel, akkor az is bekerül a linkbe.

<?php
$szoveg = "Egy szövegben lehet link https-el kezdődve: https://www.google.com/accounts/ServiceLogin?service=mail
vagy csak http-vel. http://rimelek.hu,
 www.phpstudio.hu "
;

$szoveg = preg_replace("#(\s*)((http(s?)://)|(www\.|wap\.))(\S+\.\S+)#is", "\\1<a href=\"http\\4://\\5\\6\" target='_blank'>\\2\\6</a>", $szoveg);
print $szoveg;
?>

A másik megoldás bonyolultabb, de az írásjeles hibát is megoldja:

<?php
function url2link($matches)
{
        $i = strlen($matches[0]);
        $szoveg = trim($matches[0],',.!');
        $j = strlen($szoveg);
        return preg_replace("#(\s*)(http(s?)://)?(.*)#is",
                "\\1<a href=\"http\\3://\\4\" target='_blank'>\\2\\4</a>",
                $szoveg).substr($matches[0],$i-1,$i-$j);
}

$szoveg = preg_replace_callback("#(\s*)((http(s?)://)|(www\.|wap\.))(\S+\.\S+)#is",'url2link',$szoveg);
print $szoveg;
?>

Megosztás/Mentés

Lapozás PHP-ben

Nem is olyan régen írtam egy blogot a dinamikus több sorba tördelésről. Annak folytatásaként fogható fel ez a kis ismertető. Mert hát nagyon hasznos, hogy 500 ezer képet, vagy adatbázisbeli rekordot meg tudsz jeleníteni egy weboldalon több sorban oszlopokba rendezve, csak hát elég valószínűtlen, hogy azt kibírná a böngészőnk, vagy akár a szerver. De elég, ha csak saját emberi tulajdonságunkra gondolunk, a türelmetlenségre. Mi a megoldás? Természetesen a lapozhatóság megvalósítása. Amire többféle megoldás létezik, és sok fórumon, sok blogban foglalkoztak / foglalkoznak a témával. Némelyik igen szép kinézetet is kap. Osztályokat is írnak rá. Ez alól valószínű én sem leszek kivétel, de addig is nézzünk pár primitívebb módszert.

Az első példa egyszerű tömböt fog használni az adattárolásra. Akár csak a sortörésről szóló blogom első példái is.

Oké. Van egy kérdésem. Mi az első, ami eszedbe jut a lapozással kapcsolatban, és szükséges ahhoz, hogy egyáltalán legyen lapozás? Igen igen. Jól gondolod. Hogy hány elemet akarsz megjeleníteni egy oldalon egyszerre. Akkor add is meg gyorsan. Én tízet választok.

Megosztás/Mentés

Lista megjelenítése táblázattal php-ben

Nos, amire a cím is utal, nem egy nagyon bonyolult probléma, ám annál gyakoribb.
Elég, ha csak egy képgalériát szeretnél, ahol egy sorban maximum 10 képet szeretnél látni, vagy akár annál kevesebbet, függetlenül attól, hogy mekkorák a képek. Adott esetben az egyik sorban lehet, hogy csak 5 kép van, a másikban pedig 6, mert több fért el.

De bármilyen adattömeget szükség lehet ilyen módon megjeleníteni. Legyen az egy webes fájlkezelő, mint például a windows intéző, ahol szintén rendezett módon jelennek meg az ikonok, vagy akár bármilyen adatbázisban tárolt információ.

Erre mutatok pár példát, mert már túl sokszor írtam ezt le különböző fórumokon, és nyilván nem is csak én. De gyakran nehéz rátalálni a probléma megoldására egy fórumban, ahol temérdek kérdés és válasz váltja egymást egyetlen témában.

Megosztás/Mentés

Gömb rajzolása PHP-ben

Gömb logó

Ez a script már régen készült, és közel sem tökéletes megoldásokkal. De mivel újra írni már nincs kedvem, ezért így mutatom meg :)

A bal felső sarokban levő képhez hasonló gömböt, illetve különböző variációit lehet generálni. Minden fontos tulajdonsága beállítható url-ből. Így tesztelhetők a lehetőségek.


Tulajdonságok:

  • Színek:
    Minden szín a következő formában adható meg: RRR,GGG,BBB
    Ahol az egyes betűk az RGB-nek megfelelően a vörös, zöld és kék színek mértékét jelentik 0 és 255 között.

    • fill: Gömb színe (kitöltése)
    • bgcolor: Kép háttere, ha jpeg formátumú
    • border: Választható szegély az alakzatnak
    • monox,monoy: Nevüknek megfelelően vízszintes és függőleges irányban húzott ívek színe. Alapértelmezetten minden ív más színű.
    • _0 -től _7-ig: Az ívek színkészlete változó színek esetén
  • Méretek:

    • space: Az ívek távolsága egymástól pixelben.
    • width: A kép szélessége (Alapértelmezetten azonos a rajz szélességével)
    • height: A kép magassága (Alapértelmezetten azonos a rajz magasságávall)
    • w: A rajz szélessége
    • h: A rajz magassága

  • type: Kép típusa. (jpeg,jpg,png és gif a megengedett)
  • quality: A kép minősége 0 és 100 között. (Csak jpeg formátum esetén)
Megosztás/Mentés

Hibakeresés PHP-ban

Tartalom

Bevezető
Elég gyakori, hogy alapvető hibákat nem találnak meg kezdő, vagy sokszor haladó programozók sem. Ehhez próbálok segítséget nyújtani pár hasznos tanáccsal. Érdemes megfogadni őket. Leginkább PHP-ról fogok szólni a cikkben, de megpróbálok általánosságban is megemlíteni pár dolgot.

Alapvetően kétféle hibát különböztethetünk meg.

  1. Szintaktikai
    Ebben az esetben valószínűleg elírtunk valamit a programkódban, és egy olyan utasítás került a forrásba, ami nem értelmezhető az adott nyelven, vagy lehagytunk egy fontos elemet figyelmetlenségből. Például egy pontosvesszőt az utasítás végén, ha a programnyelv igényli. Ha szintaktikai hibát ejtünk, a program nem fordul le, illetve script nyelv esetén hibaüzenettel leáll értelmezéskor.

  2. Szemantikai
    Meglehet, hogy a kódunk szintaktikailag helyes, és látszólag minden a helyén van, de nem gondoltuk át kellőképpen, hogy mit is szeretnénk megvalósítani. Esetleg nem ismerjük kellőképpen a használt függvények működését, és rossz módszert alkalmazunk, aminek következtében a program bár helyes, tényleg nem azt fogja „művelni” amit elvárnánk tőle.

Nos, egyik esetben sem a számítógépünket kell püfölni, vagy gondolkodás nélkül írni egy fórumra, és leírni, hogy „nem működik, segítsetek”. Első lépés, hogy gondolkodunk magunk, és utánajárunk, miben hibáztunk. Majd csak a második lépés lehet, hogy más segítségét is igénybe vesszük. Elvégre emberek vagyunk. Lehet, hogy nem tűnik fel valami akkor sem, ha szinte kiszúrja a szemünket.

Na de nézzük meg a lehetséges hibajelenségeket, és a hiba detektálásának módjait.

Megosztás/Mentés