Minden ami PHP: Tutorial,php 24ó alatt,kereső optimizáló,BB kód, képfeltöltő

Indította abence, 2010-09-01, 17:28:59

Sziasztok!

Írok egy kis leírást php-hoz, hogy aki nem ért hozzá, az is(akár a kódokat másolva) tudjon regoldalt csinálni.

Php ról:
A php egy programozási nyelv. Php futtatásához kell egy webszerver, pl. xampp, easyphp, vagy fel lehet tölteni netes tárhelyre. A php fájloknak .php ra kell végződniük, csak akkor futnak le. Php fájlokba lehet írni ugyan úgy html, js, css kódokat, mint html fájlokba. A php kódokat, amiket akarjuk hogy lefusson, azokat <?php és ?> közé kell tenni.

Minta:
<?php
echo("Szia!");
?>

Ezt kiírja hogy Szia! . Lássuk a részeit:
echo - fügvény, parancs, ez a kiírás parancs(egyik, a másik a print).
( -ez után kell írni az adatokat a fügvénynek.
"Szia!" - Ez az amit kiír. " " vagy ' ' közé kell tenni, mert csak akkor tudja a php hogy ez szöveg akar lenni.
) - ez azért hogy nincs több adat.
; -új sor miatt. ezt minden parancs után kell írni.

Változók:
A változók olyan "nevek" amiknek értékük van. Ezekkel tárolunk értékeket. Az értékek lehetnek számok és szövegek is. A változók neveit $ vel kezdjük.

Példa rá:

<?php
$valtozo
="Szia!";
echo(
$valtozo);
?>

Ez is ugyan úgy kiírja hogy Szia! . Itt az echo nál, a ( ) közé nem kell " "-t tenni, mert a változó van oda írva, az echo előtt meg létrehozzuk, és megadjuk a $valtozo változónak a "Szia!" értéket.

Itt:
$valtozo - a változó neve.
= érték adás, ha a változó nem létezik akkor létre is hozzuk vele.
"Szia!" - a szöveg, amit megadunk neki értéknek.
; - megint kell a sor végére.

Még egy pl.
<?php
$valtozo1
=5;
$valtozo2=2;
$valtozo3=$valzoto1+$valtozo2;
echo(
"öt + kettő =".$valtozo3);

Itt létre hozunk 3 változót. Az 1. nek 5 öt, a 2. nak 2-t adunk értéknek. Mivel nincsenek "" vagy '' között ezért számként fogja öket tekinteni, ami azért kell, mert a 3. változónak értéknek ennek a 2 változó értékének az öszegét adjuk meg. Ha szöveg ként adjuk meg akkor hibát adna(szöveget nem + jellel egyesítünk.).
Ezután az echo nál meg van az "öt + kettő =" szöveg, és ahoz a .-al hozzá füzzük a 3. változót. Ilyenkor mikor szöveghez számot füzünk  a szám átváltódik szövegre, ezért nem ad hibát hanem jó lesz.

És ennek az eredménye:
öt + kettő = 7


Nemsokára írok még. Írok még egy kicsit az  alapokról, utána a mysql ról, meg hogy hogy kell azt php-ban kezelni.

Üdv. abence

Ha segítettem írj egy kösz-t, a témát lezárom, pm be írjatok.

Ebben a témában lefogok írni pár általam készített php szkriptet.

Belépés,Regisztráció, stb...

A php kódot mindig az előtag és az utótag közá írjuk pl.

<?php

//ide jon a kod ez egy megjegyzes sor

?>

<?


//ez a elotag es utotag csak akkor megy ha  php.ini fájlba a short.open tag On-ra van állítva.

?>

Kíirni dolgokat az echo és a print fügvényekkel tudunk.

Pl:

<?php

echo "Ez egy szöveg!";

?>


vagy


<?

print "ez egy szöveg!";


?>

Változókat $pelda ez egy példa nevü változó.
Érteket neki úgy tudunk adni , hogy:

Pl:

Ha szoveges erteket adunk akkor $pelda = "Ez egy szoveg";
Ha szam erteket adunk akkor $pelda = 10;

Kiiratni az értekét peddig úgy tudjuk , hogy:

<?php

$pelda =16;

echo $pelda;



?>

<?php


$pelda = 10;
$pelda1 = 20;
$pelda2 = $pelda + $pelda1;

echo "A két változó értékeinek összege: " .  $pelda2;




?>

Egy html fájlba begépelünk egy szöveget és azt kiirjuk aphp fájlba:

Ez egy nagyon egyszerü dolog.
Elöször a html ürlapot kell elkészítenunk.

<html>

<head>

<title>E az oldal cime</title>
</head>
<body bgcolor="black" text="white">

<div align="center">
<form action="urlap.php" method="POST" name="urlap">

Neved:<input type="text" size="30" name="neved" value="Ide ird a neved">


<input type="submit" value="Mehet">




</form>



</div>



</body>



</html>

Ha ez megvan ezt kell uirnunk a urlap.php fájlba:


<?php

$your_name = $_POST['neved'];

echo "Szia a te neved: " . $your_name;

//és ez a fájl kiirja a mezöbe gépelt szöveget úgy hogy:Szia a te neved es a mezo erteke.
?>

Az alábbi sorokban leírom nektek, hogyan telepítsétek az Apache webszervert,

és mellé a MySQL-t. Először töltsétek le a Wamp nevű programot. Ha más szervert favorizálsz,

ugord át az alábbi sorokat, ugyanis itt az apache telepítését írom le. (bár ha már itt vagy, nem

hiszem hogy ez gondod okozna )



http://www.wampserver.com/dl.php



Ez a "kis" fájl telepíti mind az Apache-ot, mind a MySQL-t

Miután letöltöttétek, indítsátok el!



1. Kiír egy pár sort, és 2 gombot. Katt a Next-re!

2. A középen lévő fehér hátterű szövegdobozba olvashatod el a felhasználási szabályokat, stb.

Válaszd az "I accept the agreement" szöveg melletti gombot, majd katt a Next-re!

3. Add meg a telepítési könyvtárat, majd Next!

4. Írd be a StartMenü-ben megjelenő részleg nevét. (Ezt érthetőbben nem tudom mondani )

5. Megkérdi automatikusan elindítsa-e a Wamp szervert bejelentkezéskor.

Ha igen, pipáld ki a négyzetet, majd Next!

6. Már majdnem vége Katt az Install gombra!



Szépen feltelepül, majd a végén még kérdez valamit.

Itt azt kell bejelölnöd, mi legyen a szerver gyökérkönyvtára!

A legegyszerűbb, ha nem írsz be semmit, rámész az OK-ra.



Egy újabb kérdés, ezt hagyd úgy, ahogy van! (localhost)

A következő ablakot is hagyd, Next!

Mindezek után elméletileg kiírja a böngésződ nevét, és megkérdi, az legyen-e az alapértelmezett.

Okézd le, és itt a vége!

Még megkérdezi, elindítsa-e most rögtön. Rád hagyom a döntést



Gratulálok, telepítetted a szükséges fájlokat,

mostmár eléred a saját webszervered a következő címen: http://localhost/

Ha pl. bemásolsz a gyökér könyvtárnak jelölt könyvtárba egy fájlt, pl. index.php-t,

akkor azt eléred a http://localhost/index.php címen, és le is futtatja a php kódot!

Mások így érhetik el a szervered: http://ip.címed.kerül.ide/



Mi is az a localhost?

A local azt jelenti "helyi", ez alapján már nem szorul sok magyarázatra.

Az apache webszerver nyit egy portot, az esetek túlnyomó részében a 80-as portot,

amin keresztül a böngészők betöltik, majd megjelenítik a kapott adatokat.

Amikor beírod a böngésződbe, hogy http://localhost/, akkor az nyit egy kapcsolatot

a localhost-ra a 80-as porton (ez így működik minden oldalnál, IP címnél).

Ha fut a gépeden az apache, vagy valamilyen szerver, akkor az fogadja is a kérést, és

válaszol rá. A válasz egy weboldal, egy hibaüzenet, vagy éppen egy fájl, amit le akarsz tölteni.



Rövidre fogva, ez egy ablak az internetre a gépedből, amin mások is betudnak nézni



Köszönöm hogy elolvastad szerény kis leírásomat

Ha már fenn van az apache webszerverünk, indítsuk el, és teszteljük le, hogy jól működik-e!

Nyissuk meg a böngészőnket, és pötyögjük be: http://localhost/

Ha nem hibát ír ki, akkor működik



---

http://localhost/ <-> továbbiakban localhost

a webszervered gyökér könyvtára <-> továbbiakban wwwroot

---



PHP-t lehet írni jegyzettömbbel is, de egyszerűbb egy olyan programmal, ami támogatja

a syntax highlighting-ot, vagyis kiszínezi a különféle kódokat. Egyik általam kedvelt program

az EditPlus, ha felkeltettem érdeklődésed, ajánlom a google használatát



Alapok



Mindenekelőtt tudatnunk kell a böngészővel, hogy PHP kóddal áll szemben!

A fájlt, amiben a php kód van, *.php néven kell elnevezni, vagyis a kiterjesztésének php-nak kell lennie!

Tehát lehet szamologep.php, teszt.php, index.php...stb.

Akkor is php formátumot kell adni egy fájlnak, ha a tartalom java része html,

de nyomokban mogyo...öhm, php kódot is tartalmaz.

Ha a formátum html, akkor lefut a html kód, de a php nem.

Ha a formátum php, akkor lefut a php kód, és a html is.

Aki tanult HTML-t, az tudja, hogy HTML-nél a tag-ek közé írjuk a kódot...

többnyire php-nél is hasonlóképpen van, csak nem tag-ekkel, hanem ezzel a kettővel: <?php ?>

Tehát egy alap kód így néz ki:





CODE
<?php

//a php kód

?>
A kettő / jel megjegyzést, kommentet jelent, vagyis ami a // jel után van, (az egész sor, de csak AZ a sor)

az nem jelenik meg, nem értelmeződik, csak van.



Ha valamit elrontasz a kódban, akkor azt egy egyértelmű (angol) üzenettel jelzi majd a böngésződ

Nem fog villogni, szirénázni, sikítani, de észre fogod venni.

Ez reméljük nem fog bekövetkezni...

De vágjunk is bele, csináljunk valamit!

Gondolom mindenki ismeri a "Hello World!" példát, lerágott csont.

Dobjuk fel kicsit:





CODE
<?php

print "Te most éppen egy monitor előtt égeted a maradék agysejtjeid! Húzd ki a gépet, és dobd ki az ablakon!";

?>
tehát megnyitjuk a php-t, egy print függvénnyel kiíratjuk a szöveget, majd lezárjuk a php-t...

fontos, hogy MINDEN parancs után kell a pontosvessző! (ez --> ; <-- ez)

aki nem tudja hogy kell leírni: Alt Gr (jobb alt) + , (pont fölötte, el se lehet téveszteni)

tehát a

print "pontosvessző"

parancs hibát eredményezne, helyesen:

print "pontosvessző";

pár példával remélem érthető lesz hogy hogyan kell használni:





CODE
<?php

print "OMG"; //kiírja: OMG

print "jaj"; //kiírja: jaj

print '"OMG"'; //kiírja: "OMG"

print 'jaj'; //kiírja: jaj

print "'OMG'"; //kiírja: 'OMG'

echo "Ugyan ezek érvényesek az echo-ra is, én a print függvényt használom a tutorialok során!";

echo "Az echo parancs gyorsabb mint a print, erről egy másik tutorialban is olvashattatok már.";

echo "Gyorsaságának titka, hogy a print-tel ellentétben, az echo nem ad vissza eredményt, csak kiírja a paramétereket.";

//ezekről a fogalmakról később

?>
és most jöjjön pár hibás kód:





CODE
<?php

print "És akkor azt mondta: "Hello!"."; //"És akkor azt mondta: " <- ez után már php parancsként értelmezi a dolgokat

print "ohh; //nincs lezárás...

print 'jaj"; //az egyik nem zárja a másikat!

?>
az előbbi kódban az első példa ezt írná ki: "És akkor azt mondta: .", márha nem írna hibaüzenetet...

Ha mindenképpen ugyanolyan idézőjelet akarunk használni, van rá megoldás, úgy hívják escaping.

Lássuk:





CODE
<?php

print "És akkor azt mondta: \"Hello!\".";

?>
A vissza per (\) jelnek van ez a tulajdonsága, hogy különleges karaktereket lehet vele írni,

vagy, mint esetünkben, egy idézőjelet kiírni ahelyett, hogy lezárásra használnánk



Változók



a változót képzeljétek el úgy, mint egy cetlit, amire írhatunk bármit, és le is radírozhatjuk.

példa:





CODE
<?php

$valtozo = "érték"; //a $valtozo értéke: érték

print $valtozo; //kiírja: érték

print "$valtozo"; //kiírja $valtozo

?>
(megj. a tutorial írásakor a print "$valtozo"; azt írta ki, hogy $valtozo, azóta nem tudom mi a helyzet,

de azt tanácsolom, tartsátok magatokat az összefűzéshez, ha karakterláncot és változót is ki akartok íratni egyszerre.

az összefűzésről pár sorral lejjebb olvashattok)



a változó tartalmát felül lehet írni





CODE
<?php

$valtozo = "a";

print $valtozo; //kiírja a

$valtozo = "b";

print $valtozo; //kiírja b

?>
na de mi van akkor, ha egyszerre sima szöveget, és változót is ki akarsz íratni?

ezt hívjuk összefűzésnek





CODE
<?php

$valtozo = "5";

print $valtozo.": a legjobb szám";

print "Üdvözöllek, az azonosítód: ".$valtozo.", jegyezd meg!";

print "A legjobb szám: ".$valtozo;

?>
gondolom egyértelmű mit írnak ki

Hello mindenki, ismét itt vagyok



Lássuk mi lesz a mai program:

1; Tömbök készítése, és használata

2; Műveletek tömbökkel

+; Beléptető rendszer példa



Akkor vágjunk is bele!





Tömbök készítése, és használata





Változót már megtanultunk létrehozni, a tömb készítése is hasonló.

A változónál egy papír darabot képzeltünk el.

Most képzeljünk el egy egész jegyzetfüzetet, végtelen sok lappal rajta!

A jegyzetfüzet egy-egy lapját elképzelhetjük változónak.

Akkor lássuk hogyan működik:





CODE
<?php

$tomb = array(); //a tömb változó értéke egy tömb, így már nem is változó

$tomb[] = "0"; //$tomb[0] == "0"

$tomb[] = "1"; //$tomb[1] == "1"

$tomb[] = "3"; //$tomb[2] == "3"

?>
Mint láthatjuk a példán is, a tömb lapjait egy szögletes zárójelben megadott számmal

érhetjük el. Fontos, hogy a számlálás nullától (azaz 0-tól) kezdődik!

Így is csinálhattuk volna: $tomb[0] = "0"; stb...

Ha értékadásnál nem írunk semmit a szögletes zárójelekbe (ezekbe --> [ ] <-- ezekbe)

akkor alapértelmezés szerint a tömb legvégére illeszti be az adott tartalmat.

Nem ajánlatos "össze-vissza írogatni a tömbbe"!

Pl.: $tomb[654] = "fontos adat";

így ha ezután írjuk ezt: $tomb[] = "még fontosabb adat";

akkor ez a 655. indexen lesz. A szögletes zárójelben lévő számot indexnek nevezünk!

Teljesen pontosan tömb indexnek. A tömb készítésekor is lehet értékeket adni a tömbnek.





CODE
<?php

$tomb = array("0", "1", "3"); //ugyan az, mint az előző példa

?>
Gyakori hiba, ezt kerüljétek el:





CODE
<?php

$valtozo[] = "valami";

//ez helytelen, így helyes:

$tomb = array();

$tomb[] = "valami";

?>
Tehát először hozzuk létre a tömböt, csak utána alkalmazzuk a szögletes zárójeleket!





Műveletek tömbökkel





Mi van akkor például, hogyha "össze-vissza írogattunk" a tömbben, és ki akarjuk

íratni egy lapon a bizonyos tömb összes indexén lévő értékeket?

Bizony, nem tudjuk hányadik az utolsó elem, ezért cselhez kell folyamodnunk

Van egy függvény, (következő órában a függvényekről többet is beszélünk ) amellyel ez megoldható.

Ez nem más, mint a foreach()

Próbáljuk is ki:





CODE
<?php

$tomb = array("0", "1");

$tomb[654] = "2"; //ajjaj

foreach($tomb as $ideiglenes_valtozo) {

print $ideiglenes_valtozo;

}

//és voilá, kiírta: 012

?>
Ez a függvény így működik, lépésről lépésre: (ez csak az érthetőség kedvéért, nem biztos hogy így működik, sőt...)

1, Ellenőrzi a megadott változót hogy tömb-e. ($tomb)

2, Az első elemtől kezdve, az utolsóig, mindegy melyik indexen van, átrendezi ideiglenesen

3, Miután megvan sorban az összes, lementi az első elem értékét az ideiglenes változóba ($ideiglenes_valtozo).

4, Amint lefutott a kapcsos zárójelek (ezek --> { } <-- ezek) között lévő kódrész,

újra lefuttatja, ha még van elem a listában, de most már a következő elem kerül az

ideiglenes változóba ($igeiglenes_valtozo). Ezt az utolsó elemig újra meg újra végigzongorázza.

5, Az utolsó elem után visszaállítja a régi sorrendbe a tömböt. ($tomb)





Beléptető rendszer példa





És amit ígértem

Egy (azaz 1) felhasználós login rendszer:



{belepes.html}





CODE
<form action="belepteto.php" method="post">

Felhasználónév: <input type="text" name="username">


Jelszó: <input type="pass" name="password">



<input type="submit" value="Belépés">

</form>
{belepteto.php}



CODE
<?php

if(isset($_POST['username']) && isset($_POST['password']) && strlen($_POST['username']) > 1 && strlen($_POST['password']) > 1) {

$kuldottnev = $_POST['username'];

$kuldottjelszo = $_POST['password'];

}

else {

print "Adj meg minden adatot!

A mezők értékének nagyobbnak kell lennie 1-nél! (minimum 2)";

exit;

}

$helyesnev = "HardRat";

$helyesjelszo = "123456";

if($kuldottnev == $helyesnev && $kuldottjelszo == $helyesjelszo) {

print "Üdvözöllek ".$helyesnev."!";

}

else {

print "Hibás adatok!
<a href='belepes.html'>Vissza!</a>";

exit;

}

?>
Itt a vége

Üdvözlök minden kedves tanulni vágyót itt, a 4. részben



Akkor lássuk a mai programot:



1; Egy (azaz 1) felhasználós beléptető rendszer elemzése

2; Műveletek fájlokkal (készítés, törlés, írás, másolás, és létezés ellenőrzése)

3; Több felhasználós beléptető rendszer fájlokkal (nem túl helytakarékos alternatíva)





Egy (1) felhasználós beléptető rendszer elemzése





Az előző tutorialban írtam nektek egy egyszerű beléptető rendszert.

Ezt fogjuk most elemezni részletesen! Kezdjük is...



{belepes.html}

Ezt nem kívánom részletezni, PHP-t tanítok, nem HTML-t!



{belepteto.php}





CODE
<?php

if(isset($_POST['username']) && isset($_POST['password']) && strlen($_POST['username']) > 1 && strlen($_POST['password']) > 1) {

//egy jó hosszú feltételes függvény lemagyarítva:

//ha(létezik($_ŰRLAPPALKÜLDÖTT['inputneve']) ÉS létezik(...) ÉS változó_értékének_hossza(változó) nagyobb mint 1 ÉS ...)

//ha nem érthető EZ a sor, akkor kérjétek, elmagyarázom, ez tényleg bonyolult, nem szégyen

$kuldottnev = $_POST['username']; //változó értékadás, hogy rövidebben is elérjük

$kuldottjelszo = $_POST['password']; //detto

//az űrlappal küldött, POST móddal (method="post") küldött adatokat

//így érhetjük el: $_POST['username'] <- így pl. a felhasználónevet érjük el.

//értelemszerűen ha GET móddal küldjük, akkor $_GET['username'], de erről később

}

else {

print "Adj meg minden adatot!
A mezők értékének nagyobbnak kell lennie 1-nél! (minimum 2)";

exit;

}

$helyesnev = "HardRat"; //...a helyes név

$helyesjelszo = "123456"; //vajon mi?

if($kuldottnev == $helyesnev && $kuldottjelszo == $helyesjelszo) {

//itt már észrevehető, milyen jó, hogy sokatmondóak a változók nevei, nemde?

//ha(küldöttnév megeggyezik a helyesnévvel ÉS küldöttjeszó megeggyezik a helyesjelszóval)

print "Üdvözöllek ".$helyesnev."!";

//ide még jöhet sok marhaság, ha belépett

}

else {

print "Hibás adatok!
<a href='belepes.html'>Vissza!</a>";

exit;

//az exit-tel leállítjuk a program futását. egyenértékű a

//böngészőben található "Oldal letöltésének megszakítása" gombbal (többnyire vörös X)

}

?>
Ha nem érthető valami, akkor írjatok a fórumba, mindent elmagyarázok.





Műveletek fájlokkal (készítés, törlés, írás, másolás, létezés ellenőrzése)





Ez egy nagyon hasznos dolog! A többfelhasználós beléptető rendszerünk is

fájlok használatával fog működni, mivel még nem ismerjük az adatbázisokat...

Nah, csapjunk a lecsóba, kezdjük a függvényekkel:





CODE
<?php

touch("eleresiutvonal/fajlneve.kiterjesztes"); //fájl készítése

//például: touch("users/hardrat.php");



$fajl_azonosito = fopen("eleresiutvonal/fajlneve.kiterjesztes", "w"); //fájl megnyitása

//például: $f = fopen("users/hardrat.php", "w");

//az első paraméter a fájl elérési útja, a második hogy mit csinálunk a fájllal

//ha w-t írunk, akkor töröljük az eddigi tartalmát, és megírjuk az újat (felülírjuk) (write)

//ha r-t írunk, akkor olvasunk a fájlból (ezt majd később, egyelőre csak írunk) (read)

//ha a-t írunk, akkor meghagyjuk az eddigi tartalmat, és hozzáírunk a meglévőhöz (add)



fwrite($fajl_azonosito, "Valami tartalom\nA vissza per és egy n betű új sor karaktert jelent!\n"); //fájlba írás

//ez szerintem elég egyértelmű ahhoz, hogy megértsétek

//ha w-t írtunk az fopen második paraméterébe, akkor az előző tartalom eltűnik

//viszont ha a-t írtunk, akkor nem árt az új sor karakter a tartalom elejére se, hogy ne folyjon össze



fclose($fajl_azonosito); //fájl bezárása, nem szorul magyarázatra



if(file_exists("eleresiutvonal/fajlneve.kiterjesztes")) { //fájl létezésének ellenőrzése

print "a fájl létezik";

}

else {

print "a fájl nem létezik";

}

//ha(létezik_ez_a_fájl("afájl.kiterjesztés"))

//például: if(file_exists("users/hardrat.php")) {



unlink("eleresiutvonal/fajlneve.kiterjesztes"); //fájl törlése

?>
Mint már megszokhattátok, ha valamit nem értetek, csak kérdezzetek





Több felhasználós beléptető rendszer fájlokkal (nem túl helytakarékos)





Ez...ez kérem szépen, már sokkal dinamikusabb. Ebben a verzióban mindenki szabadon regisztrálhat.

Lássunk is hozzá! (a HTML-eket nem vagyok hajlandó kommentelni)



{fooldal.html}





CODE
<center><h1>HardRat lapja</h1>


<a href="reg.html">Regisztráció</a> | <a href="login.html">Belépés</a> | Egyéb menük...</center>
{reg.html}





CODE
<center><h1>HardRat lapja</h1>


<form action="regisztracio.php" method="post">

Felhasználónév: <input type="text" name="user">



Jelszó: <input type="password" name="pass">


</form></center>
{login.html}





CODE
<center><h1>HardRat lapja</h1>


<form action="belepes.php" method="post">

Felhasználónév: <input type="text" name="user">



Jelszó: <input type="password" name="pass">


</form></center>
{regisztracio.php}





CODE
<?php

if(isset($_POST['username']) && isset($_POST['password']) && strlen($_POST['username']) > 1 && strlen($_POST['password']) > 1) { //lsd. 1 felhasználós beléptető rendszer

$kuldottnev = $_POST['username'];

$kuldottjelszo = $_POST['password'];

//ezeket már megbeszéltük az 1 felhasználós beléptető rendszernél (továbbiakban 1f.b.r.)

}

else {

print "Adj meg minden adatot!
A mezők értékének nagyobbnak kell lennie 1-nél! (minimum 2)";

}

if(file_exists("users/".$kuldottnev.".php")) { //fájlok tutorial (továbbiakban f.t.)

print "Már használja valaki ezt a nevet!";

exit;

}

else {

}

touch("users/".$kuldottnev.".php"); //f.t.

$f = fopen("users/".$kuldottnev.".php", "w"); //f.t.

$tartalom = '<?php $anev = "'.$kuldottnev.'"; $ajelszo = "'.$kuldottjelszo.'"; ?>';

//tartalom amit beírunk a fájlba, amit készítettünk

fwrite($f, $tartalom); //f.t.

fclose($f); //bezárjuk a fájlt

print "Regisztráció sikeres!
Itt beléphetsz!";

?>
{belepes.php}





CODE
<?php

if(isset($_POST['username']) && isset($_POST['password']) && strlen($_POST['username']) > 1 && strlen($_POST['password']) > 1) {

//1f.b.r.

$kuldottnev = $_POST['username'];

$kuldottjelszo = $_POST['password'];

}

else {

print "Adj meg minden adatot!

A mezők értékének nagyobbnak kell lennie 1-nél! (minimum 2)";

}

if(file_exists("users/".$kuldottnev.".php")) { //f.t.

}

else {

print "Hibás adatok!

Ilyen felhasználó nem létezik!";

exit;

}

include("users/".$kuldottnev.".php"); //az include()-dal fájlokat futtathatunk le, majd miután lefutott

//folytatjuk a jelenlegi program futását. Példa később!

if($anev == $kuldottnev && $ajelszo == $kuldottjelszo) { //$anev és $ajelszo a fájlból vannak

print "Sikeresen beléptél, üdvözöllek ".$anev."!";

}

else {

print "Hibás adatok!";

exit;

}

?>
Volt a kódban egy olyan függvény, hogy include().

Leírom, hogy hogyan működik:



{inc.php}





CODE
<?php

$fa = "af";

?>
{inc2.php}





CODE
<?php

print "inc2.php behívva!";

?>
{inc3.php}





CODE
<?php

include("inc.php");

print "Alm".$fa."a"; //kiírja: Almafa

include("inc2.php");

//kiíródik: inc2.php behívva

?>
Ez a többfelhasználós beléptető rendszer tökéletesen alkalmas a fájlok kezelésének gyakorlására,

de azon felül SEMMI MÁSRA! Így ezúton is kérek mindenkit, ne használja olyan oldalon/oldallal,

ami számára fontos.



Köszönöm, hogy elolvastad

Üdvözlök mindenkit itt, az 5. részben



Akkor lássuk mi vár ránk:

1; Sütik kezelése (készítés, használat, törlés)

2; Az állandók

3; Átlátható kód írása

4; MySQL - Az alapok (no-elmélet)





Sütik kezelése (készítés, használat, törlés)





Mi az a süti? Egy kis adattároló, de ha úgy jobban megérted, akkor változó,

méghozzá olyan, ami a böngészőben van, mint egy fájl a gépen.





CODE
<?php

setcookie("nev", "érték", time()+3600, "/");

//ezt a sütit létre is hozta, most készítsünk másikat!

setcookie("user", "hardrat", time()+3600, "/");

//ez is elkészült, most irassuk ki!

print "Üdvözöllek ".$_COOKIE['user']."!";

//most próbáljunk meg újabb sütit készíteni!

setcookie("proba", "próba", time()+3600, "/");

//ez már nem fog létrejönni, csak egy hibaüzenetet kapunk

?>
Mint azt látjátok, meglévő sütiket így érhetünk el: $_COOKIE['sütineve']

Viszont miután kiírtunk valamit, már nem készíthetünk sütiket.

Persze süti készítés után még készíthetünk többet...

A setcookie() 2 paramétert vár, de megadhatunk 4-et is.

setcookie("sütineve", "sütiértéke", time()+3600, "/");

time() az a jelenlegi idő. Így ha 1 óráig akarjuk megtartatni a sütit,

akkor hozzá kell adnunk a jelenlegi időhöz 1 órát.

Mivel másodpercben számol, ezért 3600-at kell írnunk

A harmadik egy elérési útvonal, de ez teljesen lényegtelen,

én azért mégiscsak be szoktam állítani egy / jellel. (gyökér könyvtár)

A süti értékét úgy lehet megváltoztatni, ha újra létrehozzuk más értékkel.

Törölni pedig úgy, ha a lejárati idejét a múltba tesszük ( time()-1 )





Az állandók





A változókat már ismerjük, a különbség a kettő között kiolvasható a nevükből



Egy példa:





CODE
<?php

define("NEV", "érték");

//define(), a jól ismert definiálás szóból ered

//az első paraméter az állandó neve, szokás szerint ékezetek nélkül, csupa nagybetűvel írandó.

//a második paraméter az érték, ez bármi lehet

print NEV; //igen, jól látjátok, ki lehet próbálni

?>
Ennyit kell róla tudni, vagyis szinte semmit

Legtöbb esetben úgyis a változókat használjuk rugalmasságuk miatt,

az állandókat csak nagyon ritkán vesszük elő





Átlátható kód írása





Egy idő után eltévedhetünk a sok } és { között, így nem árt,

ha rendben tartjuk a kódjainkat, hogy átláthassuk.

Mutatok egy példát:





CODE
<?php

$s = true;

print "xyz";

if($s) {

print "xyz";

if($s) {

   print "xyz";

   print "xyz";

}

else {

   print "xyz";

}

}

else {

print "xyz";

}

switch($s) {

case "false":

   print "xyz";

break;

case "true":

   print "xyz";

break;

default:

   print "xyz";

   if($s) {

   print "xyz";

   }

   else {

   print "xyz";

   }

break;

}

?>
A switch függvényről később olvashattok.



Tehát a függvényeknél mindig kettő szóközzel beljebb "kell" kezdeni.

Ezt az eltolást indent-ként olvashatod például az EditPlus-ban is.

Az indent mértékét te választhatod meg, lehet akár 5 szóköz is, vagy csupán 1.

Ez rövid kódoknál nem kötelező...de lesznek majd hosszú kódjaink is





MySQL - Az alapok (no-elmélet)





MySQL, bizony.

Mysql adatbázis használatához vagy saját szervereden (gépeden),

vagy egy mysql-t támogató ingyenes tárhelyszolgáltatón kell próbálkoznod.



A mysql-el tudunk majd csinálni sok jó dolgot.

Adatbázis nélkül ez a fórum se létezne.

Először is, csatlakozzunk egy képzeletbeli adatbázishoz:





CODE
<?php

$conn = mysql_connect("hoszt, pl. localhost", "felhasználónév", "jelszó");

//a változóval érhetjük el későbbiekben a kapcsolatot

mysql_select_db("adatbázis neve, amihez csatlakozunk", $conn);

//fontos a sorrend, ha elrontod, úgyis észre fogod venni

?>
Amint ez megvan, és nem írt ki hibaüzenetet, máris kapcsolódtunk

Ha parancsot akarunk lefuttatni, akkor a mysql_query() függvényt

kell használnunk. Szerencsére könnyen megtanulható a mysql nyelve is.

Előnyben az angol tudással rendelkezők.



Akkor jöjjön is a tutorial utolsó kód blokkja:





CODE
<?php

include("mysql.php"); //ez a fájl tartalmazza a kapcsolódást, az átláthatóság kedvéért

//példa parancs: mysql_query("parancs", $conn);

mysql_query("SELECT * FROM tablaneve"); //a második paraméter elhagyható

?>
A parancsokat nagybetűvel kell/szokás írni

Parancsok például: INSERT INTO, SELECT, FROM, WHERE, AND...és ez csak a töredéke.

A *-al azt fejezzük ki itt, hogy a táblából az összes elemet nézzük.

Tehát magyarítva:

SELECT * FROM tablaneve = VÁLASZD *mindet* EBBŐL A TÁBLÁBÓL: tablaneve

Ha szűkíteni akarjuk a kört, akkor jön majd a WHERE parancs, de erről majd később



Legyetek jók

A mai napi program:



1, Objektumok

2, HTTP-s beléptetés





Objektum-orientált programozás PHP-ban





Először is, egy kis elmélet.

Az objektumot legkönnyebben úgy lehet elképzelni a kezdetben, mint egy iskolai osztályt.

Képzeld el, hogy van egy osztályod, amiben van 2 tanuló.

Mind a 2 tanulónak más a neve, más tantárgy a kedvence stb.



Ezek az osztályok, ha úgy tetszik, sablonok.

Amikor létrehozunk egy objektumot, akkor azt egy osztály alapján tesszük.

Az osztályokban változók, és függvények lehetnek. Az osztályon belüli

függvényeket metódusoknak nevezzük. Lássunk egy példát az osztályról:





CODE
<?php

class osztaly {

var $nev;

var $tantargy;

function nevcsere($ujnev) {

   $this->nev = $ujnev;

}

function tantargycsere($ujtantargy) {

   $this->tantargy = $ujtantargy;

}

}

$tanulo1 = new osztaly;

$tanulo2 = new osztaly;

$tanulo1->nevcsere("HardRat");

$tanulo2->nevcsere("nemHardRat");

$tanulo1->tantargycsere("alvás");

$tanulo2->tantargycsere("fedettpályás távolba nézés");

?>
Nos, mint láthatjátok, egy osztályt a class függvénnyel lehet létrehozni,

mégpedig így: class osztaly_neve {

Az osztály neve semmiképpen nem lehet stdClass, mert ezt lefoglalja a PHP.

(Ezt csak úgy találtam valahol )

Változót ezúttal a var kulcsszóval lehet csak létrehozni. (var $nev

Az osztályra belülről a $this-el lehet hivatkozni.

Tehát amikor azt írjuk hogy $this->nev,

akkor a $this helyére bekerül a $tanulo1, vagy $tanulo2 jelen esetben.

No de jól van ez így?! $this->nev??? Nem kell dollárjel? Nem, nem kell

Gondolj bele, ha azt írnád hogy $this->$nev, akkor a $nev változó értékét írná be.

Persze ha ragaszkodsz hozzá lehet ilyet csinálni:





CODE
<?php

$valtozo = "nev";

$tanulo1->$valtozo;

?>
De ez csak bonyolítás bonyolítás hátán.

Fontos, hogy -> jelet használjunk, ne => jelet, az majd az asszociatív tömböknél fog kelleni

(Vegyük észre, hogy összehasonlításnál, az operátorok hasonló jeleket kaptak!

Például a kisebb-vagy-egyenlő: <=)

Ok, de mi van akkor, ha mi azt akarjuk, hogy alapból legyen egy nevük?

Ekkor jönnek képbe a konstruktorok. Ezek is függvények, de ekkor

a metódus neve megegyezik az osztály nevével. Így lesz konstruktor.

Példa:





CODE
<?php

class osztaly {

var $nev;

function osztaly() {

   $this->nev = "Gipsz Jakab";

}

}

$jakab = new osztaly;

print $jakab->nev; //Gipsz Jakab

?>
Mint láthatjátok, ugyanúgy ahogy elértünk, ki is írathatunk egy változót,

de a legfontosabb, hogy ez bizonyítja, hogy működik a konstruktor!

Na de mi van akkor, ha jön az osztályba egy gyerek, aki gazdag?

És például új változót kell neki adni? Nem írhatjuk újra az egész osztályt.

Hiszen a másik kettő csóró Ekkor jön a "szülő-gyermek" kapcsolat.

Mármint az osztályoknál Származtatni kell egy osztályt.





CODE
<?php

/*

már létrehoztuk az osztaly osztályt.

*/

class gazdag extends osztaly {

var $penz;

function shoppingol() {

   $this->penz = $this->penz - 500;

}

function lejmol() {

   //a szülőktöl

   $this->penz = $this->penz + 1000;

}

}

$hugo = new gazdag;

$hugo->ujnev("Weismann Hugó"); //

$hugo->lejmol();

$hugo->shoppingol();

print $hugo->penz; //500

?>
Mint láthatjuk, a "gazdag" osztályban használhatóak továbbra is

az "osztaly" metódusai, és megtalálhatóak benne a régi változók is.

FONTOS: az osztályokat származtatási sorrendben kell létrehozni!

Jelen esetben előbb az osztaly osztályt, utána a gazdag osztályt.



De egy kicsit vissza a konstruktorokhoz!

Nagyon el lehet bennük kavarodni. Lássuk a példát:





CODE
<?php

class A {

function A() {

   print "Én vagy az A osztály konstruktora.";

}

function B() {

   print "Én egy B nevű metódus vagyok.";

}

}

$elso = new A; //lejátszódik az A fügvény.

class B extends A {

function C() {

   print "Én egy C nevű metódus vagyok";

}

}

$masodik = new B; //lejátszódik a B fügvény

?>
Röviden a lényeg:

Ha készítünk 2 osztályt, amik szülő-gyermek kapcsolatba kerülnek,

akkor ha készítünk egy objektumot a gyermek osztályból, akkor annak

a konstruktora hívódik meg. Ugyan ez érthető a szülő osztályra.

Viszont ha a gyermek osztálynak nincs konstruktora, ellenőrzi

a szülő osztályban is. Ha ott sincs, nem csinál semmit, de ha van,

akkor azt használja a gyermek osztály konstruktornak.



Néha véletlenül a származtatott (gyermek) osztályban létrehozhatunk

olyan metódust, amilyen nevű már létezik a szülő osztályban.

Ekkor felül lesz írva az eredeti. Azonban még mindig el lehet érni az

eredetit a :: operátorral. Ezt mutatja be a következő példa:





CODE
<?php

class A {

function pelda() {

   print "Én az eredeti pelda() metódus vagyok.";

}

}

class B extends A {

function pelda() {

   print "Én a felülíró pelda() metódus vagyok.";

   A::pelda();

}

}

A::pelda(); //kiírja: Én az eredeti pelda() metódus vagyok.

$gyermek = new B;

$b->pelda();

//kiírja:

//Én a felülíró pelda() metódus vagyok.

//Én az eredeti pelda() metódus vagyok.

?>
De ennek ellenére azért vigyázzunk Továbbiakban ::-al jelölöm hogy

melyik osztálybeli metódusra gondolok, a félreértések elkerülése végett



Nos, van egy parent kulcsszó, amivel helyettesíthetjük a szülő

osztály nevét, így ha megváltoztatjuk a kódot, csak egy helyen kell átírni. Példa:





CODE
<?php

class A {

function pelda() {

   print "A::pelda";

}

}

class B extends A {

function pelda() {

   print "B::pelda";

   parent::pelda();

}

}

$b = new B;

$b->pelda();

//kiírja:

//A::pelda

//B::pelda

?>
HTTP-s beléptető rendszer





Gondolom már ismeritek, de ha nem, akkor a PHPMyAdmin-ban találkozhattok vele.

Természetesen máshol is alkalmazzák, nem csak ott. Ma ennek a használatát

tanuljuk meg, remélem hasznos lesz, vagy legalább érdekes. Példa:





CODE
<?php

if(!isset($PHP_AUTH_USER)) {

header("WWW-Authenticate: Basic realm=\"Azonosítás indoka\"");

header("HTTP/1.0 401 Unauthorized");

print "Ez jelenik meg, ha a Cancel gombot nyomják meg.";

exit;

}

else {

print "Helló ".$PHP_AUTH_USER.".
";

print "A megadott jelszavad: ".$PHP_AUTH_PW.".";

}

?>
Na de ennek nincs semmi értelme, viszont ha egy

kicsit átírjuk, már sokkal használhatóbb lesz:





CODE
<?php

if(isset($_COOKIE['authorized']) && $_COOKIE['authorized'] == true) {

print "Hello HardRat!";

}

else {

if(!isset($PHP_AUTH_USER)) {

   header("WWW-Authenticate: Basic realm=\"Azonosítás indoka\"");

   header("HTTP/1.0 401 Unauthorized");

   print "Ez jelenik meg, ha a Cancel gombot nyomják meg.";

   exit;

}

else {

   if($PHP_AUTH_USER == "HardRat" && $PHP_AUTH_PW == "123456") {

   setcookie("authorized", true);

   print "Helló HardRat!";

   }

   else {

   print "Hibás adatok!";

   }

}

}

?>
És így meg is van a HTTP-s beléptető rendszerünk



Remélem sokat tanultatok ma is!

Új tömbökkel, és új tulajdonságokkal ismerkedünk meg, és megtanulunk saját függvényeket készíteni.



1; Tömbök - Több-dimenziós tömbök

2; Tömbök - Asszociatív tömbök

3; Változók manipulálása

4; Saját függvények készítése





Tömbök - Több-dimenziós tömbök





Ismét tömbök, de most új kiszerelésben

Emlékeztek, hogy van a tömböknek indexük? Indexük, amit számmal adunk meg.

Nos, képzeljétek el, hogy ebből az indexből mondjuk 2 van.

$tomb[0][2] - bonyolultnak tűnik igaz? Nem?? Ez a beszéd

Példa:





CODE
<?php

$tomb = array(); //FONTOS! Ezt el ne felejtsétek!

$tomb[] = array(); //mi?!

$tomb[0][] = array(); //nah...

$tomb[0][0][] = "almafa";

print $tomb[0][0][0]; //almafa

?>
Ugye mindenki szereti az almát? Mert én utálom...

De nem baj, ez a "standard oktató duma"

Mint láthatjuk, egy tömbelem is lehet tömb!

Ez egy kicsit megbonyolítja a dolgunk, de gondoljunk csak bele,

micsoda lehetőségek rejlenek benne! Példa:





CODE
<?php

$karakterek = array();

$karakterek[] = array();

$karakterek[0][] = "bástya";

$karakterek[0][] = "huszár";

$karakterek[0][] = "futó";

?>
Sakk táblát is ki lehet belőle rakni. Mondjuk nem tudom mi értelme van...

De a lényeg, hogy értitek, hogy ezzel sok adatot lehet tárolni, ráadásul rendezetten.

És mind ez EGY változóban! Ami pontosabban egy tömb...

Sőt, mivel már tanultuk, még pontosabban egy több-dimenziós tömb!



Na ok, de a "sima" (egy dimenziós) tömböket be tudtuk járni a foreach() függvénnyel,

ezeket nem lehet? De, lehet, csak kicsit bonyolultabb. De nem sokkal!





CODE
<?php

$karakterek = array();

$karakterek[] = array();

$karakterek[0][] = "bástya";

$karakterek[0][] = "huszár";

$karakterek[0][] = "futó";

foreach($karakterek as $x) {

foreach($x as $y) {

   print "Bábu: ".$y."
";

}

}

//ki lesznek listázva a bábuk egymás alatt.

?>
Tömbök - Asszociatív tömbök





Ha úgy gondoltátok, hogy a több-dimenziós tömb érdekes, ezt imádni fogjátok!

Eddig volt egy indexünk, igaz? Mi volt az index? Egy szám. Akkor most legyen egy karakterlánc!

Példa:





CODE
<?php

$asszoc = array("nev" => "HardRat", "eletkor" => 3);

print $asszoc["nev"]; //az idézőjelek! el ne felejtsétek!

?>
Klassz mi? Most újraértelmezhetjük a karakteres megoldást!





CODE
<?php

$karakterek = array(); //a NAGY tömb

$karakterek[] = array(); //1. karakter

$karakterek[] = array(); //2. karakter

$karakterek[0] = array("nev" => "HardRat", "eletkor" => 3);

$karakterek[1] = array("nev" => "Babinéni", "eletkor" => 71);

print $karakterek[1]["nev"]; //Babinéni

?>
De EZT vajon hogyan kell körbejárni? Ezt nagyon bonyolult lehet...

Na jó, inkább mutatok egy példát, nem dramatizálok többet





CODE
<?php

$karakterek = array(); //a NAGY tömb

$karakterek[] = array(); //1. karakter

$karakterek[] = array(); //2. karakter

$karakterek[0] = array("nev" => "HardRat", "eletkor" => 3);

$karakterek[1] = array("nev" => "Babinéni", "eletkor" => 71);

foreach($karakterek as $x) {

foreach($x as $kulcs => $ertek) {

   print $kulcs.": ".$ertek."
";

}

print "
";

}

/* kiírja:

nev: HardRat

eletkor: 3



nev: Babinéni

eletkor: 71 */

?>
Vegyük észre a kód végén található megjegyzést.

A /* és */ operátorokkal többsoros kommenteket csinálhatunk.

A /*-től kezdődően semmi nem fut le a következő */-ig.





Változók manipulálása







CODE
<?php

$x = "jaj";

$y = $x;

print $x."
"; //jaj

print $y."

"; //jaj

$x = "ohh";

print $x."
"; //ohh

print $y; //jaj

//hmm...

?>
A probléma adott, a megoldás...hivatkozás.

Ebben az esetben hivatkozni kell a másik változóra az ampersand (&) karakterrel. (Alt Gr + c)





CODE
<?php

$x = "jaj";

$y = &$x; //hivatkozunk!

print $x."
"; //jaj

print $y."

"; //jaj

$x = "ohh";

print $x."
"; //ohh

print $y; //ohh

?>
Egy változó lehet akármilyen hosszú. Tegyük fel,

hogy egy űrlappal elküldi valaki a nevét. DE az illető, aki küldi

nem éppen a barátunk, és beír több ezer karaktert.



Tehát a téma: "Változó hosszának kiderítése".

Példa:





CODE
<?php

$vajonmennyi = "yxyxyxyxyxyx";

$szam = strlen($vajonmennyi);

print $szam;

//vagy egyszerűen print strlen($vajonmennyi);

?>
A kapott számból pedig már könnyedén le tudjuk blokkolni az érkező adatot:





CODE
<?php

if(strlen($kapottAdat) >= 10) { //ha az adat hossza nagyobb-vagy-egyenlő mint 10

print "Túl hosszú!";

}

else {

//semmit sem csinál...

}

?>
Ebben az esetben elhagyhattuk volna az else { ágát a feltételnek, úgy is lefut.

Például ha ki akarjuk írni, hogy "hideg", ha a $homerseklet kisebb mint 10, akkor is

elég egy if($homerseklet < 10) print "hideg";

Amit most írtam, az a végletekig leegyszerűsített módja az if() feltételnek.

A kapcsos zárójelek is elhagyhatóak, ha a feltétel után csak 1 utasítás van, csak ne kavarodjunk bele!



A felhasználó által szolgáltatott adatokat mindig ellenőriznünk kell használat előtt,

nem lehetünk elég óvatosak sose, sok a hacker, és a "hacker"





Saját függvények készítése



Nem akarok senkit traktálni az elmélettel...azt majd a végén, mert

azt is muszáj, ugyanis van pár szabály :S

Példa:





CODE
<?php

function aParameterNelkuliFuggvenyem() {

print "Meghívtad az aParam... tudod mikor írom le újra ";

}

function aParameteresFuggvenyem($parameter) {

print "A megadott paraméter: ".$parameter."!
";

print "A megadott paraméter: ".$parameter; //felkiáltó jel nélkül

}

aParameterNelkuliFuggvenyem(); //kiírja, amit ki kell hogy írjon

aParameteresFuggvenyem("Zom-B"); //működik!...

?>
Nos, mint láthatjuk (ha kipróbáltuk...) működik rendesen, ahogy kell.

Előfordulhat az is, hogy mi nem akarunk kiírni a függvényünkkel

semmit, csak egy változót akarunk vele készíteni...például

összeadni kettő számot, amit paraméterben megadunk. Példa:





CODE
<?php

function osszead($x, $y) {

$eredmeny = $x+$x;

}

osszead(2, 3);

print $eredmeny; //SEMMIT NEM ÍR KI?!

?>
De nem ám, nem ír ki semmit. Méghozzá azért, mert a függvényeken

belül létrehozott változókhoz nincs hozzáférésünk. Erre találták ki

a return függvényt. Ezzel visszatérési értéket adhatunk meg a függvényünknek.

Példa:





CODE
<?php

function osszead($x, $y) {

$z = $x+$y;

return $z;

//vagy egyszerűen: return $x+$y;

}

print osszead(2, 3); //kiírja: 5

$eredmeny = osszead(2, 3); //értékadás

print $eredmeny; //kiírja: 5

?>
Ácsi, ez 55-öt ír ki...de miért? Hát mert nincs sortörés! Igazából két 5-öst ír,

de mivel egy sorba írja, a kezdő programozó okkal hiheti, hogy valamit elrontott.

Na és mi van akkor, hogyha nagyon bénák vagyunk, vagy csak annyi adatot

akarunk átadni a függvényünknek, hogy abba belerokkannánk?

Ekkor a global függvény, ami segítségünkre siet.

Példa:





CODE
<?php

$fontosAdat = "23";

function jaj() {

global $fontosAdat;

$megFontosabbAdat = $fontosAdat + 9;

return $megFontosabbAdat;

}

print jaj(); //32

?>
Jóleső vigyorral távozhattok, ugyanis ISMÉT TANULTATOK VALAMIT!

         

Hello mindenki!

Ebben a tutorialban a ciklusokat tanuljuk, és veszünk egy kis a mysql-t is.



Tartalom:

1; Ciklusok

2; MySQL - Elmélet + Csatlakozás

3; MySQL - Tábla infrastruktúra





Ciklusok



Példa:





CODE
<?php

$szam = "5";

$szamlalo = "1";

while($szam > $szamlalo) {

print $szamlalo.", ";

$szamlalo++;

}

print "5"; //elhagyhattam volna az idézőjeleket

?>
A kód kimenete: 1, 2, 3, 4, 5

Vegyük észre, hogy az 5-öst már a cikluson kívül írtam hozzá!

Működése:





CODE
<?php

$szam = "5"; //a számunk 5

$szamlalo = "1"; //ez a számlálónk, aminek értéke 1

while($szam > $szamlalo) {

//amíg $szam nagyobb mint $szamlalo, addig lefut a kapcsos zárójelben a kód

print $szamlalo.", "; //kiírja a $szamlalo jelenlegi értékét, és mellé egy vesszőt, és szóközt

$szamlalo++; //megnöveli a $szamlalo értékét 1-el. Írhattuk volna ezt is:

//$szamlalo = $szamlalo+1;

}

/*

amire vége a ciklusnak, a számláló értéke pontosan 5,

mivel a ciklus csak addig fut le, AMÍG a $szam (5) NAGYOBB mint a $szamlalo (5)

de jelen esetünkben egyenlőek, ezért nem fut le újra

*/

print 5; //a kiírt adatunk eddig az volt, hogy: "1, 2, 3, 4, "

//de most kiírtunk egy 5-öst, és mostmár "1, 2, 3, 4, 5"

//persze idézőjelek nélkül...

?>
Való életbeli példa:





CODE
start



csoki ára: 10ft

pénzem: 100ft

csokijaim: 0

AMÍG pénzem nagyobb-vagy-egyenlő mint a csoki ára {

csokiaim = csokiaim+1;

pénzem = pénzem-csoki ára;

}

print csokijaim; (10)



vége
Ha valamit nem értetek, szóljatok!



Nos ez volt a while (amíg) függvény, de ennél külön létre kell hozni

egy számlálót, azt a ciklusban növelni kell stb.

Erre találták ki a for() függvényt, amivel mindezt egy sorban megtehetjük.





CODE
<?php

$szam = 5;

for($szamlalo = 1; $szam >= $szamlalo; $szamlalo++) {

print $szamlalo."
";

}

?>
A fenti kód kiírja a számokat 1-től 5-ig, mindet új sorban.

Vegyük észre, hogy míg az előző példában ($szam > $szamlalo) volt a feltétel,

ebben a példában már ($szam >= $szamlalo)!

A működése:





CODE
<?php

$szam = 5; //a számunk 5

for($szamlalo = 1; $szam >= $szamlalo; $szamlalo++) {

/*

a for()-ban;-vel választjuk el a 3 kifejezést

az első a számláló létrehozása, a második az egy összehasonlítás,

ami alapján eldönti a for, hogy lefut-e a ciklus. a harmadik pedig

az a kód, ami lefut a ciklus végén (számláló növelése)

*/

print $szamlalo."
"; //kiírja a $szamlalo értékét, és egy új sort

}

?>
Látható a különbség? Na ugye

És most...MySQL!





MySQL - Elmélet + Csatlakozás





Először is: MySQL = My Structured Query Language

Az adatbázisokat úgy képzelhetitek el, mint egy nagy változó raktárat.

Ebből a "változó raktárból" adatokat lehet kiolvasni, és beírni.

Ezeknek a változóknak, amiket az adatbázis tárol, kell hogy legyen egy sablonja.

Ezt a sablont hívjuk táblának. Ezek olyanok mint az osztályok.

Tegyük fel, van egy sablonunk, ez:



Név, Jelszó



Így, ha új adatot szúrunk be, akkor az adat lehet egy név, vagy egy jelszó.

Viszont ha a sablonba bekerül egy "Email cím" nevű adat, akkor olyan

értéket is beszúrhatunk. A táblákat viszont adatbázisokba kell rakni.

Már majdnem minden ingyenes tárhely támogatja a mysql-t.

Amikor regisztrálsz egy ilyen tárhely szolgáltatónál, akkor kapsz egy

adatbázist, aminek a neve megegyezik a regisztrációkor használt neveddel.

Tegyük fel, regisztráltunk egy ilyen helyen, és van egy adatbázisunk.

Csak tábla nélkül! Táblát készíthetünk a phpmyadmin segítségével, ami

egy olyan php alkalmazás, ami segítségével kezelni tudjuk a mysql-t.

Jó, most már van egy táblánk, de ki akarjuk íratni az egyik elemét, amit

beírtunk a táblába. Ilyenkor csatlakozni kell! Hát, tegyük azt!





CODE
<?php

$conn = mysql_connect("hoszt", "felhasználó név", "jelszó");

mysql_select_db("adatbázis neve", $conn);

?>
Hoszt: Ez legtöbbször localhost, de a tárhelyszolgáltató mindig megadja.

Felhasználó név: Regisztrációkor megadott neved.

Jelszó: A jelszó, amivel regisztráltál.

Adatbázis neve: Legtöbbször megegyezik a felhasználónévvel.



Csatlakoztunk, most nézzük, hogyan tudunk táblát létrehozni php-val.





MySQL - Tábla infrastruktúra





Először is, tudnunk kell, hogy hogyan tudunk parancsot végrehajtani!

A php-ban van egy ilyen beépített függvény, a mysql_query().

Persze van még jó pár mysql-hez kialakított függvény...de nekünk most ez kell.

Mi most feltételezzük, hogy van egy mysql.php fájlunk, ami tartalmazza

a kapcsolódást az adatbázishoz.





CODE
<php

include("mysql.php"); //kapcsolódtunk

mysql_query("CREATE TABLE felhasznalok (nev VARCHAR(20), jelszo VARCHAR(20))", $conn); //a $conn elhagyható

?>
Ok, tudom, ez így nem túl átlátható, nézzük rendezetten:



CREATE TABLE felhasznalok (

nev VARCHAR(20),

jelszo VARCHAR(20)

)



Ezzel meg is van az első táblánk.

Elemezzük ki!

CREATE TABLE - ez a parancs azt jelenti magyarul, hogy KÉSZÍTS TÁBLÁT.

felhasznalok - ez a tábla neve

nev VARCHAR(20) - ez azt jelenti, hogy a mező neve "nev", típusa VARCHAR, (variable characters)

vagyis bármilyen karakter lehet, de maximum 20! Ezt a VARCHAR()-ban lévő szám jelöli.

Nos, ennyi. A 9-es tutorialban megtanuljuk, hogyan kell adatot beszúrni, és kiolvasni!



Ha valamit nem értettetek kérdeztek!

Köszönöm hogy elolvastad

Üdv mindenki

A MySQL-t vesszük tovább:



Tartalom:

1; MySQL - Adatok beszúrása

2; MySQL - Adatok kiolvasása





MySQL - Adatok beszúrása







CODE
<?php

include("mysql.php"); //kapcsolat

mysql_query("INSERT INTO felhasznalok (`nev`, `jelszo`) VALUES ('hardrat', 'top secret')");

?>
INSERT INTO - SZÚRD BE IDE

felhasznalok - a tábla neve

(`nev`, `jelszo`) - a sablonban lévő oszlopok neve, ahova adatot szúrunk be

VALUES - ÉRTÉKEK

('hardrat', 'top secret') - ('az érték a nev oszlopba', 'az érték a jelszo oszlopba')



Remélem érthető, ha nem, szóljatok!

(Vegyük észre, hogy a mysql_query()-ből ismét elhagytam a $conn második paramétert!)



A (`nev`, `jelszo`)-ban nem sima ' jelek vannak, hanem ilyenek: `

Leírása: Alt Gr + 7

Nem tudom, hogy kötelező-e, én megszoktam, alkalmazom, tanítom





MySQL - Adatok kiolvasása





Van már adatunk, olvassuk ki!





CODE
<?php

include("mysql.php"); //kapcsolat

mysql_query("SELECT * FROM felhasznalok");

?>
SELECT - VÁLASZD

* - mindet (ide írhattunk volna egy listát azokról az oszlop nevekről, amelyeket olvasni akarunk!)

FROM - INNEN

felhasznalok - a tábla neve



Ezzel kiválasztottuk az ÖSSZES bejegyzett sort a felhasznalok táblából,

és annak az összes bejegyzett sornak is az összes oszlopát.

De mi van akkor, ha mi csak a hardrat nevű felhasználót keressük?

Akkor szűrjük a listát a WHERE paranccsal!





CODE
<?php

include("mysql.php"); //kapcsolat

mysql_query("SELECT nev, jelszo FROM felhasznalok WHERE nev = 'hardrat'");

?>
WHERE - AHOL

nev = 'hardrat' - a nev oszlopban az érték: hardrat

(Vegyük észre, hogy nem " jelet írtunk, mert akkor hibás lenne a kód!

Továbbá vegyük észre azt is, hogy nem == operátort írtunk, hanem = operátort!

Továbbá * helyett kiírtuk, hogy "nev, jelszo", vagyis az oszlopokat, amiket lekérdezünk.)



Ezzel kiválasztottuk azt a bizonyos sort, amire kíváncsiak vagyunk.

Sajnos elfelejtettük mi a jelszó, és ki kell hogy írassuk.

Ezt így tehetjük meg:





CODE
<?php

include("mysql.php"); //kapcsolat

$mysql_parancs = mysql_query("SELECT jelszo FROM felhasznalok WHERE nev = 'hardrat'"); //csak a jelszo oszlop kell!

$hardrat_adatai = mysql_fetch_array($mysql_parancs);

print $hardrat_adatai["nev"]; //nem ír ki semmit, csak a jelszo oszlopot kértük le!

print $hardrat_adatai["jelszo"]; //kiírja: top secret

?>
Mint láthatjuk, a mysql parancsot változóba kellett raknunk.

Persze írhattuk volna így is:

$hardrat_adatai = mysql_fetch_array(mysql_query("SELECT * FROM felhasznalok WHERE nev = 'hardrat'"));

Csak így nagyon hosszú

És legtöbbször amúgy is változóba kell raknunk a parancsokat.

Na de mire jó ez a mysql_fetch_array()?

Ennek a paramétere (csak 1 van) egy mysql_query parancs, méghozzá egy SELECT kérés.

Ezt rakhatjuk változóba is. De a parancs a lényeg.

A változó, amibe belerakjuk a mysql_fetch_array visszatérési értékét, tartalmazni

fog egy tömböt, méghozzá egy asszociatív tömböt, aminek az indexei az oszlopok nevei.



Ha a SELECT kérés több sort ad eredményül, például a hardrat nevű, és a jocó nevű felhasználóét,

akkor a mysql_fetch_array() visszatérési értéke egy asszociatív tömb lesz az első sor értékeivel.

Ha a második sor értékeit is le akarjuk kérni, akkor még egyszer le kell futtatnunk a mysql_fetch_array() függvényt.

Ennek gyorsítása egy while() függvény segítségével lehetséges, a következő módon:





CODE
<?php

include("mysql.php"); //kapcsolat

$mysql_parancs = mysql_query("SELECT * FROM felhasznalok");

while($adatok = mysql_fetch_array($mysql_parancs)) {

print_r($adatok);

}

?>
Először is, print_r() függvény. Ez szépen leírja bármilyen tömbnek a struktúráját, beírt értékekkel együtt.

Nem lehet rendesen leírni, ki kell próbálni

Az igazi újdonság a while()-ban van. Az = operátor a hozzárendelésre használatos, az összehasonlítás a ==

operátorral történik. Ebben a helyzetben a változó értékadás azt gyönyörű tulajdonságát használjuk fel,

hogy van visszatérési értéke Ha két változónak ugyanazt az értéket akarod adni, írhatod így is:

$egyik = $masik = "érték";

Ez bizonyítja, hogy van visszatérési érték. A mysql_fetch_array() minden egyes lefutásakor egy új

sort próbál kiolvasni. Ha nincs több sor, akkor false (hamis) értékkel tér vissza. Ekkor az $adatok

változó értéke false lesz. A while() ciklus feltételének igaznak kell lennie, hogy lefusson a kapcsos

zárójelek közötti rész, de az $adatok változó már false, így a ciklus leáll. Csodálatos, nemde?



Összefoglalva: ez a rövid, ámde hatásos kód végigmegy a kiválasztott sorok között.



Nos, ennyi

Ha valami nem érthető, kérdezzetek!

A változóknak lehet bármilyen értékük, mint mondtam.

Így ha egy változónak egy számot adunk értékül, akkor a változó

típusa be lesz állítva magától. Ám ha közben megváltoztatod a

változó értékét számról mondjuk egy szóra, akkor sem kell

állítgatnod a típusát, ezért hagytam ezt a részt ki.



A PHP-nak ez a tulajdonsága hatalmas luxus, más nyelvek, pl. a C++ sokkal kötöttebbek.





Változó típusok





Először is, tisztában kell lennünk vele, hogy milyen típusok vannak.



String - Karakterlánc (betűk, számok)

Integer - Szám (egész)

Boolean - Igaz/Hamis (true/false)

Double - Szám (lebegőpontos pl. 0.23)

Array - Tömb

Object - Objektum

Resource - Erőforrás (PHP4-ben)

Null - NULL (PHP4-ben)

User function - Felhasználó által készített függvény (csak a PHP3-ban!)

Unknown type - Ismeretlen típus





Pár függvény:







CODE
<?php

$tipus = gettype($valtozo); //$tipus értéke a $valtozo típusa lesz

$ize = "5valami"; //string

$valami = true; //boolean

settype($ize, "integer"); //$ize most 5 (integer)

settype($valami, "string"); //$valami most "1" (string)

$boolean = is_array($valtozo); //ha $valtozo egy tömb, $boolean igaz

$boolean = is_string($valtozo); //ha $valtozo egy karakterlánc, $boolean igaz

$boolean = is_bool($valtozo); //ha $valtozo true vagy false, $boolean igaz

$boolean = is_float($valtozo); //ha $valtozo egy lebegőpontos szám, $boolean igaz

$boolean = is_integer($valtozo); //ha $valtozo egy egész szám, $boolean igaz

$boolean = is_null($valtozo); //ha $valtozo értéke NULL, $boolean igaz

$boolean = is_object($valtozo); //ha $valtozo egy objektum, $boolean igaz

$boolean = is_numeric($valtozo); //ha $valtozo értéke szám, $boolean igaz

$boolean = is_scalar($valtozo); //http://php.net/manual detoxication function.is-scalar.php

$boolean = is_resource($valtozo); //http://php.net/manual detoxication function.is-resource.php

?>
Akkor NULL egy változó típusa, ha:

1. az unset() függvény törölte

2. a NULL állandó értéke van benne

3. még nincs érték hozzárendelve ($valtozo == "")

4. még nincs létrehozva (ekkor hibaüzenetet is kiír)





Változók kezelése







CODE
<?php

$ures = empty($valtozo); //$ures értéke true lesz, ha a $valtozo üres

$hossz = strlen($valtozo); //$hossz értéke a $valtozo hossza lesz

$letezik = isset($valtozo); //$letezik true lesz, ha $valtozo létezik

unset($valtozo); //törli a $valtozo változót



$email  = '[email protected]';

$domain = strstr($email, "@");

print $domain; //kiírja @pelda.hu

$user = strstr($email, "@", true);

print $user; //kiírja nev



$maradek = substr("abcdef", -1); //f

$maradek = substr("abcdef", -2); //ef

$maradek = substr("abcdef", -3, 1); //d

$maradek = substr("abcdef", 0, 1); //a

$maradek = substr("abcdef", 0, 2); //ab

?>


Blade.
akinek nem tetszik hogy a torrent honlapomról feltetem ide a leírásokat akkor na :D
kedves haverom Silu töltötte fel

sziasztok megosztom most veletek az én egyik kedvenc könyvemet amiböl még most is tanulgatom a php-nek a használatát

könyv cím: Tanuljuk meg a PHP5 hasznalatat 24 óra alatt

Linkek:

http://data.hu/get/2303339/Tanuljuk_meg_a_PHP5_hasznalatat_24_ora_alatt_I..pdf.html

http://data.hu/get/2303343/Tanuljuk_meg_a_PHP5_hasznalatat_24_ora_alatt_II..pdf.html

Gondoltam megosztom veletek

Azért data.hu-ra tette fel mert onnan gyorsan jönnek le általában a dolgok és nincs korlát ill én még nem találkoztam vele...



Remélem a feltöltésem nem volt értelmetlen
Üdv Blade

Sziasztok.
címe mutatja is,ez egy oldal terhelés mérő.
Ezt a torrent oldalamhoz csináltam de nektek publikálom :D


nem nehéz a használata.

Csinálsz egy html oldalt

majd ezt illeszd be:
<?

$load = exec ('uptime');
preg_match ("/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/", $load, $avgs);

//$percent = round((($avgs[1]+$avgs[2]+$avgs[3])*10)/3);
$percent = round(($avgs[1]+$avgs[2]+$avgs[3])/3);
$percentn = number_format(($avgs[1]+$avgs[2]+$avgs[3])/3,2);
$sload = $avgs[0];

$width = $percent * 2 . "px";
$width2 = 160-($percent*2) . "px";

echo "Terheltség:<table align='center' style='width: 160px; height: 10px; background-color: #000000;'><tr>
<td style='width: $width; background-color: #00FF00;'></td><td style='width: $width2;'></td></tr></table>
<font style='font-size: 10px; font-family: Tahoma;'>$percentn%</font>";

?>

és ennyi.

Saját de lehet másra is alkalmazni :D

$percentn%";?>

2011-02-28, 19:24:27 #16 Utolsó szerkesztés: 2012-11-23, 14:32:32 Szerző: ATAG
Téma cím adott :)

Telepítés:

1. Lépés:
  Felmásolod a szerveredre.
2.Lépés:
  Beállítod a search.php elején található adatokat az ott lévő utasítások szerint...
3. Lépés:
  ahol használni szeretnéd, oda beilleszted:
 
  <?php
    
require_once('search.php');
  
?>


  Az elérési útvonalat értelemszerűen írd úgy hogy a fájlra mutasson!

Telepítés VÉGE.


[PHP]<?php

##############################
$_MYSQL['HOST'] = "localhost"; // MySQL host
$_MYSQL['USER'] = "user"; // MySQL felhasználónév
$_MYSQL['PASSWORD'] = "password";  // MySQL jelszó
$_MYSQL['DB'] = "Database";    // MySQL adatbázis
$_MYSQL['CODING'] = "utf8";    //MySQL Karakterkódolás... (utf8,latin1,latin2)

$_HTML['CODING'] = "UTF-8";    //A HTML Karakterkódolás...
$hely 1; //1 mutatja a helyét az adatbázisban, 0 nem... pl.: Hely: (Adatbázis: DB, Tábla: Table, Mező: Column)
##############################
$talszam_o 0;
$tal 0;

// Oldal HEAD

echo'

<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset='
.$_HTML['CODING'].'">

<SCRIPT LANGUAGE="JavaScript">
<!-- A JavaScript kód elrejtése


function uresCheck(mezo){
  if (mezo.value != "") return true;
  else{
    alert("Kérlek töltsd ki a mezőt!");
    mezo.focus();
    return false;
  }
}

function ellenoriz(){
  if (uresCheck(document.search.se)){

 document.form.submit();
 return true;

}
  else return false;
}

// -->
</SCRIPT>

<style>
a{
color: #000066;
}

a:link{
color: #000066;
}
a:visited{
color: #000066;
}
a:hover{
color: #FF6600;
}

</style>
'
;

//HEAD end...


if( isset($_GET['se']) && $_GET['se'] != ''){
$se $_GET['se'];
echo
'
<title>Keresés:'
.$se.'</title>
</head><body>

<table align="center" width="90%" border="1" style="padding: 1px; background: #EEEEEE;">
<tr><td width="100%" style="padding: 5px; background: #CCCCCC;"  colspan="3">

<form action="'
.$_SERVER['PHP_SELF'].'" name="search" method="GET"  onsubmit="javascript: return ellenoriz();">

<input type="text" size="40" name="se" value="'
.$se.'">
<input type="submit" value="Módosít">

</form>

</td></tr>

'
;

$kapcsolat = @mysql_connect$_MYSQL['HOST'], $_MYSQL['USER'], $_MYSQL['PASSWORD'] ) or die("Hiba! : "mysql_error());
@
mysql_query("SET NAMES ".$_MYSQL['CODING'],$kapcsolat);

    @
mysql_select_db$_MYSQL['DB'] ) or die("Hiba! : "mysql_error());

    
$parancs "SHOW TABLES FROM "$_MYSQL['DB'];
    
$tables = @mysql_query($parancs,$kapcsolat) or die("Hiba! : "mysql_error());

    while(
$tablak mysql_fetch_row($tables)){// Táblák (1)

$parancs "SHOW COLUMNS FROM ".$tablak[0];
$columns = @mysql_query($parancs,$kapcsolat) or die("Hiba! : "mysql_error());

while($mezok mysql_fetch_row($columns)){ // Mezők (2)

   $parancs "SELECT COUNT(*) FROM ".$tablak[0]." WHERE ".$mezok[0]." LIKE '%".$se."%';";
   $sql = @mysql_query($parancs,$kapcsolat) or die("Hiba! : "mysql_error());
  $talszam mysql_fetch_row($sql);


   if( $talszam[0] != ){// Ha a találatok száma nem nulla írd ki a találatokat...

  $parancs "SELECT * FROM ".$tablak[0]." WHERE ".$mezok[0]." LIKE '%".$se."%';";
  $sql = @mysql_query($parancs,$kapcsolat) or die("Hiba! : "mysql_error());


  while($sor mysql_fetch_array($sql)){//Eredmények (3)
 $sor preg_replace('/'.$se.'/i',"<font style='background-color: #FFFF00;'>\\0</font>",$sor[$mezok[0]]);
 $tal+=1;
 $talszam_o+=1;
 echo "<tr><td width='5%' align='left' style='padding: 5px; background: #EEEEEE;'><center><b>".$tal."</b></center></td><td width='70%' align='left' style='padding: 5px; background: #DDDDDD;'>".$sor."</td>";
 if($hely == 1){
   echo"<td width='25%' align='left' style='padding: 5px; background: #EEEEEE;'><i>Helye: (Adatbázis: ".$_MYSQL['DB'].", Tábla: ".$tablak[0].", Mező: ".$mezok[0].")</i></td></tr>";
 }

  }// While 3 vége

   }// if vége (ha 0-nál több találat van...)

}// While 2 vége

    
}// While 1 vége

    
if( $talszam_o == ){
 echo "<tr><td width='100%' align='left' style='padding: 5px; background: #EEEEEE;'><center>Nem található eredmény a következő keresésre: <b>".$se."</b></center></td></tr>";
    }




}
// if vége (Ha van mit keresni...)
else{ // Ha nincsen mit keresni...
    
echo'
    <title>Keresés</title>
    </head><body>

    <table align="center" width="90%" border="1" style="padding: 1px;">
    <tr><td width="100%" style="padding: 5px; background: #CCCCCC;"  colspan="3">

    <form action="'
.$_SERVER['PHP_SELF'].'" name="search" method="GET" onsubmit="javascript: return ellenoriz();">

    <input type="text" size="40" name="se" value="Keresés..." onfocus="javascript: if(this.value==\'Keresés...\') this.value=\'\'" onblur="javascript: if(this.value==\'\') this.value=\'Keresés...\'">
    <input type="submit" value="Keresés">

    </form>

    </td></tr>
    '
;
}



echo
'

</table>
</body>
</html>
'
;

?>

Sziasztok!

Itt a saját Képfeltöltö motorom :)

<?php
   $upload_dir 
"images/";
   
$size_bytes 102400
   
$extlimit "yes"
   
$limitedext = array(".gif",".jpg",".png",".jpeg");
   if (!
is_dir("$upload_dir")) {
	
 die (
"Hiba: a megadott mappa <b>($upload_dir)</b> nem létezik!");
   }

   if (!
is_writeable("$upload_dir")){
	
 die (
"Hiba: a megadott mappának<b>($upload_dir)</b> állíts be 777-es attribútomot! )");
   if(isset(
$_POST['uploadform'])){


	
	
 
$file_tmp $_FILES['filetoupload']['tmp_name'];
	
	
 
$file_name $_FILES['filetoupload']['name'];

	
	
 
$file_size $_FILES['filetoupload']['size'];

	
	
 if (!
is_uploaded_file($file_tmp)){
	
	
 echo 
"Hiba: válaszd ki a fletöltend_ fájlt! <br>»<a href=\"$_SERVER[PHP_SELF]\">Vissza!</a>";
	
	
 exit();
	
	
 }



	
	
 if (
$file_size $size_bytes){
	
	
    echo 
"Hiba: A fájl meghaladta a Max. <b>"$size_bytes 1024 ."</b> KB méretet! <br>»<a href=\"$_SERVER[PHP_SELF]\">Vissza!</a>";
	
	
    exit();
	
	
 }

	
	
 
$ext strrchr($file_name,'.');
	
	
 if ((
$extlimit == "yes") && (!in_array(strtolower($ext),$limitedext))) {
	
	
    echo(
"Hiba: helyeteln fájl kiterjesztés. ");
	
	
    exit();
	
	
 }


	
	
 if(
file_exists($upload_dir.$file_name)){
	
	
    echo 
"Hiba: Már van ilyen fájl név<b>($file_name)</b>! <br>»<a href=\"$_SERVER[PHP_SELF]\">Vissza!</a>";
	
	
    exit();
	
	
 }


	
	
 
$file_name str_replace(' ''_'$file_name);
	
	
    if (
move_uploaded_file($file_tmp,$upload_dir.$file_name)) {

	
	
	
  echo 
"Fájl (<a href=\"$upload_dir$file_name\">$file_name</a>) sikeresen feltöltve! <br>&lt;&lt;<a href=\"$_SERVER[PHP_SELF]\">Vissza!</a>";
	
	
	
  exit();
	
	
 }else{
	
	
   
	
	
	
  echo 
"Valami progléma van a fájl mozgatásánál. <br>»<a href=\"$_SERVER[PHP_SELF]\">Vissza!</a>";
	
	
	
  exit();
	
	
 }

   }else{



	
   for(
$i=0;$i<count($limitedext);$i++){
	
   if ((
$i<>count($limitedext)-1))$commas=", ";else $commas="";
	
   list(
$key,$value)=each($limitedext);
	
   
$all_ext .= $value.$commas;
    }
  
	
   
//Az _rlap
	
   echo 
"<br><h3>.::Válassz egy fájlt feltöltésre::.</h3>"
	
	
  .
"- Érvényes kiterjesztések: $all_ext</b> <br>"
	
	
  .
"- Max fájl méret = "$size_bytes 1024 ."KB"
	
	
  .
"<form method=\"post\" enctype=\"multipart/form-data\" action=\"$PHP_SELF\">"
	
	
  .
"<input type=\"file\" name=\"filetoupload\"><br>"
	
	
  .
"<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"$size_bytes\"><br>"
	
	
  .
"<input type=\"Submit\" name=\"uploadform\" value=\"Feltöltés\">"
	
	
  .
"</form>";
   }
   function 
del(){

	
 global 
$upload_dir$file;


	
 @
unlink($upload_dir."/$file");
	
 echo
"<h3><font color=red>A fájl ($file) törölve! <br> </font></h3>";
	
 echo 
"<meta http-equiv=Refresh content=1;url=kepfeltoltes.php>";
   }


   if ( 
$action == del ){
	
  
del();
   }



echo 
"<br><hr><center><b>Feltöltött fájlok (Képtár)</b></center><br>";


$cols 3;

$i =1;
echo 
"<table width=100% border ='1' bordercolor='#' cellpadding='10' cellspacing='6'>
	
  <tr>"
;


$opendir =opendir($upload_dir);
while (
$file readdir($opendir)) {

	
   if(
$file != '..' && $file !='.' && $file !=''){

	
	
	
 if (!
is_dir($file)){


	
	
	
	
    
$imgsize getimagesize ($upload_dir."".$file);


	
	
	
	
    
$file_size filesize($upload_dir."".$file);

	
	
	
 if (
$file_size >= 1048576){
	
	
	
   
$show_filesize number_format(($file_size 1048576),2) . " MB";
	
	
	
 }elseif (
$file_size >= 1024){
	
	
	
   
$show_filesize number_format(($file_size 1024),2) . " KB";
	
	
	
 }elseif (
$file_size >= 0){
	
	
	
   
$show_filesize $file_size " bytes";
	
	
	
 }else{
	
	
	
   
$show_filesize "0 bytes";
	
	
	
	
    }

	
	
	
	
    
$last_modified date ("F d Y H:i:s"filemtime($upload_dir."".$file));


	
	
	
	
    if (
$imgsize[0] > 100){
	
	
	
	
	
	
$base_img "<img src=\"$upload_dir$file\" border=\"0\" width=\"100\">";
	
	
	
	
    }else{
	
	
	
	
	
	
$base_img "<img src=\"$upload_dir$file\" border=\"0\">";
	
	
	
	
    }

	
	
	
	
    
$all_stuff =  "Fájlnév:<b> $file</b> <hr size=1>
	
	
	
	
	
	
	
    <div style=\"width: 120px; height: 120px; z-index: 1; float: left; border: 1px dotted \">
	
	
	
	
	
	
	
    <a href=\"javascript:popimg('
$upload_dir$file','$file', $imgsize[0]$imgsize[1],'white')\">
	
	
	
	
	
	
	
    
$base_img</a>
	
	
	
	
	
	
	
    </div>
	
	
	
	
	
	
	
    <p align=left>
	
	
	
	
	
	
	
    Méret: 
$show_filesize<br>
	
	
	
	
	
	
	
    <br>Width : 
$imgsize[0] px
	
	
	
	
	
	
	
    <br>Height : 
$imgsize[1] px
	
	
	
	
	
	
	
    <br>Dátum: 
$last_modified GMT";



	
	
	
	
    if (
is_int($i $cols)){
	
	
	
	
	
  echo 
"<td align='center' valign='top' bgcolor=''>$all_stuff</td></tr><tr>";
	
	
	
	
    }else{

	
	
	
	
	
	
echo 
"<td align='center' valign='top' bgcolor=''>$all_stuff</td>";
	
	
	
	
    }

	
	
	
	
    
$i++;
	
	
	
 }
    }
}
closedir($opendir);
clearstatcache();

echo 
"</tr>
	
 </table>"
;

?>

Sziasztok.


Csináltam nektek BBKod Funkcio részt. Attila1995 elégé kezdő még de na majd tanul :D


Bármilyen oldalba berakhatod csak require-z ni kell a funkciokat tartalmazo fájlt :).
<?PHP
function bb($text$strip_html true)

    
$s $text;
    
    
$s htmlspecialchars($text);
    
    
$s preg_replace("/\[\*\]/""<li>"$s);


    
$s preg_replace("/\[b\]((\s|.)+?)\[\/b\]/""<b>\\1</b>"$s);

    
$s preg_replace("/\[i\]((\s|.)+?)\[\/i\]/""<i>\\1</i>"$s);


    
$s preg_replace("/\[u\]((\s|.)+?)\[\/u\]/""<u>\\1</u>"$s);


    
$s preg_replace("/\[s\]((\s|.)+?)\[\/s\]/i""<s>\\1</s>"$s);

    
$s preg_replace("/\[img\](http:\/\/[^\s'\"<>]+(\.(jpg|gif|png)))\[\/img\]/i""<img border=0 src=\"\\1\" alt=\"\" onload=\"NcodeImageResizer.createOn(this);\">"$s);


    
$s preg_replace("/\[img\]([^\s'\"<>]+?)\[\/img\]/i""<img border=0 src=\"\\1\">"$s);

    
$s preg_replace("/\[img=(http:\/\/[^\s'\"<>]+(\.(gif|jpg|png)))\]/i""<img border=0 src=\"\\1\" alt=\"\"  onload=\"NcodeImageResizer.createOn(this);\">"$s);
    
    

    
$s preg_replace(
	
   
"/\[color=([a-zA-Z]+)\]((\s|.)+?)\[\/color\]/i",
	
   
"<font color=\\1>\\2</font>"$s);


    
$s preg_replace(
	
   
"/\[color=(#[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9])\]((\s|.)+?)\[\/color\]/i",
	
   
"<font color=\\1>\\2</font>"$s);

    
$s preg_replace(
	
   
"/\[url=http://([^()<>\s]+?)\]((\s|.)+?)\[\/url\]/i",
	
   
"<a href=\"atiranyit.php?url=\\1\" target='_blank'>\\2</a>"$s);

    
$s preg_replace(
	
   
"/\[url\]([^()<>\s]+?)\[\/url\]/i",
	
   
"<a href=\"atiranyit.php?url=\\1\" target='_blank'>\\1</a>"$s);


    
$s preg_replace(
	
   
"/\[size=([1-7])\]((\s|.)+?)\[\/size\]/i",
	
   
"<font size=\\1>\\2</font>"$s);


    
$s preg_replace(
	
   
"/\[font=([a-zA-Z ,]+)\]((\s|.)+?)\[\/font\]/i",
	
   
"<font face=\"\\1\">\\2</font>"$s);


	
   
$s preg_replace("/\[video=[^\s'\"<>]*youtube.com.*v=([^\s'\"<>]+)\]/i""<object width=\"400\" height=\"310\"><param name=\"movie\" value=\"http://www.youtube.com/v/\\1\"></param><embed src=\"http://www.youtube.com/v/\\1\" type=\"application/x-shockwave-flash\" width=\"500\" height=\"410\"></embed></object>"$s);
    

    
$s nl2br($s);


    
$s preg_replace("/\[pre\]((\s|.)+?)\[\/pre\]/i""<tt><nobr>\\1</nobr></tt>"$s);


    
$s preg_replace("/\[nfo\]((\s|.)+?)\[\/nfo\]/i""<tt><nobr><font face='MS Linedraw' size=2 style='font-size: 10pt; line-height: " .
	
   
"10pt'>\\1</font></nobr></tt>"$s);

    
$s str_replace("  "" &nbsp;"$s);
    
    
$s =preg_replace("/(\A|[^=\]'\"a-zA-Z0-9])((http|ftp|https|ftps|irc):\/\/[^()<>\s]+)/i""\\1<a href=\"atiranyit.php?url=\\2\" target='_blank'>\\2</a>"$s);
    

	

    return 
$s;
}


?>

Sziasztok!

Eljöttek az ünnepek ismét, így gondoltam szeretnék valamit én is hozzá tenni! (Előre is bocsi ha már van ilyen téma!)
Minap keresgéltem a neten és találtam egy jó kis scriptet!  ;D

Na szóval térjünk is a lényegre!
A következő sorokat csak szúrd be weboldalad index.php vagy html fájljába! Teljesen mindegy, hogy hova. (célszerű az elejére.)

<script type="text/javascript">

/******************************************
* Snow Effect Script- By Altan d.o.o. (http://www.altan.hr/snow/index.html)
* Visit Dynamic Drive DHTML code library (http://www.dynamicdrive.com/) for full source code
* Last updated Nov 9th, 05' by DD. This notice must stay intact for use
******************************************/
 
  //Configure below to change URL path to the snow image
  var snowsrc="http://weboldalad.hu/kepek/hopehely.gif"
  // Configure below to change number of snow to render
  var no = 15;
  // Configure whether snow should disappear after x seconds (0=never):
  var hidesnowtime = 0;
  // Configure how much snow should drop down before fading ("windowheight" or "pageheight")
  var snowdistance = "pageheight";

///////////Stop Config//////////////////////////////////

  var ie4up = (document.all) ? 1 : 0;
  var ns6up = (document.getElementById&&!document.all) ? 1 : 0;

function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

  var dx, xp, yp;    // coordinate and position variables
  var am, stx, sty;  // amplitude and step variables
  var i, doc_width = 800, doc_height = 600;
 
  if (ns6up) {
    doc_width = self.innerWidth;
    doc_height = self.innerHeight;
  } else if (ie4up) {
    doc_width = iecompattest().clientWidth;
    doc_height = iecompattest().clientHeight;
  }

  dx = new Array();
  xp = new Array();
  yp = new Array();
  am = new Array();
  stx = new Array();
  sty = new Array();
  snowsrc=(snowsrc.indexOf("dynamicdrive.com")!=-1)? "snow.gif" : snowsrc
  for (i = 0; i < no; ++ i) { 
    dx[i] = 0;                        // set coordinate variables
    xp[i] = Math.random()*(doc_width-50);  // set position variables
    yp[i] = Math.random()*doc_height;
    am[i] = Math.random()*20;         // set amplitude variables
    stx[i] = 0.02 + Math.random()/10; // set step variables
    sty[i] = 0.7 + Math.random();     // set step variables
if (ie4up||ns6up) {
      if (i == 0) {
        document.write("<div id=\"dot"+ i +"\" style=\"POSITION: absolute; Z-INDEX: "+ i +"; VISIBILITY: visible; TOP: 15px; LEFT: 15px;\"><a href=\"http://dynamicdrive.com\"><img src='"+snowsrc+"' border=\"0\"><\/a><\/div>");
      } else {
        document.write("<div id=\"dot"+ i +"\" style=\"POSITION: absolute; Z-INDEX: "+ i +"; VISIBILITY: visible; TOP: 15px; LEFT: 15px;\"><img src='"+snowsrc+"' border=\"0\"><\/div>");
      }
    }
  }

  function snowIE_NS6() {  // IE and NS6 main animation function
    doc_width = ns6up?window.innerWidth-10 : iecompattest().clientWidth-10;
doc_height=(window.innerHeight && snowdistance=="windowheight")? window.innerHeight : (ie4up && snowdistance=="windowheight")?  iecompattest().clientHeight : (ie4up && !window.opera && snowdistance=="pageheight")? iecompattest().scrollHeight : iecompattest().offsetHeight;
    for (i = 0; i < no; ++ i) {  // iterate for every dot
      yp[i] += sty[i];
      if (yp[i] > doc_height-50) {
        xp[i] = Math.random()*(doc_width-am[i]-30);
        yp[i] = 0;
        stx[i] = 0.02 + Math.random()/10;
        sty[i] = 0.7 + Math.random();
      }
      dx[i] += stx[i];
      document.getElementById("dot"+i).style.top=yp[i]+"px";
      document.getElementById("dot"+i).style.left=xp[i] + am[i]*Math.sin(dx[i])+"px"; 
    }
    snowtimer=setTimeout("snowIE_NS6()", 10);
  }

function hidesnow(){
if (window.snowtimer) clearTimeout(snowtimer)
for (i=0; i<no; i++) document.getElementById("dot"+i).style.visibility="hidden"
}


if (ie4up||ns6up){
    snowIE_NS6();
if (hidesnowtime>0)
setTimeout("hidesnow()", hidesnowtime*1000)
}

</script></p></center>


Nekem teljesen jól működik!  :D
Sok szerencsét hozzá és kellemes ünnepeket minden fórumozónak!
Csatoltam a hopehely.gif képet.