Programmeren in PHP/MySQL in PHP: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
YiFeiBot (overleg | bijdragen)
k Robot: Verplaatsing van 1 interwikilinks. Deze staan nu op Wikidata onder d:q1536136
DimiC88 (overleg | bijdragen)
kGeen bewerkingssamenvatting
 
Regel 10:
| Taal=PHP
| Titel=
| Code=<sourcesyntaxhighlight lang=php>
<?php
$_CONFIG["Username"] = 'root'; // Gebruikersnaam
Regel 16:
$_CONFIG["Host"] = 'localhost'; // Host
?>
</syntaxhighlight>
</source>
}}
 
Regel 26:
| Taal=PHP
| Titel=
| Code=<sourcesyntaxhighlight lang=php>
<?php
$_CONFIG["Username"] = 'root';
Regel 41:
mysqli_close($Verbinding);
?>
</syntaxhighlight>
</source>
}}
 
Regel 48:
| Taal=PHP
| Titel=
| Code=<sourcesyntaxhighlight lang=php>
<?php
$_CONFIG["Username"] = 'root';
Regel 57:
mysqli_close($Verbinding);
?>
</sourcesyntaxhighlight>}}
 
Als het goed is levert het vorige programma geen tekst op als je het uitvoert, dat betekent dat de verbinding gelukt is. Als het niet lukt kan dit een aantal oorzaken hebben:
Regel 66:
Als je met een database wilt werken, is het handig als je die hebt en als daar tabellen met gegevens in staan. Gelukkig kan je met SQL ook een database aanmaken. De syntax voor die query is een van de eenvoudigste. Namelijk
 
<sourcesyntaxhighlight lang=mysql>CREATE DATABASE db_name</sourcesyntaxhighlight>
 
Waarbij db_name de uiteindelijke naam voor de database is. Ook gaan we daarvoor een regel aan de $_CONFIG array toevoegen met daarin de te gebruiken database. Ook wordt dit onze eerste echte query in MySQL.
Regel 73:
| Taal=PHP
| Titel=
| Code=<sourcesyntaxhighlight lang=php>
<?php
$_CONFIG["Username"] = 'root';
Regel 100:
mysqli_close($Verbinding);
?>
</syntaxhighlight>
</source>
}}
 
Regel 118:
 
Als we dat bedacht hebben, zullen we een tabel moeten bedenken. Zoals er ook te zien is de relatie constant een-op-een. Dit houdt in dat we de alle gegevens mooi in één tabel kunnen zetten. Nu zullen we namen moeten bedenken voor de velden en aan moeten geven welk veld de Primary Key zal worden. De tabel zelf zal de velden "naam", "e-mail", "show_e-mail", "website", "datum" en "bericht" krijgen. Met "id" als Primary Key, zodat we daar op kunnen zoeken, later. Het SQL statement om een tabel te maken ziet er als volgt uit;
<sourcesyntaxhighlight lang=mysql>
CREATE TABLE berichten
(
Regel 129:
`datum` DATETIME
)
</syntaxhighlight>
</source>
 
<!--TODO: Query uitleggen, Syntax checken..-->
Regel 139:
| Taal=PHP
| Titel=
| Code=<sourcesyntaxhighlight lang=php>
<?php
$_CONFIG["Username"] = 'root';
Regel 177:
mysqli_close($Verbinding);
?>
</syntaxhighlight>
</source>
}}
 
Regel 191:
| Taal=PHP
| Titel=
| Code=<sourcesyntaxhighlight lang=php>
<?php
include_once('verbinding.php');
Regel 222:
mysqli_close($Verbinding);
?>
</syntaxhighlight>
</source>
}}
 
Regel 229:
| Taal=PHP
| Titel=
| Code=<sourcesyntaxhighlight lang=php>
<?php
$_CONFIG["Username"] = 'root';
Regel 243:
}
?>
</syntaxhighlight>
</source>
}}
Deze pagina slaan we zo op omdat we hem nog vaak nodig zullen hebben. Sla het op als Verbinding.php.
Regel 249:
==Gebruikersinvoer==
Voor het invoeren van de berichten gebruiken we een [[HTML]] pagina met een formuliertje waar de gebruiker een aantal waarden in kan vullen. Deze gegevens komen dus uiteindelijk in het gastenboek te staan. Het formulier is opgemaakt met behulp van [[Cascading Style Sheets|CSS]]. Om het formulier te verwerken en in de database te zetten versturen we het bericht naar verwerk_bericht.php.
<sourcesyntaxhighlight lang=html4strict"HTML">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
Regel 288:
</body>
</html>
</syntaxhighlight>
</source>
 
Er zijn een aantal zaken waar we rekening mee moeten houden tijdens het verwerken van het gastenboek, namelijk beveiliging en of de gegevens valide zijn (het e-mailadres moet een echt e-mailadres zijn en de website een echte website) Om dat te kunnen gaan we gebruik maken van reguliere expressies. Ik ga hier niet uitleggen hoe die werken, maar ik geef je wel twee reguliere expressies om de twee verplichte gegevens te valideren. Ook moeten we rekening houden met SQL injection.
<sourcesyntaxhighlight lang=php>
#email adressen valideren
;^([a-z0-9-_]+)(.[a-z0-9-_]+)*@([a-z0-9-]+)(.[a-z0-9-]+)*.[a-z]{2,4}$;i
</syntaxhighlight>
</source>
Een email-adres moet dus bestaan uit 1 of 2 groepjes alfanumerieke waarden (A tot Z, 0 tot 9 en _) met een punt tussenin, gevolgd door een apestaartje en 1 of 2 groepjes alfanumerieken, afgesloten door 2 tot 4 letters.
 
En om URL's (adressen van websites) te valideren:
<sourcesyntaxhighlight lang=php>
;^http\:\/\/[a-z0-9-]+.([a-z0-9-]+.)?[a-z]+;i
</syntaxhighlight>
</source>
 
Omdat we die reguliere expressies niet zomaar in PHP kunnen gebruiken, op een manier als we in [[perl]] zouden doen, maken we gebruik van de preg_match() functie die standaard in PHP zit. Daar schrijven we een mooie functie omheen zodat we de acties vaker kunnen gebruiken.
Regel 306:
| Taal=PHP
| Titel=
| Code=<sourcesyntaxhighlight lang=php>
function is_email($email)
{
Regel 316:
return (bool)preg_match(';^http\:\/\/[a-z0-9-]+.([a-z0-9-]+.)?[a-z]+;i', $url);
}
</syntaxhighlight>
</source>
}}
===SQL Injection===
Regel 329:
| Taal=PHP
| Titel=
| Code=<sourcesyntaxhighlight lang=php>
<?php
mysqli_real_escape_string($Verbinding, $_POST);
</syntaxhighlight>
</source>
}}
 
Regel 342:
| Taal=PHP
| Titel=
| Code=<sourcesyntaxhighlight lang=php><?PHP
function is_email($email)
{ return((bool)preg_match(';^([a-z0-9-_]+)(.[a-z0-9-_]+)*@([a-z0-9-]+)(.[a-z0-9-]+)*.[a-z]{2,4}$;i', $email));
Regel 384:
mysqli_close($Verbinding);
}
?></sourcesyntaxhighlight>}}
 
==Gegevens uit de tabel halen==
Je hebt niks aan gegevens in een database als je ze er niet uit kan halen. Je gebruik de sql 'SELECT * FROM `table`' als je gegevens wilt opvragen. Hier een voorbeeld als je gegevens uit een gastenboek wilt halen. (Deze gebruikt het document 'verbinding.php' om te verbinden met de database.)<!-- Ik ben vast ergens een ';' vergeten. -->
{{Code| | Taal=PHP | Titel=Voorbeeld: gegevens uit een tabel halen| Code=<sourcesyntaxhighlight lang=php>
<html>
<head>
Regel 463:
?>
</body>
</html></sourcesyntaxhighlight>}}
 
== Databasebescherming van mailinglists en ledenlijsten==
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.