Webbprogrammering
Sahand Sadjadee
Agenda
●
●
●
●
●
●
●
●
Webb
“The World Wide Web (WWW) is a network of online content that is formatted in HTML and accessed via HTTP. The term
refers to all the interlinked HTML
pages that can be accessed over the Internet.” Techopedia
Webb
http://www.worldwidewebsize.com/
Webb
En webbsida består av...
Webb - Webbläsare
Webbläsare förstår bara HTML, CSS
och javaskript.
Webb - HTML
<html> <!-- Opening tag -->
<head>
<title>Sahand’s diary</title>
</head>
<body>
<h1>Welcome to my page</h1>
<div>
<p>
I’ve got alot to say...
</p>
</div>
</body>
</html> <!-- Closing tag -->
Webb - HTML
<html> <!-- Opening tag -->
<head>
<title>Sahand’s diary</title>
</head>
<body>
<h1>Welcome to my page</h1>
<div>
<p>
I’ve got alot to say...
</p>
</div>
</body>
</html> <!-- Closing tag -->
Webb - CSS
Webb - Javaskript
Webb
En webbsida kan innehålla olika sorters media, bilder,
video och ljud.
<a href=”home.html”>
<img src=”/img/homepage.jpg”>
</a>
Webb
Oavsett hur många gånger en statisk
samma!
webbsida begärs eller av hur många klienter, ska resultatet vara
Webb
En dynamisk
webbsida ska returnera olika resultat beroende på fått parametrarna när den begärs.
Webbplatser
En webbplats består av ett antal webbsidor, statistika OCH dynamiska, som skaffar ett antal tjänster och uppgifter
för användarna.
Serverskript
●
●
Kör ett program på servern och resultatet skickas till klient
PHP, Python, Ruby, Perl, ASP, C, Java, …
Men varför?
Vad får vi då?
Serverskript
VS
Serverskript
Serverskript
●
●
●
●
●
●
●
Dynamiska webbsidor.
Tar kraft av server inte klient.
Kan användas tillsammans med databas på servern.
Datan och logiken finns på server-sidan.
○
Tillgång till databasen kan och ska kontrolleras.
○
Busniess-logiken finns på server-sidan och kan inte ses av användaren. Det hjälper bättre säkerhet.
Klienten kan bara se resultatet av koden.
Hantera och reagera på data som skickas från klient.
Det är så vanligt att Serverskript och HTML/CSS/Javascript är kombinerad. E.g. PHP, JSP, ASP, ASP .NET.
Men varför behöver vi skicka data till server-sidan för att få dynamiska webbplatser fungera?
PHP - Hypertext Pre Processor
●
●
●
●
●
●
Skrivs tillsammans med HTML
Resultat - HTML
Free Software
Stort, populärt och användbart
http://php.net
Kan användas med databaser (MySQL).
PHP - Hypertext Pre Processor
PHP - Hypertext Pre Processor
PHP - Hypertext Pre Processor
Query Strings
https://www.flygresor.se/showresult.php?id=195515877
Formulär
●
●
●
●
●
För kort text:
○ <input type=”text” .../>
För lång text:
○ <textarea ...></textarea>
För ett och endast ett av flera alternativ:
○ <input type=”radio” .../>
För inget, ett eller flera alternativ:
○ <input type=”checkbox” .../>
För rullgardinsmeny:
○ <select><option ...>...</option></select>
Ta emot formulär med PHP
●
●
●
●
Formuläret skickas till action
○ <form action=”ta_emot.php” .../>
Formuläret skickas med submit
○ <input type=”submit” .../>
Värden hämtas med
○ $myvalue = $_GET[’myvalue’];
○ eller
○ $myvalue = $_POST[’myvalue’];
beroende på vad man satt för method
○ <form ... method=”post” ...>
○ <form ... method=”get” ...>
Formulär
●
För tillgänglighet och användbarhet tänk på att:
● man ska kunna klicka på label-text för att markera ett fält. Kod:
○ <label for=”example”>My label</label>
○ <input id=”example” .../>
● Eller
○ <label><input id=”example” .../>My label</label>
● ha en fungerande layout
● validera data innan skickas.
Session
●
●
●
Det är jätte vanligt att man behöver besöka flera webbsidor för att göra en viss uppgift. E.g.
när man vill handla varor från en eshop och lägger sina utvalda varor i vagnen.
Sanningen är att webbservrar är jätte dum. De kommer inte ihåg användarna och det är
därför när användaren lämnar en php sida och öppnar någon andra sida har webbservern
ingen aning om vad användaren hade gjort innan.
Vad kan vi göra om det?
Session
Session på IDA
●
●
●
●
För att köra session på IDA måste man ange session_save_path(‘dir’); till en katalog på sitt
konto där World/Others har läs och skrivrättigheter.
Starta eller återuppta en session:
○ session_start();
• Lagra:
○ $_SESSION[‘value’] = $value;
• Hämta:
○ $value = $_SESSION[‘value’];
Validering av data med serverskript(säkerhet)
●
●
●
Användaren kan skicka fel data (ibland med avsikt)
Serverskript kan skicka fel data
Vad bör valideras?
○ Data man inte kan lita på att den är korrekt
○
○
●
Data som kan ställa till problem om den inte
är korrekt
Nästan all data.
Det är också jätte viktigt att validera data på
klient-sidan.
Validering av data på klientsidan (utförande)
●
●
●
Man kan validera data innan den skickas som en
form.
Validering kan göras genom att använda Javascript
och/eller HTML. 3rd party bibliotek kan också
användas. E.g. JQuery validator.
HTML5 hjälper mycket för att förenkla validering.
Cross-site Scripting ( XSS )
SQL Injection
Funktioner
●
●
●
●
●
●
is_int(n) - är n ett heltal
is_float(n), is_bool(n)
intval(s) - returnerar heltalsvärdet av s
floatval, doubleval
ctype_alnum(text) - kollar om alla tecken i text är bokstäver eller siffror
Finns även: ctype_alpha, ctype_digit, ctype_lower, med flera
Fler funktioner
●
●
●
●
●
●
●
strlen(s) - kollar längden på s
trim(s) - tar bort mellanslag i början och slutet av s
strpos(s) - letar reda på vilken position ett tecken, eller flera, har i s
addslashes(s) - lägger till backslashes på kritiska tecken - \” \’
htmlspecialchars(s) - gör om s till html-specialtecken, t ex < blir <
is_email(s)
Skriv egna funktioner
Kod ni inte skrivit själva
●
●
●
Gör alltid en kommentar i koden var ni fått den ifrån om ni inte skrivit den själva
(All kod som ni inte kommenterat en källa för räknas som att ni redovisar som eget
arbete.)
●
Att använda kod från andra studenter är
ej OK.
Tack och lycka till!