bevezetés a php programozásba · bevezetés a php programozásba oktatási segédanyagok: 1....

36
Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat – hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453 3. www.w3schools.com/php © BME-AAIT Informatika 2 1

Upload: others

Post on 30-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Bevezetés a PHP programozásba

Oktatási segédanyagok:

1. 5.gyakorlat – hallgatói felkészülési segédlet

2. Informatika 2 jegyzet 432-453

3. www.w3schools.com/php

© BME-AAIT Informatika 2 1

Page 2: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Tartalom

Mi a PHP?

PHP alapok

Előre definiált változók és függvények

© BME-AAIT Informatika 2 2

Page 3: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Tartalom

© BME-AAIT Informatika 2 3

Mi a PHP?

PHP alapok

Előre definiált változók és függvények

Page 4: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Mi a PHP? Cél: dinamikus HTML oldalak generálása

PHP == PHP: Hypertext Preprocessor

PHP motor

Bemenete: HTML+script kód

Kimenete: HTML

A fájl kiterjesztése: .php

Imperatív programozási nyelv

Script nyelv ~ interpreter

Szerver oldali programozási nyelv

Kliens oldal: HTML, CSS, Javascript

Szerver oldal: PHP, SQL…

© BME-AAIT Informatika 2 4

Page 5: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Mi a PHP?

© BME-AAIT Informatika 2 5

Page 6: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Tartalom

Mi a PHP?

PHP alapok

Előre definiált változók és függvények

© BME-AAIT Informatika 2 6

Page 7: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

PHP ALAPOK

PHP ~ “C” szövegfeldolgozást egyszerűsítő elemekkel (vezérlő szerkezetek,…)

PHP = “C”+ (gyengén típusos, asszociatív tömb…)

© BME-AAIT Informatika 2 7

Page 8: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

PHP fájl felépítése

PHP fájl elemei:

HTML elemek

PHP elemek: <?php … ?>test.php fájl:

<!DOCTYPE html><html>

<head> <title> PHP teszt</title> </head><body>

<pre><?php

echo " Helló világ! "; -> Helló világ!?>

</pre></body>

</html>

© BME-AAIT Informatika 2 8

Page 9: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Kimenet generálása, változók, szövegek printf("Int: <b> %05d </b> Hexa: <b> %04x </b> \n",123,123);

HTML: Int: <b> 00123 </b> Hexa: <b> 007b</b> \n

Megjelenítés:

$v=123; (változónév kezdete : a-zA-Z_,[128-255 asc kar.)

printf("Int: <b> %05d </b> Hexa: <b> %04x </b> \n",$v, $v);

$s=sprintf("Int: <b> %05d </b> Hexa: <b> %04x </b> \n",$v, $v);printf("%s ",$s);

print($s); ~ echo($s); print $s; echo $s; print függvény, return értéke 1, így kifejezésben használhatóecho nem függvény, lehet több paramétere: echo " STR:",$s;

Szövegösszefűzés: print(" eleje " . $s . " vége\n");

© BME-AAIT Informatika 2 9

Page 10: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Idézőjelek használata szimpla idézőjel csak \' \\ helyettesítés

print 'Ez \' \\ egy $belso karaktersorozat.\n';

dupla idézőjel

változó-helyettesítés

spec. karakterkezelés \" \\ \$ \n …

kapcsos zárójel dupla idézőjelek között (kiértékelés minthasztringen kívül lenne)

$belso = "próba";print "Ez egy $belso karaktersorozat. \n";

print "xxx'yyy\\zzz\n";

print " … {$_POST["nev"]} vagy {$_POST['nev']} … " ;

© BME-AAIT Informatika 2 10

Page 11: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Utasítások

Minden utasítást ; zár

Megjegyzések: /* … */ // … # …

© BME-AAIT Informatika 2 11

Page 12: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Utasítások - if

$nap="kedd";if ($nap=="hétfő") {

echo "A hét első napja";}elseif ($nap=="szombat"||($nap=="vasárnap"){

echo "Hétvége";}else {

echo "Hétköznap";}

© BME-AAIT Informatika 2 12

Page 13: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Utasítások - switch$nap="kedd";switch($nap) {

case "hétfő":echo "A hét első napja";break;

case "szombat":case "vasárnap":

echo "Hétvége";break;

default: echo "Hétköznap";break;

}

© BME-AAIT Informatika 2 13

Page 14: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Utasítások – while, for$i=0;while ( $i<10 ){

echo $i++ , ' | ';}

$i=0;do {

echo $i++ , ' | ';} while ( $i<10 );

for ( $i=0 ; $i<10 ; $i++ ) {echo $i , ' | ';

}

© BME-AAIT Informatika 2 14

Page 15: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Gyengén típusos nyelv

Gyengén típusosság jelentése

a változó bárhol létrehozható

típusa tartalom függő: $v= "12"; $v= 12;

futásidejű típuskiértékelés

Típusok

integer (int) $v= 12;

double (float) $v= 12.;

boolean (bool) $v= false;

string $v= "12";

array $v=array(3,2,4);

(object) © BME-AAIT Informatika 2 15

Page 16: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Gyengén típusosság – változók kezelése

boolean isset($v)

unset($v)

string gettype ($v) boolean is_integer($v) …

boolean settype($v, "string") $v = (string) $v

var_dump($v); - típus és érték kiírása

print_r($v); - érték kiírása

Összehasonlítás$str='32'; $szam=32;if ($str == $szam) echo "érték azonos"; if ($str === $szam) echo "típus és érték is azonos"; if ($str !== $szam) echo "típus vagy érték nem azonos";

© BME-AAIT Informatika 2 16

Page 17: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Tömbök

Indexelt tömb

Asszociatív tömb

Többdimenziós tömb

© BME-AAIT Informatika 2 17

Page 18: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Indexelt tömb (numerikus kulcs)

Létrehozása$a=array("szöveg",12, true);$a[]= "következő";$a[4]="utolsó";

Hivatkozás echo $a[3];

Bejárás

$n=count($a); for ( $i=0; $i<$n; $i++ ) echo $a[i]; !!!!!

print_r($a);

Törlés

unset($a[3]); unset($a);

© BME-AAIT Informatika 2 18

Page 19: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Asszociatív tömb - kulcs-érték párok

Létrehozása$admin["id"]=1;$admin["nev"]="Pál";$admin["kor"]=21;…$admin=array("id"=>1, "nev"=>"Pál", "kor"=>21);

(A tömb eleme tömb is lehet. Lehet vegyes indexelés.)

Hivatkozásecho $admin["nev"] ;

Bejárásforeach ($admin as $kulcs => $ertek)

print $kulcs. ":" .$ertek. "<br />";

© BME-AAIT Informatika 2 19

Page 20: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Példa:$kor = array("Lajos"=>21, "Sandor"=>37, "Eszter"=>25);

var_dump($kor);

print_r($kor);

foreach($kor as $x_key => $x_value) {

echo "Key=" . $x _key. ", Value=" . $x_value;

echo "<br>";}

© BME-AAIT Informatika 2 20

Page 21: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Függvények

function nev($a, $b, …) // lehet referencia szerinti is &…

{

$v1=…;global $v2=…;static $v3=…;

….

return …

}

© BME-AAIT Informatika 2 21

Page 22: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Tartalom

Mi a PHP?

PHP alapok

Előre definiált változók és függvények

© BME-AAIT Informatika 2 22

Page 23: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Előre definiált változók és függvények

Űrlapok kezelése - $_GET, $_POST, $_REQUEST

MYSQL kezelése – mysqli_...

SESSION (állapotkezelés – munkamenet)

© BME-AAIT Informatika 2 23

Page 24: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Űrlapok (form és input) kezelése

Feladat:

Kérés: http kérés összeállítása

Válasz:

© BME-AAIT Informatika 2 24

Page 25: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Űrlapok (form és input) kezelése

test.html http kérés összeállítása

<!DOCTYPE html><html><head><title>Test php</title></head><body><h1> Form/input használata PHP-ból </h1>

<form action="test.php" method="post">Név: <input type="text" name="nev" />Kor: <input type="text" name="kor" />

<input type="submit" value="Küld" /></form>

</body></html>

© BME-AAIT Informatika 2 25

Page 26: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Űrlapok (form és input) kezelése

Az űrlap tartalmát a php-ban $_GET és $_POST, illetve $_REQUEST asszociatív tömbökkel lehet elérni.

test.php<!DOCTYPE html><html><head><title>Test php</title></head><body><h1> Form/input használata PHP-ból </h1>

<?phpif ( isset( $_POST['nev'] ) && isset( $_POST['kor'] ))

echo "Üdvözöljük {$_POST['nev']} nevű felhasználónkat, aki {$_POST['kor']} éves.";

?></body> </html>

© BME-AAIT Informatika 2 26

Page 27: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

SQL kezelése - mysqli_...

Beépített eljárások:mysqli_connect(…)

mysqli_query(…)

mysqli_fetch_assoc(…)

mysqli_free_result(…)

mysqli_close(…)

Feladat: A nevek táblában található személyek vezeték- és keresztnevének kiírása táblázatos formában

© BME-AAIT Informatika 2 27

Page 28: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

SQL kezelése - 1. rész<?php

$host ='localhost'; // '127.0.0.1';

$felhasznalo ='x';

$jelszo = 'x';

$adatbazis = 'xxxx';

$keres ='SELECT * FROM nevek';

$con = mysqli_connect($host, $felhasznalo, $jelszo, $adatbazis )

or exit("hiba");

© BME-AAIT Informatika 2 28

Page 29: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

SQL kezelése - 2. rész$eredmeny = mysqli_query($con,$keres) or exit("hiba");

echo "<table border=1>";while($sor = mysqli_fetch_assoc($eredmeny)){

//foreach ($sor as $kulcs=>$ertek) echo $kulcs . $ertek . "<br />";

echo "<tr> <td>" . $sor['Vezeteknev']."</td><td>" . $sor['Keresztnev']."</td></tr>";

}echo "</table>";

mysqli_free_result($eredmeny);mysqli_close($con);?>© BME-AAIT Informatika 2 29

Page 30: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

SESSION (munkamenet-kezelés)

Fogalma:http állapotmentes kapcsolat, de mi mégis szeretnék állapotot tárolni. (pl. bevásárló kosár)

A felhasználó azonosításának megvalósítása: http protokoll fejrészébenszerver beteszi az azonosítót: Set-Cookie: sessionid=….kliens visszaküldi az azonosítót: Cookie: sessionid=….

Beépített változók és függvények:

session_start(); a php állomány elejére$_SESSION asszociatív tömb a kosár tartalmának tárolására( session_destroy(); )

© BME-AAIT Informatika 2 • 30

Page 31: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

SESSION - feladat

Feladat:

© BME-AAIT Informatika 2 31

Page 32: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

SESSION 1.rész test.php…<!DOCTYPE html><html> <body>

<form action="test.php" method="POST">TÉTEL: <input type="text" name= "tetel" /> <input type="submit" value="GYŰJT" />

</form><br /><form action="test.php" method="POST">

<input type="hidden" name="torol" value="1"/><input type="submit" value="TÖRÖL" />

</form>

<br />…

</html> </body>

© BME-AAIT Informatika 2 32

Page 33: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

SESSION 2.rész

<?php

session_start();

if (isset($_POST['tetel']))

$_SESSION['kosar'][]=$_POST ['tetel'];

if (isset($_POST['torol']))

$_SESSION ['kosar']=array();

?>

<!DOCTYPY html>

<html> <body>…

© BME-AAIT Informatika 2 33

Page 34: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

SESSION 3.rész…<form action="test.php" method="POST">

</form>

<?phpif (isset($_SESSION['kosar'])){

echo "KOSÁR: ";foreach ($_SESSION['kosar'] as $tetel)

echo "<br />" . $tetel;}?>

</html> </body>

© BME-AAIT Informatika 2 34

Page 35: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

Támadások elleni védekezés PHP-ben

Adatok (inputok) szűrése

Szimpla idézőjelek használata, ha lehet

Escape függvények használata

mysqli_escape_string()

htmlspecialchars()

Még több info a PHP Security Guide-ban (pl: http://phpsec.org/)

© BME-AAIT Informatika 2 35

Page 36: Bevezetés a PHP programozásba · Bevezetés a PHP programozásba Oktatási segédanyagok: 1. 5.gyakorlat –hallgatói felkészülési segédlet 2. Informatika 2 jegyzet 432-453

www.w3schools.com

© BME-AAIT Informatika 2 36