Programmeren in PHP/MySQL in PHP: verschil tussen versies
Verwijderde inhoud Toegevoegde inhoud
k Robot: Verplaatsing van 1 interwikilinks. Deze staan nu op Wikidata onder d:q1536136 |
kGeen bewerkingssamenvatting |
||
Regel 10:
| Taal=PHP
| Titel=
| Code=<
<?php
$_CONFIG["Username"] = 'root'; // Gebruikersnaam
Regel 16:
$_CONFIG["Host"] = 'localhost'; // Host
?>
</syntaxhighlight>
}}
Regel 26:
| Taal=PHP
| Titel=
| Code=<
<?php
$_CONFIG["Username"] = 'root';
Regel 41:
mysqli_close($Verbinding);
?>
</syntaxhighlight>
}}
Regel 48:
| Taal=PHP
| Titel=
| Code=<
<?php
$_CONFIG["Username"] = 'root';
Regel 57:
mysqli_close($Verbinding);
?>
</
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
<
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=<
<?php
$_CONFIG["Username"] = 'root';
Regel 100:
mysqli_close($Verbinding);
?>
</syntaxhighlight>
}}
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;
<
CREATE TABLE berichten
(
Regel 129:
`datum` DATETIME
)
</syntaxhighlight>
<!--TODO: Query uitleggen, Syntax checken..-->
Regel 139:
| Taal=PHP
| Titel=
| Code=<
<?php
$_CONFIG["Username"] = 'root';
Regel 177:
mysqli_close($Verbinding);
?>
</syntaxhighlight>
}}
Regel 191:
| Taal=PHP
| Titel=
| Code=<
<?php
include_once('verbinding.php');
Regel 222:
mysqli_close($Verbinding);
?>
</syntaxhighlight>
}}
Regel 229:
| Taal=PHP
| Titel=
| Code=<
<?php
$_CONFIG["Username"] = 'root';
Regel 243:
}
?>
</syntaxhighlight>
}}
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.
<
<!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>
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.
<
#email adressen valideren
;^([a-z0-9-_]+)(.[a-z0-9-_]+)*@([a-z0-9-]+)(.[a-z0-9-]+)*.[a-z]{2,4}$;i
</syntaxhighlight>
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:
<
;^http\:\/\/[a-z0-9-]+.([a-z0-9-]+.)?[a-z]+;i
</syntaxhighlight>
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=<
function is_email($email)
{
Regel 316:
return (bool)preg_match(';^http\:\/\/[a-z0-9-]+.([a-z0-9-]+.)?[a-z]+;i', $url);
}
</syntaxhighlight>
}}
===SQL Injection===
Regel 329:
| Taal=PHP
| Titel=
| Code=<
<?php
mysqli_real_escape_string($Verbinding, $_POST);
</syntaxhighlight>
}}
Regel 342:
| Taal=PHP
| Titel=
| Code=<
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);
}
?></
==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=<
<html>
<head>
Regel 463:
?>
</body>
</html></
== Databasebescherming van mailinglists en ledenlijsten==
|