Ny lärobok: Webbserverprogrammering 1 med PHP
Nu är min nya lärobok upptryckt och kan köpas. Den behandlar Webbserverprogrammering med PHP och skiljer sig från andra böcker i ämnet på några sätt. Jag går inte igenom språkets alla detaljer. Det behövs inte. PHP har en ypperlig manual. I stället vill jag lära mina läsare hur de kan använda manualen och vad de behöver tänka på för att bygga säkra PHP-appar redan från början.
När jag själv en gång i tiden lärde mig PHP så var det genom en bok som ända sedan dess tjänat som skräckexempel för mig. Jag följde dess lärdomar och blev en usel webbutvecklare! Jag blev tvungen att lära om och lägga bort mina dåliga vanor. Det som jag lärde mig gjorde mina webbplatser vidöppna för olika slags attacker och dessutom skrev jag svårunderhållen grötkod.
Filosofin bakom boken
I min lärobok så försöker jag följa några viktiga principer:
-
Learning by doing. Ett minimum av förklaringar och installation föregår de
första kodexemplen. Visst innebär detta att läsaren ser en del kod som hon eller han till en
början inte förstår fullt ut, men jag tror inte det är nödvändigt för att lära sig webbutveckla.
Jag tror det är mer stimulerande att göra något
riktigt
redan från början än att bygga exemplen kring programmeringspråkets uppbyggnad. - Känsla för språket och miljön. I stället för att börja med detaljerade genomgångar av syntax, värdetyper och styrstrukturer så vill jag förmedla ett fågelperspektiv och kunskaper om webben som körmiljö. Jag försöker gå från helheter mot detaljerna även om det inte alltid är helt genomförbart. Av detta skä finns det också vissa principiella resonemang om exempelvis programmeringsparadigm eller likheter och skillnader mellan PHP och andra språk.
- Jag vill också att eleven ska få en förmåga att bedöma värdet av information som hittas på nätet. Precis som för HTML och CSS så finns det många artiklar och kurser på nätet som är föråldrade eller i värsta fall nya men skrivna av någon som inte är kompetent nog att lära ut till andra – att låta en blind leda en blind är aldrig en god ide! Jag pekar på de goda resurserna och de viktiga principerna med en förhoppning om att mina läsare sedan ska kunna söka sig fram till bra svar på de frågor och problem som uppstår.
-
Att bli en god webbutvecklare handlar om att bli en del av en gemenskap. Av detta skäl
berättar jag om PHP:s historia men det hjälper också till att skapa den ovan nämnda känslan
och bedömningsförmågan. Jag har lyckats om en läsare ser ett gammalt kodexempel och för sig
själv tänker att
så gjorde man det momentet för ett par år sedan, men om jag byter ut användningen av
.$_GET
motfilter input
, så kan jag använda resterande delar av exemplet - Alla nya projekt ska använda UTF-8. Tyvärr är PHP i grundutförande gjort för ISO-8859-1. Många läroböcker lär först ut strängar och strängfunktioner som om alla använde sig av en teckenkodning där en byte alltid är ett tecken.
Säkerhet och god praxis
Dessa aspekter betonas genomgående. Varje enskilt moment beskrivs ur säkerhetsperspektiv och den övergripande arkitekturen följer konsekvent principen filter input, escape output. Boken har dessutom ett övergripande teorikapitel om säkerhet.
Ett exempel på hur min bok skiljer sig från andra är att jag beskriver hur man på ett säkert sätt kan ta emot formulärdata och skicka det vidare med mejl. SMTP-protkollet är lika öppet för manipulation som SQL och dåligt skrivna kontaktsidor används gärna för att spamma tredje part, ofta utan att den som driver webbplatsen ens vet om det.
För lösenordshantering visar jag hur de kan skapas och kontrolleras mycket enkelt med den säkraste
krypteringsalgoritmen, för närvarande bcrypt,
och alltid kompletteras med ett slumpmässigt skapat salt
.
De råd och tips som ges om god praxis i övrigt är sådant som jag samlat på mig under en lång rad av år som utvecklare där jag också läst böcker, artiklar och bloggar skrivna av några av de mest ansedda inom PHP-gemenskapen. Numera samlas många av dessa råd av PHP Framework Interop Group i form av kodstandarderna PSR. På nybörjarnivå följs dock inte dessa slaviskt.
Specifika frågor
Bygger boken vidare på Webbutveckling 1?
Den fortsätter utvecklingen av samma webbplats, men den kan användas även om man inte först läst Webbutveckling 1. HTML och CSS-kunskaper på motsvarande nivå tas dock för givna.
Går boken igenom objektorientering
Boken lär ut användningen av objekt, men stannar vid mellanläget objektbaserad utveckling. Boken tipsar om designmönster men som en framtida vidareutveckling av läsarens kunskaper.
Vilken databas används?
Boken går igenom alternativen för datalagring, inklusive NoSQL, men än så länge är relationsdatabasen det mest använda. Boken använder därför MySQL eller MariaDB. (Den reder ut turerna om varför MariaDB skapades.)
Vilka program behöver installeras?
På Linux finns allt du behöver i din distribution. För Windows och Mac OS X rekommenderar jag XAMPP. Apple erbjuder visserligen inbyggt PHP-stöd men det ger dig en föråldrad version av PHP.
Måste man gå på gymnasiet för att ha nytta av boken
Nej, definitivt inte. Även om boken är anpassad efter kursplanen, så hoppas jag att kursplanen jag skrev i sin tur är anpassad efter verkligheten!
Täcker boken alla moment i kursplanen?
Nästan. Den går inte igenom utvecklingsprocessen och den nämner bara CMS:er och ramverk flyktigt. Så 9 moment av 11 täcks av boken, vilket inte är så illa, väl?
Hur blir det med arbetsbok, videos och lärarhandledning?
Arbete pågår. Arbetsbok bör vara klar före september månads utgång (2013). Videos kommer att läggas upp successivt. Lärarhandledningens tidsplan är mer osäker. Den ska innehålla mer än bara svar på arbetsbokens frågor och det tar en liten stund att skriva.
Borde jag köpa boken?
Absolut! Köp den hos förlaget på Skolportalen.
Innehållsförteckning
- Förlagets förord
- Författarens förord
- Att använda detta läromedel
- Typografiska konventioner
- Webbplats
- Till sist: Vad denna bok inte är
- Innehållsförteckning
- Ämnesplan och kursplan
- Ämne – Webbteknik
- Kursplan för Webbserverprogrammering 1
- 1 Kom igång med PHP
- 1.1 Installation av PHP på Linuxdatorer
- 1.2 Installation av PHP på Windows och Mac OS X
- 1.3 Ett första PHP-skript
- 1.4 En komplett webbsida med inslag av PHP
- 1.5 Variabler och citationstecken (enkel- och dubbelfnuttar)
- 1.6 Några korta anmärkningar om PHP som språk (syntax och kompilering)
- 1.7 OK, hur lär jag mig detta?
- 1.8 En bra editor för PHP
- 1.9 Katalog och filstruktur
- 1.10 Lästips
- 2 Några ytterligare exempel
- 2.1 Visa datum, månad, tid, etc.
- 2.2 Ett slumpmässigt valt citat
- 2.3 Räkna antalet tecken i ett namn och skriv det baklänges
- 2.4 Lästips
- 3 PHP:s historia, versioner, styrkor och svagheter
- 3.1PHP:s historia
- 3.2Vem använder PHP
- 3.3 Versionshistorik
- 3.4 Hur bra är PHP?
- 4 Att använda PHP som ett mallsystem
- 4.1 Återanvändning av kod mellan olika sidor med mallar
- 4.2 Samma sida, men olika innehåll
- 4.3 Läs mer
- 5 PHP som programmeringsspråk
- 5.1 Att växla till PHP-läge
- 5.2 Satser, block och kommentarer
- 5.3 Värdetyper, variabler, konstanter och uttryck
- 5.4 Variablers namngivning och räckvidd (scope)
- 5.5 Tilldelning
- 5.6 Några operatorer
- 5.7 Jämförelser, sant och falskt
- 5.8 Finkod och fulkod
- 5.9 Läs mer
- 6 Säkerhetstänk
- 6.1 Problemkällor
- 6.2 Principer
- 6.3 Försvarsåtgärder
- 6.4 Läs mer
- 7 Strängar
- 7.1 En sträng är en sekvens av tecken
- 7.2 UTF-8 kräver mb-funktionerna
- 7.3 Specialtecken
- 7.4 Verifikation av välformad UTF-8
- 7.5 Ta bort farliga delar av en sträng
- 7.6 Läs i manualen
- 7.7 Extra läsanvisning: Se vad manualen säger om kontrollstrukturer innan du fortsätter
- 8 Arrayer
- 8.1 ”Min array är inte lik din array”
- 8.2 Definiera arrayer, lägg till, ändra och ta bort värden
- 8.3 Läsa och skriva till array-element
- 8.4 Använda arrayvärden i textsträngar
- 8.5 By reference mellan array-medlem och enkel variabel
- 8.6 Loopa genom arrayer med foreach
- 8.7 Bryta en loop i förtid
- 8.8 Några array-funktioner
- 8.9 Array-liknande strukturer
- 8.10 Läs mer
- 9 Funktioner i PHP
- 9.1 En funktions funktion
- 9.2 Utnyttja variablernas begränsade räckvidd (scope)
- 9.3 Statiska variabler
- 9.4 Sök i manualen, din funktion finns nog redan där!
- 9.5 Att läsa PHP-manualen om funktioner
- 9.6 Att hellre returnera än skriva
- 9.7 Dokumentera dina funktioner
- 9.8 Definiera funktioner (och klasser) för sig
- 9.9 Läs mer
- 10 Objekt i PHP
- 10.1 Vad är ett objekt i PHP
- 10.2 OO syntax i PHP kontra andra språk
- 10.3 Klasser – objekt av en viss typ
- 10.4 Metoder och $this
- 10.5 Magiska metoder
- 10.6 Klasskonstanter och statiska metoder
- 10.7 Derefencing (översättning saknas)
- 10.8 Objekt skickas alltid som referens
- 10.9 Läs mer om objekt
- 11 Felhantering
- 11.1 Att förebygga och hantera logikfel
- 11.2 Fel (errors)
- 11.3 Undantag (exceptions)
- 11.4 Error eller exception – när passar vad?
- 11.5 Tekniska fel och felmeddelanden till slutanvändaren
- 11.6 Läs mer
- 12 Databaser och datalagring
- 12.1 Databaser och databashanterare (DBMS)
- 12.2 Alternativ för datalagring
- 12.3 MySQL och MariaDB
- 12.4 PhpMyAdmin
- 12.5 Datatyper i MySQL/MariaDB
- 12.6 PHP och databasen
- 12.7 Läs mer
- 13 Att ansluta till en databas och hämta värden
- 13.1 Välj ett modernt gränssnitt!
- 13.2 Ett enkelt exempel
- 13.3 En komplett funktion för att ansluta (en aning ”kokbok”)
- 13.4 Prepared statements
- 13.5 Loopa igenom databasresultat
- 13.6 Snyggare visning av namnet på den som skrivit ett inlägg
- 13.7 Läs mer
- 14 Formulär och PHP
- 14.1 Ett första exempel
- 14.2 Läs indata med filter-funktionerna
- 14.3 Don’t, just don’t…
- 14.4 När formulärdata ska få innehålla HTML-kod
- 14.5 Sätt inte användaren på pottkanten
- 14.6 Hantera framgången och undvik CSRF
- 14.7 Lästips
- 15 Cookies, Inloggning och lösenordshantering
- 15.1 Cookies är omstridda men nödvändiga
- 15.2 Vad ska ett autentiseringssystem kunna?
- 15.3 Bygga eget eller låna?
- 15.4 Sessioner
- 15.5 Inloggning för läxhjälpens administratörer
- 15.6 Säkra lösenord
- 15.7 Lösenordskontroll
- 15.8 Kontroll av att någon är inloggad och har behörighet
- 15.9 Behörigheter
- 15.10 Läs mer
- 16 Från formulär till databas
- 16.1 Visa formulär
- 16.2 Hantera bloggposter
- 16.3 Formulärhanteringen
- 16.4 Radera poster
- 16.5 Lästips
- 17 Skicka mejl med PHP
- 17.1 Mejlprotokoll, SMTP och SMTP-injektion
- 17.2 PHP:s mejlfunktioner
- 17.3 Kontaktformulär för Läxhjälpen
- 17.4 Läs mer
- 18 Att ha kul med PHP
- 18.1 Snygga URL:er
- 18.2 Skapa annat än HTML-kod
- 18.3 Ajax
- 18.4 Webbtjänster – att kommunicera med andra servrar
- 18.5 Internationalisering och lokalisering
- 19 Infrastruktur för utveckling
- 19.1 En ”riktig” IDE
- 19.2 Virtuella värdar
- 20 Checklista för säkerhet och kodkvalitet
- 20.1 Preliminär kontroll
- 20.2 Kodkvalitet, egen kontroll
- 20.3 Automatisk kontroll
- 20.4 Extern kontroll
- 20.5 Kontroll av webbhotell
- 20.6 SSL
- 21 Appendix
- 21.1 Installation och konfiguration
- 21.2 Kör PHP-kod online
- 21.3 Xdebug
- 21.4 FirePHP
- 21.5 Git och Github
- Index
Publicerad: 2013-09-05 15:26
Uppdaterad: 2013-09-06 10:16