PHP & MySQL. Studievaardigheden 2014. Jan van Rijn (j.n.van.rijn@liacs.leidenuniv.nl) LIACS, Universiteit Leiden



Vergelijkbare documenten
PHP & MySQL. Studievaardigheden Frank Takes (ftakes@liacs.nl) LIACS, Universiteit Leiden

Webtechnology crash course

Dynamische Websites. Week 2

Databases - Inleiding

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

Les 9: formulier controle met javascript.

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

Formulieren maken met Dreamweaver CS 4/CS 5

Installeer Apache2: Landstede februari 2009 versie 3 1 Bertil Hoentjen

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

A.C. Gijssen. 0.3 PHP en MySQL

Hoofdstuk 1 Inleiding PHP 7 of ouder Hoe dit boek werkt 2

Les 2 Eenvoudige queries

Formulier maken en opvangen met php

Foutcontrole met Javascript

Dynamische websites met PHP (basis) Karel Nijs 2010/09

Arrays en Foreach. Huub de Beer. Eindhoven, 4 juni 2011

Dynamische websites met PHP (basis) Karel Nijs 2010/09

PHP en een MySQL database.

Les 15 : updaten van gegevens in de database (deel2).

Een website maken met databasetoegang.

DBMS SQL. Relationele databases. Sleutels. DataBase Management System. Inleiding relationele databases. bestaan uit tabellen.

Koppeling met een database

Les 11 : Basis SQL (deel2).

Hoofdstuk 6. PHP Data Objects. Cursus PHP & MySQL Groep D

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site

[TOETS SQL INLEIDING]

UNIX FAQ. Migratie naar een nieuwe server

Software 1. php mysql. bachelor grafische en digitale media cross-media ontwerp & grafimediatechnologie academiejaar semester 1

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: Groep TDI 1

8. Koppeling met een database

Zorg ervoor dat je een database hebt aangevraagd op Open daarna het volgende adres in je browser:

Thinking of development

LES 11: VAN LOKAAL NAAR ONLINE. Lesoverzicht: Aan de slag Domeinnaam Web hosting FTP gegevens FTP programma s Database exporteren Samenvatting

12. Meer dan één tabel gebruiken en sub-queries

Sparse columns in SQL server 2008

Inhoud. Pagina 2 van 13

Op de Virtual Appliance is MySQL voorgeïnstalleerd. MySQL is momenteel de meest gebruikte database op het internet.

Webapplication Security

Voor vragen: of mail naar

Server Side Scripting

Programmeren voor het web met PHP

Die vraag krijg ik regelmatig. De meest voorkomende situaties zijn deze:

Voor vragen: of mail naar

En hoe gaan ze dit allemaal terugvinden?

Inleiding Databases en Data Base Management Systems Tabellen Wat is SQL?... 5

HTML. Formulieren. Hans Roeyen V 3.0

Dit kan gebruikt worden in zowel een ASP.NET web applicatie als een desktop applicatie.

SQL datadefinitietaal

ideal Betaal Formulier (Ondersteund o.a. ideal, MisterCash, Direct E-Banking en Credit Card)

Formulieren maken met Dreamweaver CS 4

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster

Elfde-Liniestraat Hasselt Schooljaar TINFO POKER GAME Oracle Scripts

Object Oriented Programming

opstarthandleiding mysqlworkbench November 2012 Fons van Kesteren HVA- CMD- V1 Datamodelleren

Oplossingen overzicht PHP. Oplossing KPN opgave, zonder testen van POST

1 Inleiding Installatie 21. WAMP met Apache Friends 23. XAMPP starten en controleren 26. LAMP 32 De installatie ongedaan maken 33

My CRUD functions. Hieronder ziet u een overzicht van de bestandenlijst en functies die we gemaakt hebben en gaan gebruiken.

SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC

9. MYSQL. Daarin zien we het administratie paneel van mysql.

Taak Strict or Strong. Inhoud

Mailing List Manager. Hoofdstuk 19

Structured Query Language (SQL)

Les 10 : Aanmaken van een database (deel2).

Security Pentest. 18 Januari Uitgevoerde Test(s): 1. Blackbox Security Pentest 2. Greybox Security Pentest

Javascript oefenblad 1

We moeten de accommodaties selecteren die 3 sterren hebben, en in land met ID 10 zitten.

Hoe bouw ik een component? Drs. Arjan Burger

Een database gebruiken

Formulieren en waarden posten naar een view

Handleiding DirectAdmin

Content Management System

De installatie en configuratie van een webserver

WEBSITE-DESIGN CHRIS VERMAAS & FJODOR VAN SLOOTEN B

Secure Application Roles

Versieperikelen. Bijlage C

B3 Programmeren - PHP

<input type="text" name="veldnaam" size="20" maxlength="30" value="inhoud veld">

WEBDESIGN. html tags. Neem de grondbeginselen van html door via de online cursus op de informaticasite of via instruct-online

Het omzetten van een ER-diagram naar SQL

Inhoudsopgave. Theorie Praktijk Gegevens uit Database halen DML commando s... 14

Domein API Handleiding

Webscripting. PCVO Gent & OBAC. Willem De Meyer

Foto web applicatie documentatie

SQL & Relationele datamodellen in interactieve media

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50%

index.php : paginanamen eindigen op.php Schrijven naar de browser : PHP programmeren Enkele mogelijkheden: echo en print HTML elementen gebruiken:

Gebruikershandleiding voor: Beperkte Password protectie met JavaScript

NHibernate als ORM oplossing

Bibliotheek in ProcessMaker

1. * Database worden vaak gebruikt in Client-Server architectuur.

Handleiding DirectAdmin

Gebruikers Handleiding

Gegevens uit een database tonen

1. Databanken. Wat is een databank? Verschillende opslagmethodes

Zonnepanelen Hoe krijg je de data op je website?

Web Application Security Hacking Your Way In! Peter Schuler & Julien Rentrop

PHP tekst-bewerkingen, uploaden csv-bestanden import/eport

Transcriptie:

PHP & MySQL Studievaardigheden 2014 Jan van Rijn (j.n.van.rijn@liacs.leidenuniv.nl) LIACS, Universiteit Leiden

Inleiding Voorkennis: geen Stof: dit college, www.w3schools.com en www.php.net Opdracht: maak een uitgebreide* 2 website 2014 Hoorcollege Werkcollege Deadline HTML/CSS Leiden 13 september 26 september 5 december PHP/MySQL Leiden 28 oktober 4 november 5 december HTML/CSS Den Haag 24 september 24 september 24 september PHP/MySQL Den Haag 15 oktober 15 oktober 15 oktober

Voorkennis Wie kan er... Vertellen wat associatieve arrays zijn? Vertellen wat automatische typecasting is? Een PHP script uitvoeren zonder browser? Vertellen waar "PHP" voor staat? Tekst als een plaatje uitvoeren? Uitleggen wat een Primary Key is? Uitleggen wat een SQL injection is?

Beperkingen HTML Alleen aan client-kant Geen/weinig interactie Geen programmeertaal Kan niet/lastig communiceren met Databases Bestanden Programma's

PHP PHP = PHP: Hypertext Preprocessor Oud: Perl Hypertext Preprocessor Direct geinterpreteerd Server-sided Input is PHP Output is standaard output (net als C++) of HTML Gratis Extentie:.php (bijv. index.php)

PHP in UNIX Bestand test.php: <?php echo "Hello World!\n";?> Command line: php test.php Output: rijnjnvan@huismus01:~/$ php test.php Hello World! rijnjnvan@huismus01:~/$

Hoe werkt PHP op het web? index.php in PHP PHP Parser index.php in HTML <html> <body> <?php echo '<p>hoi!</p>';?> </body> </html> <html> <body> <p>hoi!</p> </body> </html>

PHP in HTML <html> <body> <?php echo '<p>hello World!</p>';?> </body> </html>

Output HTML output: <html> <body> <p>hello World!</p> </body> </html> In de browser: Hello World!

HTML in PHP <?php echo ' <html> <body> <p>hello World!</p> </body> </html>';?>

Output HTML output: <html> <body> <p>hello World!</p> </body> </html> In de browser: Hello World!

Variabelen Automatische datatypes: Integers $var1 = 4; Doubles/Floats $var2 = 4.223161584; Characters/strings $var3 = "8"; Automatische typecasting: echo $var1 + $var3; geeft (meestal) 12 Variabelen in strings: $var = 'Tekst'; echo "Dit is $var"; geeft Dit is Tekst echo 'Dit is $var'; geeft Dit is $var

Commando s Output Output concatenatie. Einde statement ; echo Operatoren + - / * % = ++ -- += -= Logische operatoren AND OR XOR Vergelijkende operatoren ==!= <= >= < > Commentaar // of /* iets */

Commando s (2) Vergelijkende statements if() elseif() / else if() else switch() Loops while() for() foreach()

Arrays Traditioneel: $things = array(13.37, "Volvo", 4); Nu bestaan $things[0], $things[1] & $things[2], maar zomaar $things[19493] = 4; mag ook Associatief: $things = array("audi"=>2.8, "Opel"=>1.3); $things["audi"] bevat 2.8, etc. Doorlopen: foreach($array as $key => $value) echo $key. " bevat ". $value. "\n"; Multidimensionaal kan ook

Variabelen (2) Alle variabelen zijn globaal Speciale (globale) variabelen (arrays): $_SERVER Automatisch ['REMOTE_ADDR'] ['DOCUMENT_ROOT'] $_POST IP-adres Document root Via POST formulier $_POST['email'] van <input type="text" name="email"> $_GET $_GET['email'] Via URL balk van http://www.example.com/index.php?email=ik@hoi.nl

Formulieren Formulieren <form action="verwerk.php" method="post"> User: <input type="text" name="uname" /> <br /> in PHP: $_POST['uname'] Password: <input type="password name="pwd" /> <br /> in PHP: $_POST['pwd'] <input type="submit" value="submit" /> </form> action = waar de inhoud naartoe wordt gestuurd method = get (url) of post $_GET en $_POST type = text, password, radio, checkbox probeer ipv input ook: select/option en textarea

Functies Geen type bij functie-declaratie Return-statements zijn optioneel Parameters zijn optioneel Scope is uitsluitend lokaal Gebruik van globals moet expliciet worden aangegeven function dosomething($para = 10) { global $altijd; $para *= 2; $iets = $altijd + 4 + $para; return $iets; } Mag aangeroepen worden met dosomething(); of dosomething(20);

GD Library <?php $img = imagecreate(275,25); $bg = imagecolorallocate($img,102,102,153); $color = imagecolorallocate($img,255,255,255); imagefill($img,0,0,$bg); $text = " Your IP is $_SERVER[REMOTE_ADDR] "; imagestring($img,10,5,5,$text,$color); header("content-type: image/jpeg"); imagejpeg($img);?>

En nog veel meer... Datum/tijd operaties met date() Variabelen bewaren in een sessie met $_SESSION of nog veel langer met $_COOKIE E-mails versturen met mail() Bestanden openen met fopen() of direct een webpagina ophalen met file_get_contents() File uploads verwerken met $_FILE Nog heel veel meer extra functies: strlen() substr() str_replace() strtotime() explode() implode()

PHP Foutmeldingen Error compile-error Warning warning Notice mini-warning Maak een bestand in je public_html folder met de naam.htaccess met als inhoud: php_flag display_errors on En zet in je.php-file bovenaan: <? error_reporting(e_all)?> (of E_WARNING of E_ERROR) Verwijder dit bestand weer wanneer je website af is!

PHP Samenvatting Goed, want: Minder regels Meer vrijheid Meer eenvoud Grote community Gratis Minder goed, want: Minder snelheid Grotere kans op fouten

Pauze?

MySQL SQL = Structured Query Language MySQL is een gratis variant Database bevat tabellen Tabel bevat rijen en kolommen Kolommen hebben een datatype Rijen zijn de instanties Query: verzoek aan database College: Databases (2 e semester) Tabel MySQL Database

Tabel: People id INT naam VARCHAR(40) email VARCHAR(100) datum DATE 1 Kate kate23@live.com 2010-08-15 2 Jack shephard16@gmail.com 2010-04-02 3 John john815@lockecorp.com 2007-01-05 4 Shannon shanny23@gmail.com 2008-08-23 5 Libby libzonyourhipz@hotmail.com 2009-02-03

Hoe werkt PHP/MySQL? MySQL Database index.php in PHP PHP Parser index.php in HTML <html> <body> <?php $sql = "SELECT welcome FROM texttable"; $res = $mysqli->query( $sql ); $rec = $mysqli->fetch_array($res); echo '<p>'. $rec['welcome']. '</p>';?> </body> </html> <html> <body> <p>hoi!</p> </body> </html>

MySQL verbinding maken <?php $server = 'mysql.liacs.leidenuniv.nl'; $username = 'rijnjnvan'; // username $password = 'S0M3_S3CR3T'; // from email $database = 'rijnjnvan'; // same as username $mysqli = new mysqli($server, $username, $password, $database); if ($mysqli->connect_errno) { die('could not connect: '. $mysqli->connect_error); } $mysqli->close();?>

MySQL Query uitvoeren Query zonder uitvoer: $sql= "UPDATE mytable SET seen='0' WHERE id='1'"; $mysqli->query($sql) or die ($mysqli->error); Query met meerdere rijen uitvoer: $sql= "SELECT * FROM mytable"; $res = $mysqli->query($sql) or die ($mysqli->error); while($rec = $mysqli->fetch_array($res)){ echo $rec['mycolumn1']. '<br />'; } // while

Tabel aanmaken CREATE TABLE people ( id int auto_increment, naam varchar(40), email varchar(100), datum date, PRIMARY KEY (id) ) auto_increment verhoogt automatisch de waarde van die kolom bij een INSERT PRIMARY KEY is een unieke kolom

Tabel: People id INT naam VARCHAR(40) email VARCHAR(100) datum DATE 1 Kate kate23@live.com 2010-08-15 2 Jack shephard16@gmail.com 2010-04-02 3 John john815@lockecorp.com 2007-01-05 4 Shannon shanny23@gmail.com 2008-08-23 5 Libby libzonyourhipz@hotmail.com 2009-02-03

Rij invoegen INSERT INTO people (id, naam, email, datum) VALUES ('', 'Jan', 'j.n.van.rijn@liacs.leidenuniv.nl', '1987-06-24')

Tabel: People id INT naam VARCHAR(40) email VARCHAR(100) datum DATE 1 Kate kate23@live.com 2010-08-15 2 Jack shephard16@gmail.com 2010-04-02 3 John john815@lockecorp.com 2007-01-05 4 Shannon shanny23@gmail.com 2008-08-23 5 Libby libzonyourhipz@hotmail.com 2009-02-03 6 Jan j.n.van.rijn@liacs.leidenuniv.nl 1987-06-24

Rijen bijwerken UPDATE people SET email = 'janvanrijn@gmail.com' WHERE naam = 'Jan'

Tabel: People id INT naam VARCHAR(40) email VARCHAR(100) datum DATE 1 Kate kate23@live.com 2010-08-15 2 Jack shephard16@gmail.com 2010-04-02 3 John john815@lockecorp.com 2007-01-05 4 Shannon shanny23@gmail.com 2008-08-23 5 Libby libzonyourhipz@hotmail.com 2009-02-03 6 Jan janvanrijn@gmail.com 1987-06-24

Rijen verwijderen DELETE FROM people WHERE naam = 'Jan'

Tabel: People id INT naam VARCHAR(40) email VARCHAR(100) datum DATE 1 Kate kate23@live.com 2010-08-15 2 Jack shephard16@gmail.com 2010-04-02 3 John john815@lockecorp.com 2007-01-05 4 Shannon shanny23@gmail.com 2008-08-23 5 Libby libzonyourhipz@hotmail.com 2009-02-03

Rijen selecteren SELECT naam, datum FROM people WHERE datum >= '2009-01-01' ORDER BY datum DESC, naam ASC LIMIT 0,10 Bij WHERE mogen < > = >=!= gebruikt worden, alsmede OR en AND ORDER BY mag ook op meerdere kolommen: ORDER BY datum ASC, Naam DESC

Tabel: People naam VARCHAR(40) datum DATE Kate 2010-08-15 Jack 2010-04-02 Libby 2009-02-03 $mysqli->num_rows()geeft 3

Rij invoeren Typisch form-data <input type='text' name='username' value='jan@email.net'> Wordt verstuurd naar URL achter action. $_POST['username'] geeft 'jan@email.net' $sql = "INSERT INTO people (`id`,`name`) VALUES ('', ". $_POST['username']. "); "; $mysqli->query( $sql );

SQL JOINS FOREIGN KEY GROUP BY Meerdere databases Relational Algebra Indexes... En nog veel meer... College: Databases (2 e semester)

SQL Injections HTML-form geeft via PHP data aan MySQL. Stel: $_POST['naam'] heeft waarde '; DELETE TABLE people; ' en de query is SELECT * FROM people WHERE naam = '". $_POST['naam']. "';" Dan wordt de query: SELECT * FROM people WHERE naam = ''; DELETE TABLE people; ''; Daarom altijd: $mysqli->real_escape_string( $_POST['naam']) echte injection: iets met Google en?q=sql+injection

MySQL @ LIACS Server: mysql.liacs.leidenuniv.nl Username: liacs_username Password: received_by_email Database: liacs_username Je eerste query (of doe dit via PHPMyAdmin): set password = password("<your new password>"); MySQL via de command line: mysql -h mysql -u liacs_username p

PHP & MySQL @ LIACS tips Hernoem index.html naar index.php chmod 755 index.php Web: <?php Console: <?php chmod 644.htaccess (of iets minder rigoreus) http://liacs.leidenuniv.nl/phpmyadmin Na het veranderen van je wachtwoord in PHPMyAdmin, moet je soms je cache/cookies legen

Opdracht (2) Schrijf PHP/MySQL script(s) Gebruik minimaal één PHP- en één eigen functie Gebruik minimaal één waarde uit $_SERVER Doe iets met associatieve arrays Maak een MySQL tabel met 4 kolommen Toon gegevens uit de database op je site m.b.v. PHP Geef de gebruiker de mogelijkheid om records toe te voegen met een formulier (veilig!) Stuur je.php file(s) op naar je studentassistent Liefhebbers: probeer ook eens PHP en MySQL in UNIX of de GD library. Of een IDE (bijv. Netbeans)

How to Start 1. Hernoem al je.html bestanden tot.php 2. Niet meer lokaal in browser zichtbaar 3..htaccess bestand voor php error codes 4..html bestanden nog steeds op server -> verwijderen (SSH) 5. Gebruik PhpMyAdmin om database tabel(len) te maken en enkele test data in te voeren 6. Lees deze data uit via de website 7. Maak een formulier waarmee rijen kunnen worden toegevoegd 8. Verwijder.htaccess bestand zodra klaar

Links www.php.net Officiele PHP-documentatie www.w3schools.com/php Tutorials (ook MySQL) http://php.net/functienaam Documententatie voor functienaam http://liacs.leidenuniv.nl/phpmyadmin - PHPMyAdmin Voor gemakkelijk beheer van je database Deze slides: http://www.liacs.nl/~jvrijn/pdf/phpmysql.pdf