1 / 41

WEB Technológiák

WEB Technológiák. PHP: objektum-, fájl-, dátum- és sztringkezelés. dr. Kovács László Baksáné Varga Erika. ME Általános Informatikai Tsz. PHP. Objektumok. PHP. Objektumok kezelése. osztály definíció objektum létrehozás. class onev extends szoszt { változók metódusok }.

kerri
Download Presentation

WEB Technológiák

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. WEB Technológiák PHP: objektum-, fájl-, dátum- és sztringkezelés dr. Kovács László Baksáné Varga Erika ME Általános Informatikai Tsz.

  2. PHP Objektumok

  3. PHP Objektumok kezelése osztály definíció objektum létrehozás class onev extends szoszt { változók metódusok } - csak egy szülő osztály adható meg - lehet alkalmazni konstruktor metódust is - szülő osztálybeli metódusok újradefiniálhatók - nincs védelmi rendszer, az objektum összes tulajdonsága kivülről is elérhető K.L.

  4. PHP Objektumok kezelése A metódusban az osztály változókra történő hivatkozás: $this->változó Konstruktor létrehozás: a metódus neve megegyezik az osztály nevével <?php class lista { var $elemek = array(); var $hossz; function lista($v) { $this->hossz = $v; } function beszur($e) { $this->elemek[$this->hossz] = $e; $this->hossz++; } } ?> K.L.

  5. PHP Objektumok kezelése Szülő osztály átdefiniált metódusának meghívása: szülőoszt::metodus() <?php ... class a { var $v = 0; function leptet(){ $this->v++; } function novel(){ $this->v++; } } ... class b extends a { function leptet(){ $this->v+=2; } function osleptet(){ a::leptet(); parent::leptet(); } } ... ?> K.L.

  6. PHP Objektumok kezelése Objektumok létrehozása: $objnev = new oszály(paraméterek); • - meghívódik a konstruktor metódus • - változó elérés • $objnev->változó • - metódus hívás • $objnev->metódus() • automatikus felszabadítás • destruktor fv. nincs, hozzá kell adni az osztályhoz • destruktor automatikus végrehajtása: leállítási függvénnyel register_shutdown_function() • A szkript végén fut le, használható fájlok bezárására, tranzakciók lezárására, naplózásra stb. • - az objektumra is a szokásos láthatósági feltételek élnek K.L.

  7. PHP Objektumok kezelése <?php class a { var $x; function a($v) { $this->x = $v; } } for ($i=1; $i<10; $i++) { $tt[$i] = new a($i); } print ($tt[1]->x.”\n”); print ($tt[4]->x.”\n”); ?> K.L.

  8. PHP Űrlapok

  9. PHP Meghívó űrlap adatainak átvétele FORM GET k.változók POST WEB szerver tömbök PHP program Std. IO Fogadó tömbök: $GLOBALS - környezeti változók $HTTP_GET_VARS - input mezők tartalma, GET módnál $HTTP_POST_VARS - input mezők tartalma, POST módnál közvetlen hivatkozás K.L.

  10. PHP Környezeti változók átvétele <BODY> <?php print (”<H1>Valtozok ertekei</H1>\n”); print (”<BR><BR>\n”); foreach ($GLOBALS as $valt => $ert ) { print (” $valt == $ert <BR>\n”); } ?> <HR> </BODY> A CGI-ben megismert változók adatai szerepelnek K.L.

  11. PHP Közvetlen hivatkozás a mezőkre <FORM> <INPUT TYPE=TEXT NAME=T1> <INPUT TYPE=TEXTAREA NAME=A1> <SELECT NAME=S1 MULTIPLE> <OPTION>01 <OPTION>02 … </SELECT> ... </FORM> <?php print (” A TEXT mezo = $T1<BR>\n”); print (” A TEXTAREA mezo = $A1<BR>\n”); … ?> K.L.

  12. PHP Közvetlen hivatkozás a mezőkre <FORM ACTION= ”p.php” METHOD=POST> <INPUT TYPE=TEXT NAME=T1> <INPUT TYPE=TEXTAREA NAME=A1> <SELECT NAME=S1 MULTIPLE> <OPTION>01 <OPTION>02 … </SELECT> ... </FORM> <?php print (” A TEXT mezo = $_POST[T1] <BR>\n”); print (” A TEXTAREA mezo = $_POST[A1] <BR>\n”); … ?>

  13. PHP Tömbön keresztüli hivatkozás mezőkre <?php $PT = (count($HTTP_POST_VARS))? HTTP_POST_VARS:HTTP_GET_VARS; foreach ($PT as $nev => $ert ) { if (gettype($ert) == “array”) { foreach ($ert as $elem) { print (“ $elem “); } } else { print (“ $ert “); } } ?> K.L.

  14. PHP Speciális lehetőségek többértékű SELECT mező feldolgozása: foreach($mezőnév as $ert) { ... } önmagát meghívó lap: <FORM ACTION=“<?php print($PHP _SELF) ?>” METHOD=…> dokumentum fejléc megadása header(“szöveg”); header(“Location: URL”); dokumentum átirányítása K.L.

  15. PHP Fájlok

  16. PHP Állományok feltöltése kliens Ideiglenes terület végleges terület file szerver Feltöltést elindító program <FORM ENCTYPE=“multipart/form-data” ACTION=“…php“> <INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE VALUE= n> <INPUT TYPE=FILE NAME=FNEV> <INPUT TYPE=SUBMIT> </FORM> • Ellenőrizni! • php.ini-ben file_uploads = on (engedélyezett) • php.ini-ben memory_limit > 2 x upload_max_filesize K.L.

  17. PHP Állományok feltöltése <FORM ENCTYPE=“multipart/form-data” ACTION=“…php ” > <INPUT TYPE=FILE NAME=FNEV> </FORM> Az állomány a szerveren egy ideiglenes helyre kerül. Az id. helyről az állomány lementése állandó helyre: move_uploaded_file($f, $path); Az ideiglenes állomány elérése (név azonosságon alapszik): FNEV ideiglenes elérési útvonal FNEV_NAME név FNEV_SIZE méret FNEV_TYPE típus K.L.

  18. PHP Állományok feltöltése Az ideiglenes helyről át kell vinni a végleges helyre <FORM ENCTYPE=“multipart/form-data” ACTION=“…php ” > <INPUT TYPE=FILE NAME=FMA> </FORM> <?php if (isset($FMA)) { if ($FMA_SIZE < 200000) { copy($FMA, “c:\adatok\$FMA_NAME”) or die(“Masolasi hiba”); print (“Sikeres attoltes<BR>\n”); } } ?> K.L.

  19. PHP Állományok kezelése Más forrásállományok beépítése: include(”állomány”); csak amikor szükség van rá include_once(”állomány”); csak egyszer require(”állomány”); PHP feldolgozás kezdetén require_once(”állomány”); csak egyszer Állomány létezése file _exists(“állomány”); Állomány jellege is _file(“állomány”);is _writeable(“állomány”); is _dir(“állomány”);is_readable(“állomány”); is _link(“állomány”);is _executable(“állomány”); is _uploaded_file(“állomány”); K.L.

  20. PHP Állomány jellegének lekérdezése $path_id = opendir($path); while ($file_name = readdir($path_id)) { if ($file_name != ”.” and $file_name != ”..”) { $file_type = filetype($path . ”/” . $file_name); if (!isset($found[$file_type])) { found[$file_type] = 0; } found[$file_type]++; } } closedir($path_id); reset($found); while (list($k, $v) = each($found)) { print(”<br>Found ” . $k . ”: ” . $v); }

  21. PHP Állományok kezelése Allomány létrehozása: touch(”állomány”); Állomány másolása, törlése: copy(“állomány1”, “állomány2”); unlink(“állomány”); Állomány nyitás, zárás: $fv = fopen(“állomány”,”mód”); r,w,a fclose($fv); Zárolás : flock($fv,”mód”); 1,2,3 K.L.

  22. PHP Állomány olvasás: fgets($fa,méret); fread($fa,méret); fgetc($fa); file($f); teljes fájl beolvasása Állomány írás: fputs($fa,”szöveg”); fwrite($fa,”szoveg”); Pozicionálás fseek($fa,pozíció); Könyvtár kezelés get _directory_file(“kat”); többszintű listázás opendir(”kat”), closedir(”kat”), readdir($kat) mkdir(”kat”), rmdir(”kat”), dirname(), pathinfo(), realpath() K.L.

  23. PHP Állományok kezelése Fájl-attribútumok lekérdezése: fileatime(); legutolsó fájlhozzáférés filemtime(); utolsó fájlméret-változás filectime(); utolsó fájlrekord-változás Linux alatt: fileowner(); fileperms(); filegroup(); fileinode(); Képfájlok attribútumai: getimagesize(); Fájl mérete: filesize();

  24. PHP Állományok kezelése <BODY> <H3>UZENET LEHELYEZO</H3> <BR><HR> <FORM ACTION=I1.PHP > <TABLE> <TR><TD>KULDO: <TD><INPUT TYPE=TEXT NAME=KM><BR> <TR><TD VALIGN=TOP>SZOVEG : <TD><TEXTAREA NAME=TM ROWS=10></TEXTAREA><BR> <TR><TD><INPUT TYPE=SUBMIT VALUE=ELKULD><TD> </TABLE> </FORM> <BR><HR> </BODY> Induló űrlap K.L.

  25. PHP Állományok kezelése megjelenő dokumentum KM TM K.L.

  26. PHP Állományok kezelése <BODY> <?php $i = 1; $fnev = $KM."$i".".msg"; while (file_exists($fnev)) { $i++; $fnev = $KM."$i".".msg"; } touch($fnev); $fv = fopen($fnev,"w"); fwrite($fv,$TM); fclose($fv); print("<BR><H3> Uzenet lementve </H3><BR>\n"); print("<A HREF=$HTTP_REFERER>Uj uzenet</A>\n"); ?> </BODY> meghívott PHP program K.L.

  27. PHP Állományok kezelése Figyelem! Kedvezmenyes husveti AB puska vasar es feladat keszites 03-565522 peter3.msg válaszlap <BODY> <BR><H3> Uzenet lementve </H3><BR> <A HREF=http://laszlo.iit.uni-miskolc.hu:8080/i1.htm>Uj uzenet</A> </BODY> K.L.

  28. PHP Dátumkezelés

  29. Dátum és idő • Idő: GMT, UTC, helyi • Naptár: • Unix: csak másodpercekben mér • Zsidó, Gergely • Julianus (nincs benne hónap): év + az év napja (3 számjeggyel) • ICAP: Internet-alapú naptárak • MCAL: modulokhoz csatlakozva érhetők el naptárak

  30. PHP Dátum kezelése time() 1970.01.01 óta eltelt idő sec-ben localtime() $da = getdate() dátum megadása asszociativ tombben $da[“year”], $da[“mon”], $da[“mday”] $da[“hours”], $da[“minutes”], $da[“seconds”] $da[“wday”], $da[“yday”], $da[“mday”] date(”formatum”,$ido) dátum formátumozott kiírása mktime(óra, perc, sec, hónp, nap, év) dátum érték készítése checkdate(hónap, nap, év) dátum ellenőrzése K.L.

  31. PHP Dátum kezelés <H2> AKTUALIS IDO </H2> <BR><HR><BR> <?php $ido = getdate(); print ("<H3>". $ido["year"]. "-". $ido["mon"]. "-". $ido["mday"]. " "); print (" ". $ido["hours"].":". $ido["minutes"]."</H3>\n"); $min = $ido["minutes"]; print ("<BR><HR>\n"); print ("<A HREF=$PHP_SELF> Frissit</A> "); ?> K.L.

  32. PHP Sztringkezelés

  33. Sztringadatok • Megadása: ”…” vagy ‘…’ • Spec. karakterek megadása: \”, \’, \\ • serialize() – adatok sokaságát sztringbe konvertálja unserialize() – visszakonvertálja a sztringet • explode() – sztringet határolókarakter mentén tömbbe darabol föl implode() – tömbben tárolt adatok összefűzése sztringgé határoló karakterrel

  34. PHP Sztring kezelés strstr(miben,mit) rész-sztring keresés strpos(miben, mit) rész-sztring keresés poziciót ad vissza substr(miben, poz, hossz) rész-sztring strtok(szo, szeparator) szó darabolás $szo = strtok($szoveg,$szeplist); while (is_string($szo)){ if ($szo){…} $szo = strtok($szeplist); } trim(szo), rtrim(szo), ltrim(szo) üres szöveg-vég levágás substr_replace(miben,mit,index) rész-szöveg helyettesítés strtolower(szo), strtoupper(szo)kis- ill. nagybetűre konvertál strrev(szo) sztringet megfordít K.L.

  35. PHP Sztring kezelés addslashes($s) sztringben spec. karaktereket \-el ellátja crypt($s, $key) adott kulcs használatával DES eljárással titkosítja a sztringet echo ” ”, print($s) sztring kiiratása strcasecmp($s1, $s2) betűméretre nem érzékeny sztring összehasonlítás strcmp($s1, $s2) betűméretre érzékeny sztring összehasonlítás strlen($s) sztring hossza htmlentities($s) spec. karaktereket HTML elemekre konvertál htmlspecialchars($s) spec. karaktereket HTML elemekre konvertál … K.L.

  36. PHP Reguláris kifejezések: részsztring kereséshez, helyettesítésehez ereg(amit,amiben) kis- és nagybetű érzékeny ereg_replace(amit,amire,amiben) eregi(amit,amiben)kis- és nagybetűre nem érzékeny eregi_replace(amit,amire,amiben) split(határoló,s) a sztringet a határoló sztring mentén felosztja részekre és tömbben helyez el (kis- és nagybetű érzékeny) spliti(határoló,s) kis- és nagybetűre nem érzékeny Speciális karakterek: ^x : a keresett sztring a keresési sztring elején van x$ : a keresett sztring a keresési sztring végén van x* : a keresett sztring után tetsz. karakter lehet {} : megadott számú karaktert keres K.L.

  37. PHP Egyéb függvények

  38. PHP Típusellenőrzés empty() változó kitöltöttségét vizsgálja print_r(), var_dump() változókról információk gettype(), settype() aut. típusfelismerés és beállítás is_array() , is_object(), is_string(), is_scalar(), is_null(), is_bool(), is_double(), is_float(), is_real(), is_numeric(), is_long(), is_int(), is_integer() Konverzió intval() egész érték kiemelése változóból (sztringől is, ha az egész a sztring elején van!) base_convert() adott számot egyik számrendszerből másikba konvertál (számrendszerek: 2-32) decbin() , bindec(), dechex(), hexdec() … deg2grad(), grad2deg() $r = (double) 111; explicit típus kijelölés

  39. PHP Matematika • Standard mat. fv-ek: max(), min(), abs(), pow(), sin(), cos(), sqrt() … • number_format() a tizedesjel és az ezreseket elválasztó kar. megadásával megformáz egy számot • floor(), ceil(), round() leb. pontos szám egész része, felfelé kerekítése és szabályos kerekítése • Kibővített matematikai szoftverek • GMP: • tetsz. nagyobb méretű egészekhez (32 biten, előjeles) • GNU MP: nyílt forráskódú mat. csomag • BCMath • tetsz. pontosságú mat. fv-ek • lebegőpontos számokhoz (64 biten, 14 számjegy)

  40. PHP Véletlenszámok rand(), mt_rand()véletlenszám előállítása srand(), mt_srand() kezdőérték meghatározása getrandmax(), mt_getrandmax() rand() fv-ben használható intervallum maximum lekérdezése Szkript időzítés microtime() szkript időzítő fv. a művelet idejének mérésére eredménye: - a másodperc törtrésze - unix-idő mp-ben Idősztring összeállítása: $m = microtime(); $mstart = explode(” ”,$m); print( date(”l F j, Y h:i:s”, $mstart[1]) . substr($mstart[0],1) . date(” a”, $mstart[1]) ); Két művelet idejének különbsége: print( bcsub($s1, $s2) );

  41. PHP Hibakeresés assert($s), assert_options() hibakeresés die(”üzenet”) szkript leállítása üzenetküldéssel @fvnev() a hibát generáló fv. leállítása a hiba kiiratása nélkül error_log (”üzenet”, 0 | 1) üzenet hozzáadása a hibanaplóhoz Kimenet-vezérlés ob_start() a kimenet nem kerül a böngészőbe ob_end_flush() a kimenet a pufferbe kerül ob_end_clean() a kimenet nem kerül a pufferbe ob_get_contents() pufferelt kimenet eltárolása

More Related