PHP Beginners handleiding
Een handleiding voor de eerste kennismaking met PHP.
Up-to-date versie: PHP Beginnershandleiding
Inhoudsopgave
- Inleiding
- Mijn eerste PHP script
- Variabelen
- Statements
- Loops
- Arrays
- Functies
- Formulieren
- Superglobals
- Sessies nader bekeken: een eerste loginscript
- Netjes scripten
- Debuggen: het oplossen van PHP fouten
- Slotwoord en referenties
56 reacties op 'PHP Beginners handleiding'
Wederom een prachtige tutorial!
Het enige dat ik er aan toe zou willen voegen, is het gebruik van exit() n? een header('Location: '). De bezoeker van de pagina stuur je door naar een andere pagina, stop de rest van het script dan ook. Niemand die het resultaat krijgt te zien, ook niet als er ergens nog iets fout gaat in de rest van het script...
Dus altijd exit() opnemen na het doorsturen:
Het enige dat ik er aan toe zou willen voegen, is het gebruik van exit() n? een header('Location: '). De bezoeker van de pagina stuur je door naar een andere pagina, stop de rest van het script dan ook. Niemand die het resultaat krijgt te zien, ook niet als er ergens nog iets fout gaat in de rest van het script...
Dus altijd exit() opnemen na het doorsturen:
Ik lees je handleiding nu even door en zie dat je zegt dat je alleen commentaar kan maken met // en /* */. Maar meestal gebruik ik voor als ik iets aan het testen ben, en iets weg moet halen het hekje: #.
Kan # niet worden gebruikt voor commentaar ofzo? Want als ik zoek met google zeggen veel pagina's dat je // en /* */ moet gebruiken, net zoals jij.
Kan # niet worden gebruikt voor commentaar ofzo? Want als ik zoek met google zeggen veel pagina's dat je // en /* */ moet gebruiken, net zoals jij.
# kun je ook gebruiken, dat had je zelf toch ook al ontdekt? Je scripts werken of werken niet...
Ik gebruik overigens altijd de volgende:
Voor een enkele regel met commentaar volstaat //
Edit: Door de syntax /** zal Zend Studio de blokken commentaar automatisch inklappen (instelling). Eclipse doet dit bij mijn weten ook, maakt de code dus weer wat leesbaarder, toon het commentaar alleen wanneer je het nodig hebt.
Ik gebruik overigens altijd de volgende:
Voor een enkele regel met commentaar volstaat //
Edit: Door de syntax /** zal Zend Studio de blokken commentaar automatisch inklappen (instelling). Eclipse doet dit bij mijn weten ook, maakt de code dus weer wat leesbaarder, toon het commentaar alleen wanneer je het nodig hebt.
Ziet er goed uit. Echter is dit een beetje een raar voorbeeldje:
if(!($x > 5))
Wie wil er nu controleren of een getal niet groter is dan 5? Over het algemeen gebruik je dan $x <= 5.
Dan zou ik dit voorbeeldje:
Niet gebruiken bij de while loop. Zoals je later laat zien is de for-loop hier speciaal voor bedoeld, en mensen herinneren zich het eerste voorbeeld wat ze zien beter dan het tweede.
Verder uit, uit, uitstekend ;-)
if(!($x > 5))
Wie wil er nu controleren of een getal niet groter is dan 5? Over het algemeen gebruik je dan $x <= 5.
Dan zou ik dit voorbeeldje:
Niet gebruiken bij de while loop. Zoals je later laat zien is de for-loop hier speciaal voor bedoeld, en mensen herinneren zich het eerste voorbeeld wat ze zien beter dan het tweede.
Verder uit, uit, uitstekend ;-)
Quote:
# kun je ook gebruiken, dat had je zelf toch ook al ontdekt? Je scripts werken of werken niet...
Mjah, maar ik wil nog wel eens dingen uit het stenen tijdperk gebruiken. Ik kon er iig niks over vinden, dus wist ik het niet zeker. Maar iid het werkt altijd.
Ik gebruik het meestal voor als ik test met "instelligen", makkelijk voor verschillende waarde. Ook vind ik het handig om te zien dat dat een aanpassing of hack is.
PHP Newbie:
Het is dan ook maar een voorbeeldje, en voor beginners is het waarschijnlijk makkelijker om voort te borduren op een voorgaand voorbeeld, dan een nieuw voorbeeld te zien.Echter is dit een beetje een raar voorbeeldje:
if(!($x > 5))
if(!($x > 5))
Maar je hebt wel gelijk, ik heb er even een opmerking bij gezet.
Wat betreft die loop, dat ben ik niet met je eens. Wie zegt dat een for-loop hier speciaal voor bedoeld is? Die for-loop is een andere manier om precies hetzelfde te doen. Lezers moeten hier zelf maar de keuze maken welke methode ze makkelijker, duidelijker en/of overzichtelijker vinden...
@Frank: bovendien is die notatie van commentaar geschikt voor interpretatie met PHP Doc. Maar dat is alleen interessant voor gevorderde gebruikers en dus niet geschikt voor een beginners tutorial.
Newbie, ik weet precies wat een for-loop is en wat het doet. Hij kan zelfs veel uitgebreider zijn dan dat jij daar in je voorbeeld geeft...
Maar het is en blijft een andere schrijfwijze voor precies hetzelfde. Je zou immers ook een for-loop kunnen gebruiken om de rijen uit een sql resultaat set te fetchen. Dat de ene loop fijner in het gebruik is dan de ander in een bepaalde situatie, doet daar niets aan af en merk je ook als beginnende programmeur snel genoeg.
Het zijn natuurlijk enkel voorbeelden die ik geef en ik blijf bij mijn standpunt dat het makkelijker is voor een beginner om 2x hetzelfde op een verschillende manier te bekijken, dan dat er twee totaal verschillende voorbeelden gegeven worden.
Maar het is en blijft een andere schrijfwijze voor precies hetzelfde. Je zou immers ook een for-loop kunnen gebruiken om de rijen uit een sql resultaat set te fetchen. Dat de ene loop fijner in het gebruik is dan de ander in een bepaalde situatie, doet daar niets aan af en merk je ook als beginnende programmeur snel genoeg.
Het zijn natuurlijk enkel voorbeelden die ik geef en ik blijf bij mijn standpunt dat het makkelijker is voor een beginner om 2x hetzelfde op een verschillende manier te bekijken, dan dat er twee totaal verschillende voorbeelden gegeven worden.
Leuke tut, maar je formulier afhandeling (hoofdstuk 8) is wel schandalig. Je controleert of er een formulier gepost is (nee, je controleert of de REQUEST METHOD 'POST' is, dat is dus al niet perse hetzelfde). Dan controleer je ALLE POST vars (waarom? Wie weet hoeveel het er zijn!?). En wat je niet controleert, is het belangrijkste (het enige belangrijke zelf): bestaan je vars wel?? Je weet niet eens of je voornaam en achternaam zijn gepost! En toch durf je ze te printen! Enorm jammer dat je het nu iedereen verkeerd aanleert :(
Een goede methode:
Wat ik ook nog wel eens wil gebruiken (als je veel of veranderende vars nodig hebt:
Je kan er ook een functie van bouwen, met twee parameters:
Hoe je het ook wil doen, het is zo zonde om wie dan ook het verkeerd aan te leren: niet controleren of je vars wel bestaan!
Voor de rest ben ik het best wel met je eens :)
Een goede methode:
Code (php)
Wat ik ook nog wel eens wil gebruiken (als je veel of veranderende vars nodig hebt:
Code (php)
Je kan er ook een functie van bouwen, met twee parameters:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
function checkGlobalParams( $f_arrSource, $f_arrRequired )
{
// Hier de code van hierboven met arrSource ipv POST en arrRequired ipv arrNodig
}
?>
function checkGlobalParams( $f_arrSource, $f_arrRequired )
{
// Hier de code van hierboven met arrSource ipv POST en arrRequired ipv arrNodig
}
?>
Hoe je het ook wil doen, het is zo zonde om wie dan ook het verkeerd aan te leren: niet controleren of je vars wel bestaan!
Voor de rest ben ik het best wel met je eens :)
t_vercetti:
Ik kan eigenlijk niets anders doen dan je compleet gelijk geven! Ik was inderdaad een 'klein subtiel elementje' in de formulier controle vergeten :-)Hoe je het ook wil doen, het is zo zonde om wie dan ook het verkeerd aan te leren: niet controleren of je vars wel bestaan!
Inmiddels heb ik hoofdstuk 8 aangepast en je voorbeeld er (deels) in verwerkt, bedankt voor je kritiek.
Mocht je nog meer dingen zien, dan hoor ik dat natuurlijk graag!
@t_vercetti: Een goede methode gebruikt natuurlijk geen exit() om het script bruut af te kappen wanneer er ergens een veld niet is ingevuld...
Voor het controleren of er een formulier is verstuurd, gebruik ik altijd de controle op de POST-methode i.c.m. een hiddenfield om te zien w?lk formulier er is verstuurd. Dan kun je eenvoudig met meerdere formulieren op 1 pagina werken zonder in de knoop te komen. Tevens heb je geen gekloot met browsers wanneer er met 'enter' een formulier wordt verstuurd, dan krijg je namelijk lang niet altijd de naam van de submit-knop mee.
Voor het controleren of er een formulier is verstuurd, gebruik ik altijd de controle op de POST-methode i.c.m. een hiddenfield om te zien w?lk formulier er is verstuurd. Dan kun je eenvoudig met meerdere formulieren op 1 pagina werken zonder in de knoop te komen. Tevens heb je geen gekloot met browsers wanneer er met 'enter' een formulier wordt verstuurd, dan krijg je namelijk lang niet altijd de naam van de submit-knop mee.
pgFrank:
Ik heb er nog even mee zitten spelen, en in de meeste gevallen zal dit inderdaad prima voldoen, aangezien alle velden uit een formulier gewoon in de $_POST array voorkomen. Het enige dat je echter niet hebt is een controle op welke velden een formulier zou moeten bevatten. Voor het controleren of er een formulier is verstuurd, gebruik ik altijd de controle op de POST-methode i.c.m. een hiddenfield om te zien w?lk formulier er is verstuurd.
Stel nu dat je namen van inputvelden in een formulier wijzigt zonder dat je dat ook in de afhandeling van je formulier doet, dan zal de afhandeling in de soep lopen. Als je ook in de verwerking aangeeft welke velden een formulier moet bevatten, kun je daarop controleren.
Een ander voordeel ten opzichte van het doorlopen van de complete $_POST array, is dat enkel bewerkingen uitgevoerd worden op $_POST waarden waarvan jij gezegd heb dat ze in het formulier zouden staan. Op die manier wordt het onmogelijk om van buitenaf andere $_POST variabelen naar je script te sturen en deze door de controles te laten gaan.
Wat je zegt over het werken met meerdere formulieren in 1 pagina: zo doe ik het ook altijd. Maar ik denk niet dat het nodig is om deze methode in een beginnerstutorial te vermelden...
Tenslotte is die exit() inderdaad een dramatische manier om zo te gebruiken in de afhandeling van je formulier, die zul je in mijn voorbeelden ook niet op die manier terugzien.
ps. @Robin: graag gedaan!
Als je de inleiding van deze tutorial leest, zien je de PHP iets anders is dan HTML. Lees het stukje onder 'Wat is PHP?' nog eens en het zal je duidelijk worden.
PHP zal je dus altijd in de code view van dreamweaver moeten schrijven. Het is niet zo dat je vanuit de design view je PHP code kunt genereren...
PHP zal je dus altijd in de code view van dreamweaver moeten schrijven. Het is niet zo dat je vanuit de design view je PHP code kunt genereren...
@Blanche
Volgens mij interpreteerde je pgFrank verkeerd. Hij bedoelt dat je controleert of de request-method POST is en er een hidden-field bij doet zodat je ziet wat er gepost is. Verder bedoelt hij volgens mij niet dat je de complete $_POST-array moet doorlopen. Je moet gewoon alleen de velden valideren die je gebruikt, uiteraard.
Volgens mij interpreteerde je pgFrank verkeerd. Hij bedoelt dat je controleert of de request-method POST is en er een hidden-field bij doet zodat je ziet wat er gepost is. Verder bedoelt hij volgens mij niet dat je de complete $_POST-array moet doorlopen. Je moet gewoon alleen de velden valideren die je gebruikt, uiteraard.
Wauw Blanche, wat een super tutorial(s). Ben zelf beginner die zichzelf alles aanleert d.m.v. tuts en moet je zeggen dat ik nog nooit zulke duidelijke tuts heb gezien. En voor de verandering: Alles werkt! Mijn complimenten dat je de moeite neemt om beginners zo enorm op weg te helpen!
Waar ik zelf erg benieuwd naar ben is het volgende:
Stel: je gebruikt jouw inlogscript, maar het is de bedoeling dat een hoop verschillende personen op de site inloggen. Deze personen wil je allemaal een eigen wachtwoord en gebruikersnaam laten aanmaken.
Hoe gaat dit in zijn werk? Moet je dan een script maken dat de gegevens naar een database schrijft of kun je het ook direct naar een file schrijven? Verder: hoe zit het vervolgens met de versleuteling? Kun je die ook automatisch laten doen?
Waar ik zelf erg benieuwd naar ben is het volgende:
Stel: je gebruikt jouw inlogscript, maar het is de bedoeling dat een hoop verschillende personen op de site inloggen. Deze personen wil je allemaal een eigen wachtwoord en gebruikersnaam laten aanmaken.
Hoe gaat dit in zijn werk? Moet je dan een script maken dat de gegevens naar een database schrijft of kun je het ook direct naar een file schrijven? Verder: hoe zit het vervolgens met de versleuteling? Kun je die ook automatisch laten doen?
Het slimste is om dan gebruik te maken van een database waarin je de gegevens van gebruikers opslaat.
Je zou eens een kijkje kunnen nemen in deze tutorial waarin een uitgebreider loginscript toegepast wordt. Het enige gedeelte dat dan nog ontbreekt is een registratiescript, dus dat zul je dan zelf nog moeten maken.
Wat betreft de versleuteling van het wachtwoord. Ik sla altijd de SHA1 hash van het gekozen wachtwoord in de database op. Bij het inloggen vergelijk je dan de twee hashes met elkaar en als die overeenkomen is blijkbaar een goed wachtwoord ingevuld. Dit kun je allemaal door de database laten doen en wordt deels ook in die tutorial aangestipt.
Je zou eens een kijkje kunnen nemen in deze tutorial waarin een uitgebreider loginscript toegepast wordt. Het enige gedeelte dat dan nog ontbreekt is een registratiescript, dus dat zul je dan zelf nog moeten maken.
Wat betreft de versleuteling van het wachtwoord. Ik sla altijd de SHA1 hash van het gekozen wachtwoord in de database op. Bij het inloggen vergelijk je dan de twee hashes met elkaar en als die overeenkomen is blijkbaar een goed wachtwoord ingevuld. Dit kun je allemaal door de database laten doen en wordt deels ook in die tutorial aangestipt.
Staat gewoon in de tutorial uitgelegd hoor! Zie deze pagina onder het kopje 'Verschillende typen variabelen'.
Maar goed, een string is dus een stuk tekst en een integer een geheel getal...
Maar goed, een string is dus een stuk tekst en een integer een geheel getal...
Eerst en vooral, een prachtige tutorial ! echt duidelijk met mooie voorbeelden, goed leesbaar en interessant opgebouwd.
wel een opmerking:
zou het kunnen dat er een foutje staat bij de statements pagina, bij de output worden de variable namen getoond, niet de waarden.
$x is groter dan 5 en $y is kleiner dan 10
wel een opmerking:
zou het kunnen dat er een foutje staat bij de statements pagina, bij de output worden de variable namen getoond, niet de waarden.
Code (php)
$x is groter dan 5 en $y is kleiner dan 10
Quote:
Ik snap niet helemaal wat je hiermee bedoelt? Een . heeft er verder niet zoveel mee te maken, dat is enkel het teken dat je gebruikt om elementen aan elkaar te koppelen.aha ik zie het al, er staat geen . achter de variable
Als ik de inhoud van de variabelen had willen weergeven, had ik dat zo moeten doen:
@blance, of zo:
(wist je wsl wel, maar 'kzeg 't meer voor dimi :) )
(wist je wsl wel, maar 'kzeg 't meer voor dimi :) )
@Machiel: als je naar mijn reacties op het forum kijkt zul je zien dat het aantal keer dat ik 'haal variabelen buiten quotes' zeg, allang niet meer op 1 hand te tellen is!
Kortom, geen goede oplossing dus...
ps. En uiteraard ben ik dus niet de enige die dat zegt, het is gewoon een ongeschreven regel dat je variabelen buiten quotes haalt...
Kortom, geen goede oplossing dus...
ps. En uiteraard ben ik dus niet de enige die dat zegt, het is gewoon een ongeschreven regel dat je variabelen buiten quotes haalt...
2 dingen;
1. Omdat jullie vinden dat het "brak" is, betekend niet dat de oplossing niet bestaat.
2. In dit voorbeeld vind het niet eens zo'n slechte manier om het te gebruiken. Het is duidelijk wat je bedoelt en iedereen weet wat het resultaat van de echo zal zijn.
(ps. blance, lees je reactie nog even door :p. Nu staat er omdat jij zegt dat geen goede oplossing is, het geen goede oplossing is ;-) )
1. Omdat jullie vinden dat het "brak" is, betekend niet dat de oplossing niet bestaat.
2. In dit voorbeeld vind het niet eens zo'n slechte manier om het te gebruiken. Het is duidelijk wat je bedoelt en iedereen weet wat het resultaat van de echo zal zijn.
(ps. blance, lees je reactie nog even door :p. Nu staat er omdat jij zegt dat geen goede oplossing is, het geen goede oplossing is ;-) )
@Machiel: zie de vele topics met bugs die worden veroorzaakt door de variabelen binnen quotes, dat zal je met variabelen buiten quotes niet gebeuren. Wat is dan beter: Een goede kans op een bug of geen enkele bug?
Voorkomen is beter dan genezen.
Veel vookomende problemen: Arrays, objecten en variabelen die direct voor een stuk tekst moeten worden weergegeven.
Voorkomen is beter dan genezen.
Veel vookomende problemen: Arrays, objecten en variabelen die direct voor een stuk tekst moeten worden weergegeven.
Imho maakt een goede PHP'er geen fouten met " of '..
Voor overzichtelijkheid vind ik het een goede reden om buiten quotes te plaatsen, en dat doe ik dan vaak ook.
Maar met kleine echo's zoals daarboven, waarbij je in 1 opslag kan zien van wat variabelen zijn enzo... Daar is het gewoon overdreven imho om buiten quotes te plaatsen.
Grote lappen tekst moet je natuurlijk wel altijd buiten quotes plaatsen, want een variabele opzoeken in dat is echt een ramp.
Voor overzichtelijkheid vind ik het een goede reden om buiten quotes te plaatsen, en dat doe ik dan vaak ook.
Maar met kleine echo's zoals daarboven, waarbij je in 1 opslag kan zien van wat variabelen zijn enzo... Daar is het gewoon overdreven imho om buiten quotes te plaatsen.
Grote lappen tekst moet je natuurlijk wel altijd buiten quotes plaatsen, want een variabele opzoeken in dat is echt een ramp.
Escapen? Dat wil je juist zoveel mogelijk voorkomen! Zorg dat je enkele en dubbele quotes op een slimme manier naast elkaar gebruikt en je hoeft quotes (bijna) nooit meer te escapen...
Verder moet je natuurlijk helemaal zelf weten hoe je script, maar de ervaring leert dat het netjes buiten quotes halen van variabelen tot de minste bugs leidt. Bovendien zorgt het voor een stukje overzichtelijkheid waardoor bugs die eventueel optreden eenvoudiger op te sporen en op te lossen zijn.
Verder moet je natuurlijk helemaal zelf weten hoe je script, maar de ervaring leert dat het netjes buiten quotes halen van variabelen tot de minste bugs leidt. Bovendien zorgt het voor een stukje overzichtelijkheid waardoor bugs die eventueel optreden eenvoudiger op te sporen en op te lossen zijn.
Je schrijft je code zo dat je niet/nauwelijks fouten _kunt_ maken en dat anderen het ook snel snappen. Een $var die tussen quotes staat, kan een variabele zijn, maar ook een stuk tekst. Geheel afhankelijk van de gekozen quotes. Hier loop je dus extra risico's op bugs, zelfs al zijn de risico's klein, ze zijn overbodig.
Maar goed, ik echo helemaal niets meer, dat werkt wel zo handig. Dat regelt m'n template engine wel voor mij.
Maar goed, ik echo helemaal niets meer, dat werkt wel zo handig. Dat regelt m'n template engine wel voor mij.
Hai Blanche,
Dank, dank.. ik begin eindelijk een beetje grip te krijgen.
Ik krijg de volgende functie niet aan de praat. Er lijkt een foutje in te zitten want daardoor werkt de daaropvolgende functie ook niet. Het scriptje staat in je hoofdstuk functies.
Dank, dank.. ik begin eindelijk een beetje grip te krijgen.
Ik krijg de volgende functie niet aan de praat. Er lijkt een foutje in te zitten want daardoor werkt de daaropvolgende functie ook niet. Het scriptje staat in je hoofdstuk functies.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
// Functie definiƫren
function geefWeer($sString)
{
echo $sString.'<br />';
}
// Functie aanroepen
$sTekst = 'Hello World!';
geefWeer($sTekst);
geefWeer('Een tweede tekst');
?>
// Functie definiƫren
function geefWeer($sString)
{
echo $sString.'<br />';
}
// Functie aanroepen
$sTekst = 'Hello World!';
geefWeer($sTekst);
geefWeer('Een tweede tekst');
?>
Om te reageren heb je een account nodig en je moet ingelogd zijn.
- Details
Door:
Blanche PHP- 3 jaren geleden
- 1.462 x bekeken
- Labels
- Geen tags toegevoegd.
- PHP tutorials opties
- Overig
- Nieuwste PHP tutorials
- PHP tutorial toevoegen

PHP hulp
0 seconden vanaf nu