I have a problem I am gonna try my best to explain it. So I have a code where you have 2 links the first link is where you can put your name address and email in a textbox and you can leave a message. The second link will recover this information into a nice page but after 6 lines the next page will generate so if you put more than 1 line of words in the message box it will put everything into a mess it is really hard to explain hope this is enough information. If there is anything you don't understand about my question let me know thanks for the help. There are 4 codes.
here are all the codes:
First file called "opdracht32.php":
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>Gastenboek</title>
</head>
<body>
<h2>Gastenboek met PHP</h2>
<hr>
<?php echo date("d-m-Y, G:i");?>
<hr>
<br>
Wat wil je gaan doen?
<ul>
<li><a href="gastenboekschrijven.php">
Schrijf in het gastenboek</a></li>
<br>
<li><a href="gastenboeklezen.php">
Lees het gastenboek</a></li>
</ul>
</body>
</html>
Second file called "gastenboekschrijven.php":
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>In het gastenboek schrijven</title>
</head>
<body>
<form action="opslaan.php" method="post">
<p>
De gegevens die u via het volgende
formulier invult, worden op het
gastenboek geplaatst en zullen voor
iedereen zichtbaar zijn.
</p>
<p>
Naam: <br>
<input name="naam" type="text" size="40" tabindex="1">
</p>
<p>
E-mail: (optioneel)<br>
<input name="email" type="text" size="40" tabindex="2">
</p>
<p>
Woonplaats: (optioneel)<br>
<input name="woonplaats" type="text" size="40" tabindex="3">
</p>
<p>
Uw bericht: <br>
<textarea name="bericht" rows="8" cols="40" tabindex="4">
</textarea>
</p>
<p>
<input type="submit" name="submit" value="Verstuur" title="Verstuur dit formulier" tabindex="5">
</p>
</form>
</body>
</html>
Third file called "gastenboeklezen.php":
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>Het gastenboek lezen</title>
</head>
<body>
<?php
$bestandsnaam = "gastenboek.txt";
// aantal regels per bijdrage om in te lezen
// elke bijdrage bestaat uit 5 regels
$aantal_regels = 6;
// teller om bij te houden hoeveel regels
// zijn gelezen
$teller = 0;
// Aantal bijdragen wordt bijgehouden.
$aantal_bijdragen = 0;
// gastenboek openen om te lezen
if (file_exists($bestandsnaam)){
$fp = fopen($bestandsnaam, "r");
}
else{
echo "<h2>Het gastenboek is nog leeg!</h2>
<a href= 'gastenboekschrijven.php'>
Wees de eerste die erin schrijft!</a> ";
exit;
}
while (!feof($fp)){
$regel = fgets($fp);
if (!feof($fp)){
if ($teller % $aantal_regels == 0){
// kop afdrukken
$aantal_bijdragen++;
// echo "<hr>";
echo "<h3>Bijdrage: $aantal_bijdragen</h3>";
}
}
// regel afdrukken
echo "$regel <br>";
// echo "<hr>";
$teller++;
}
echo "<a href='opdracht32.php'>Terug naar de
homepage</a>";
?>
</body>
</html>
The last file called "opslaan.php":
<?php
$bestandsnaam = "gastenboek.txt";
$datum = date("d-m-Y, G:i");
// gastenboek openen of maken
if (!$fp = fopen($bestandsnaam, "a+")){
echo "<h2>Het lukt niet om het gastenboek te openen</h2>";
exit;
}
// het wegschrijven van de gegevens
fputs($fp, "Datum: ".$datum);
fputs($fp, "\r\n");
fputs($fp, "Naam: ".$_POST["naam"]);
fputs($fp, "\r\n");
fputs($fp, "Email: ".$_POST["email"]);
fputs($fp, "\r\n");
fputs($fp, "Woonplaats: ".$_POST["woonplaats"]);
fputs($fp, "\r\n");
fputs($fp, "Bericht: ".$_POST["bericht"]);
fputs($fp, "\r\n"."\r\n");
fclose($fp);
echo "<h2>Klaar</h2>";
echo "<p>De bijdrage is opgeslagen</p>";
echo "<a href = 'opdracht32.php'>Terug naar het
beginscherm</a>";
?>
The problem is that you restrict your self to a fixed number of lines for each comment, so when a comment exceed the maximum number of lines, the code will split it as more than one comment.
I prefer to use database to store the comments, but if you need to use files, here is my approach.
Before save comment to the file append a special token to define the comment like [start-of-comment]
When display the comments, use that token to split each comment regardless of number of lines.
The comments in file will look like:
[start-of-comment]
Datum: 23-11-2016, 14:23
Naam: name
Email: email
Woonplaats: ***
Bericht: -***-*/*-/-*
[start-of-comment]
Datum: 23-11-2016, 14:23
Naam: fgh
Email: fghf
Woonplaats: dfgh
Bericht: dfhfghgfh
To test it, i made changes in the following files: opslaan.php and gastenboeklezen.php
replace them with your files and clear gastenboek.txt file and try it
opslaan.php
<?php
$bestandsnaam = "gastenboek.txt";
$datum = date("d-m-Y, G:i");
// gastenboek openen of maken
if (!$fp = fopen($bestandsnaam, "a+")){
echo "<h2>Het lukt niet om het gastenboek te openen</h2>";
exit;
}
// het wegschrijven van de gegevens
fputs($fp, "[start-of-comment]\r\n");
fputs($fp, "Datum: ".$datum);
fputs($fp, "\r\n");
fputs($fp, "Naam: ".$_POST["naam"]);
fputs($fp, "\r\n");
fputs($fp, "Email: ".$_POST["email"]);
fputs($fp, "\r\n");
fputs($fp, "Woonplaats: ".$_POST["woonplaats"]);
fputs($fp, "\r\n");
fputs($fp, "Bericht: ".$_POST["bericht"]);
fputs($fp, "\r\n"."\r\n");
fclose($fp);
echo "<h2>Klaar</h2>";
echo "<p>De bijdrage is opgeslagen</p>";
echo "<a href = 'opdracht32.php'>Terug naar het
beginscherm</a>";
?>
gastenboeklezen.php
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>Het gastenboek lezen</title>
</head>
<body>
<?php
$bestandsnaam = "gastenboek.txt";
// aantal regels per bijdrage om in te lezen
// elke bijdrage bestaat uit 5 regels
$aantal_regels = 6;
// teller om bij te houden hoeveel regels
// zijn gelezen
$teller = 0;
// Aantal bijdragen wordt bijgehouden.
$aantal_bijdragen = 0;
// gastenboek openen om te lezen
if (file_exists($bestandsnaam)){
$fp = fopen($bestandsnaam, "r");
}
else{
echo "<h2>Het gastenboek is nog leeg!</h2>
<a href= 'gastenboekschrijven.php'>
Wees de eerste die erin schrijft!</a> ";
exit;
}
while (!feof($fp)){
$regel = fgets($fp);
if (!feof($fp)){
if($regel !== "[start-of-comment]\r\n"){
echo "$regel <br>";
}else{
$aantal_bijdragen++;
echo "<h3>Bijdrage: $aantal_bijdragen</h3>";
}
}
$teller++;
}
echo "<a href='opdracht32.php'>Terug naar de
homepage</a>";
?>
</body>
</html>
Related
I am making a very simple movie database, with the possibility to update the movies that are in it. All you have to do is fill in the fields underneath the table. However, when you fill in the id and only one other field, like film_id, the description etc. are erased from the table. How do i make sure that it's possible to change only one thing?
The code for the page:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<?php
session_start(); //Start sessie.
function is_logged() {
if (isset($_SESSION['username'])) return true;
return false; //De gebruikersnaam wordt gecontroleerd
}
if(!is_logged()){
header("Location: sign-in.php"); //Als de gebruiker naar overzichtlogin.php
gaat, zonder dat hij of zij is ingelogd, worden ze doorgestuurd naar de
login pagina.
}
require_once('db_const.php'); //De gegevens voor het maken van de verbinding
met de database staan in dit bestand gedeclareerd.
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if (!$mysqli){
die("Connection failed: ".mysqli_connect_error()); //Als de verbinding niet
lukt zal deze niet werken.
}
?>
<?php $current = 'secured'; ?> <!-- Om aan te geven dat men zich op de
beveiligde overzichtspagina bevindt, wordt gebruik gemaakt van deze
variabele. Current krijgt nu de waarde 'secured', waardoor de button waar
'secured' staat een kleur krijgt. -->
<div class="header">
<?php
if(isset($_SESSION['username'])){
require_once("headersecured.php"); //Indien de gebruiker ingelogd is, wordt
'headersecured.php' gebruikt als header.
}else{
require_once("header.php"); //Indien de gebruiker niet is ingelogd, wordt
header.php gebruikt als header.
}
?>
</div>
<h1>Filmoverzicht</h1>
<?php
$sql = "SELECT film_id, title, description, release_year, rating FROM
films"; //De gewenste gegevens uit de database worden geselecteerd.
$result = $mysqli->query($sql);
if ($result->num_rows > 0) {
echo "<table style='border: solid 1px grey; margin-left: auto; margin-right:
auto; margin-top:50px;'><tr><th>ID</th> <th>Titel</th> <th>Beschrijving</th>
<th>Jaar</th> <th>Rating</th> <th> </th></tr>";
while($row = $result->fetch_assoc()) {
echo "<tr><td>" .$row["film_id"] . "<td>" .$row["title"] . "<td>" .
$row["description"] . "<td>" . $row["release_year"]. "<td> " .
$row["rating"]. "<td> " . '<td><a class="alert" href="deletemovie.php?
id='.$row['film_id'].'" >
</i>'?> VERWIJDER <?php '</a></td>';
} //De beschikbare gegevens worden weergegeven.
echo "</table>";
} else {
echo "0 results";
}
?>
<br><br>
<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>"> <!--De
bewerkfunctie wordt op dezelfde pagina uitgevoerd.-->
<h2>Films bewerken</h2>
<input name="film_id" required="required" placeholder="ID">
<input name="title" placeholder="Titel film">
<textarea id="textarea" name="description" cols="20" rows="5"
placeholder="Beschrijving"></textarea>
<input name="release_year" placeholder="Uitkomstjaar">
<input name="rating" placeholder="Beoordeling">
<input id="submit" name="submit" type="submit" value="Wijzigen"> <!-- In
deze
invulvelden kunnen nieuwe gegevens worden ingevoerd, zodat de films worden
aangepast. -->
<?php
if (isset($_POST['submit'])) {
$film = $_POST["film_id"]; //Slaat de gegevens voor het ingevoerde ID op in
een
variabele.
$title = $_POST["title"]; //Slaat de gegevens voor de ingevoerde titel op in
een
variabele.
$description = $_POST["description"]; //Slaat de gegevens voor de ingevoerde
beschrijving op in een variabele.
$year = $_POST["release_year"]; //Slaat de gegevens voor het ingevoerde jaar
op
in een variabele.
$rating = $_POST["rating"]; //Slaat de gegevens voor de ingevoerde rating op
in een variabele.
$sql = "UPDATE films SET film_id = '$film', title = '$title', description =
'$description', release_year = '$year', rating = '$rating' WHERE film_id =
$film"; //De tabel 'films' in MySQL wordt geselecteerd, de gegevens die in
de
variabelen zijn opgeslagen worden gewijzigd in de database.
if (mysqli_query($mysqli, $sql)) { // Voert de actie uit
echo "<br>"; // Wit ruimte
echo "<br>"; // Wit ruimte
echo "<br>"; // Wit ruimte
echo "Succesvol aangepast!"; // Geeft aan dat het aangepast is
echo "<br>"; // Wit ruimte
echo "<a href='overzichtspagina.php'>Terug naar de vorige pagina.</a>"; //
een link waar de gebruiker terug kan gaan naar de vorige pagina
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($mysqli); // geef fout
melding aan de gebruiker als het mis gaat
}
}
?>
</form>
<?php
$mysqli->close(); //Verbinding wordt verbroken.
?>
<div class="footer">
<?php include 'footer.php';?> <!-- De footer wordt opgehaald. -->
</div>
</body>
</html>
The problem is when the $_POST["description"] is not defined the value of $description is taken as NUll. In order to avoid this the Update query has to be constructed dynamicaly.
$sql = "UPDATE films SET film_id = '$film', title = '$title'";
if(isset($_POST["description"])) {
$description = $_POST["description"];
$sql .= ", description = $description"
}
$sql .= ", release_year = '$year', rating = '$rating' WHERE film_id = $film";
In this case when the $_POST["description"] is not set the query becomes "UPDATE films SET film_id = '$film', title = '$title', release_year = '$year', rating = '$rating' WHERE film_id = $film";
or else the query becomes "UPDATE films SET film_id = '$film', title = '$title', description = $description, release_year = '$year', rating = '$rating' WHERE film_id = $film";
You have to check on multiple values for validation, because you want that at least one field (other than film ID) is completed. If none provided, than notify the user. This validation should be made on client-side (with js, jquery, validation plugins, etc).
Then, you must dynamically build your sql statement. Use sprintf()
function for such "complex" constructs. It's very elegant. In it, the %s parts are placeholders for the variables.
Please notice the UPDATE statement: you don't want to update the
film_id field! You must use it ONLY to select the one record which
you want to update (e.g. just in WHERE clause). If you want to
change film_id, you must reinsert a record with the new id.
You are missing the <body> tag.
I was bringing last php code UNDER the </form> tag.
As a general rule: separate display logic from server processing.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>My films</title>
</head>
<body>
<?php
$mysqli = new mysqli('localhost', 'root', 'root', 'tests');
if (!$mysqli) {
die("Connection failed: " . mysqli_connect_error());
}
?>
<!-- ... -->
<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>">
<h2>Films bewerken</h2>
<input name="film_id" required="required" placeholder="ID">
<input name="title" placeholder="Titel film">
<textarea id="textarea" name="description" cols="20" rows="5" placeholder="Beschrijving"></textarea>
<input name="release_year" placeholder="Uitkomstjaar">
<input name="rating" placeholder="Beoordeling">
<input id="submit" name="submit" type="submit" value="Wijzigen">
</form>
<?php
if (isset($_POST['submit'])) {
$film = $_POST["film_id"];
$title = $_POST["title"];
$description = $_POST["description"];
$year = $_POST["release_year"];
$rating = $_POST["rating"];
$message = '<br/><br/><br/>';
if (!isset($film)) {
$message .= 'You must provide the film ID!';
} elseif (
(!isset($title) || empty($title)) &&
(!isset($description) || empty($description)) &&
(!isset($year) || empty($year)) &&
(!isset($rating) || empty($rating))
) {
$message .= 'You must provide at least one field for the selected film ID!';
} else {
$sql = sprintf(
"UPDATE films SET %s%s%s%s WHERE film_id = %s"
, isset($title) ? "title = '$title'" : ""
, isset($description) ? ", description = '$description'" : ""
, isset($year) ? ", release_year = '$year'" : ""
, isset($rating) ? ", rating = '$rating'" : ""
, $film
);
if (mysqli_query($mysqli, $sql)) {
$message .= "Succesvol aangepast!";
$message .= "<br>";
$message .= "<a href='overzichtspagina.php'>Terug naar de vorige pagina.</a>";
} else {
$message .= "Error: " . $sql . "<br>" . mysqli_error($mysqli);
}
}
echo $message;
}
$mysqli->close();
?>
</body>
</html>
EDIT 1:
I recommend you to use exception handling. Here is an example:
try {
// Connect to db.
$mysqli = new mysqli('localhost', 'root', 'root', 'tests');
if (!isset($mysqli) || !$mysqli) {
throw new Exception("Connection failed: " . mysqli_connect_error());
}
// Run query on db.
$query = mysqli_query($mysqli, $sql);
if (!$query) {
throw new Exception('The statement can not be executed!');
}
$mysqli->close();
} catch (Exception $exception) {
echo $exception->getMessage();
/*
* OR display the whole error information.
* But only in the development stage!
*/
// echo '<pre>' . print_r($exception, true) . '</pre>';
exit();
}
Don't forget to add a <title> tag to your page.
I have 2 questions. The first one is probably really easy but I don't know how to do it. I made a code that lets you save a music artist and a single and after you save it you can open it with a but I want to open it with a button how do i do that.
And the second question is when you open the saved files I get 20 lines of things that are empty and 1 that is full (sorry for my bad english). How do I change that into normal lines so it only makes a line if needed. Here are my 2 codes:
FILE NAME SEB2.php
<!DOCTYPE html>
<html>
<head>
<title></title>
<?php
if (!empty($_POST)) {
$artiest = $_POST["artiest"];
$single = $_POST["single"];
$fp = fopen("muziekcollectie.txt", "a+");
fputs($fp, $artiest."\r\n");
fputs($fp, $single."\r\n");
fclose($fp);
}
?>
</head>
<body>
<form name="woorden" method="post">
Artiest:<input type="text" name="artiest"><br>
Single:<input type="text" name="single"><br>
<input type="submit" name="Add" value="Add"><br><br>
<form>
<!-- <input type="submit" name="Watch" value="Watch" action="SEB2.php"> -->TEST
</body>
</html>
FILE NAME SEB2.php
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>Het gastenboek lezen</title>
</head>
<body>
<?php
$bestandsnaam = "muziekcollectie.txt";
// aantal regels per bijdrage om in te lezen
// elke bijdrage bestaat uit 5 regels
$aantal_regels = 2;
// teller om bij te houden hoeveel regels
// zijn gelezen
$teller = 0;
// Aantal bijdragen wordt bijgehouden.
$aantal_bijdragen = 0;
// gastenboek openen om te lezen
if (file_exists($bestandsnaam)){
$fp = fopen($bestandsnaam, "r");
}
else{
echo "<h2>De muziekcollectie is nog leeg!</h2>
<a href= 'SEB1.php'>
Wees de eerste die erin schrijft!</a> ";
exit;
}
while (!feof($fp)){
$regel = fgets($fp);
if (!feof($fp)){
if ($teller % $aantal_regels == 0){
// kop afdrukken
$aantal_bijdragen++;
// echo "<hr>";
echo "<h3>Bijdrage: $aantal_bijdragen</h3>";
}
}
// regel afdrukken
echo "$regel <br>";
// echo "<hr>";
$teller++;
}
echo "<a href='SEB1.php'>Terug naar de
homepage</a>";
?>
</body>
</html>
The button link is not that hard
<button onclick="window.location.href='SEB2.php';"></button>
I noticed you didn't close your form so that could be the problem when you tested it.
I'm not sure what you mean with the second part but I think it's just cause you do not have an if empty check on your post so empty input will be added to the file as well. If that's the problem this will solve it:
if (!empty($_POST['artiest']) && !empty($_POST['single']))
I have been trying to replace/ remove any special characters when added in the form below. Characters like: +-()*&^%$##!~
I have been trying to do this with preg replace but im not able to get it working. Code which i wrote is below. Am i missing something?
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
</head>
<body>
<form method="post" action="kenteken.php">
<input type="text" name="kenteken" />
<input type="submit" name="verzend" value="Check kenteken" />
</form>
<?php
// Include de benodigde classes
include_once 'api/loader.php';
// Kijken of er een kenteken is ingevoerd.
if(!isset($_POST["kenteken"])) {
echo 'Geen kenteken ontvangen. Ga terug er probeer opnieuw!';
exit;
} else {
// Witte characters (spaties) weghalen
$k = trim($_POST["kenteken"]);
$k2 = preg_replace('/[^A-Za-z0-9\-]/', '', $k);
// Kijken of kenteken leeg is met spaties
if(empty($k2)) {
echo 'Geen kenteken ingevoerd. Ga terug er probeer opnieuw!';
exit;
} else {
header("Location: http://domain.nl/kenteken/?kenteken=$k2");
}
}
?>
</body>
</html>
$k2 = preg_replace('/[^[:alnum:]]/', '', $k);
simple and quick ;)
I want to upload a image to my server but i get this error:
Notice: Undefined index: inputfile
This is the form that i use for the upload:
<div class="form-group">
<label class="col-md-2 control-label" for="inputfile">Foto uploaden</label>
<div class="col-md-5">
<input id="inputfile" name="inputfile" class="input-file" type="file">
</div>
</div>
and when the user presses 'submit' then he 'll post the form to this:
if (isset($_POST['submit'])) {
// Haalt de extenties op
$ext = array('image/gif', 'image/jpeg', 'image/jpg', 'image/png');
// Bekijkt bestandsgrootte (Max. 20 MB)
// Als bestand te groot is dan stopt die.
if ($_FILES["inputfile"]["size"] > 20971520) {
echo 'Bestandsformaat te groot! Zorg er voor dat de afbeeldingsgrootte kleiner is dan 20 MB.';
exit;
}
// Als bestand voldoet aan juiste extentie
if (in_array($_FILES['inputfile']['type'], $ext)) {
// Mapnaam voor de foto's
$dir = 'uploads';
// Als de map 'uploads' niet bestaat
// dan wordt hij hier aangemaakt
if (!file_exists($dir)) {
mkdir($dir, 0777);
}
// Bestand wordt ge-upload
if (is_uploaded_file($_FILES['inputfile']['tmp_name'])) {
// $path = 'pics/';
$path =$dir.'/';
if (!file_exists($path . $_FILES['inputfile']['name'])) {
move_uploaded_file($_FILES['inputfile']['tmp_name'], $path . $_FILES['inputfile']['name']);
$foto_titel = $_POST['naamfoto'];
$foto_omschrijving = $_POST['omschrijvingfoto'];
$foto_url = "admin/uploads/".$_FILES["inputfile"]["name"];
// Geeft melding dat bestand ge-upload is naar de server
echo '<p>Foto geplaatst!</p>';
echo '<p><img class="geuploade-foto" src="uploads/'.$_FILES["inputfile"]["name"].'" /></p>';
echo '<p><strong>Naam:</strong> ' . $foto_titel . '<br>';
echo '<strong>Omschrijving:</strong> ' . $foto_omschrijving . '<br>';
// Begin met insert in de database
$bnb = $pdo->prepare('INSERT INTO cases (photo_title, photo_url, photo_description) VALUES (?, ?, ?)');
$bnb->execute(array($foto_titel, $foto_url, $foto_omschrijving));
//Verbinding afsluiten
$pdo = null;
}else {
echo '<p>Afbeelding bestaat al en dus kon deze niet toegevoegd worden op de website.</p>';
}
// Als er om een reden niet aan de ifs
// kan worden voldaan wordt deze
// error getoond
}else{
echo 'Bestand niet geupload vanwege een onbekende error';
}
}
}
Tried much but nothing worked yet.
Do you have a php.ini file I believe you need one for image uploading?
http://www.w3schools.com/php/php_file_upload.asp
I'm trying to create a simple registration script in PHP that adds the input of the form to a database. The script throws an error 500 when loading, and Godaddy's customer support tells me it's my script. For reference, I'm using Parallel's Plesk for hosting and MyLittleAdmin (MSSQL) for the DB (as provided by GoDaddy).
The script I've written works fine on another server, but not on the one provided by GoDaddy. They say it's not an issue with their server; could it be somewhere inbetween?
Important note: commenting out everything from $link = db_contact(); to mysql_close($link); makes the script work fine otherwise.
Scripts:
"db.php" (connecting to database):
<?php
$db_server = "/";
$db_user = "Milan";
$db_pass = "/";
$db_name = "/";
function db_contact() {
global $db_server, $db_user, $db_pass, $db_name;
// maak contact met de sql server
$db = mysql_connect($db_server,$db_user,$db_pass) or die("Fout: Er is geen verbinding met de MySQL-server tot stand gebracht!");
// selecteer de juiste database
mysql_select_db($db_name,$db) or die("Fout: Het openen van de database is mislukt!");
// geef een handle naar de database terug
return $db;
}
?>
registreren.php (form & script)
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
include "db.php";
?>
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<form action="registreren.php" method="post">
<table>
<tr>
<td>Voornaam *</td> <td><input type="text" name="voornaam" /></td>
</tr>
<tr>
<td>Tussenvoegsel</td> <td><input type="text" name="tussenvoegsel" /></td>
<tr/>
<tr>
<td>Achternaam *</td> <td><input type="text" name="achternaam" /></td>
</tr>
<tr>
<td>Email-adres *</td> <td><input type="text" name="email" /></td>
</tr>
<tr>
<td>Telefoonnummer</td> <td><input type="text" name="telefoonnummer" /></td>
</tr>
<tr>
<td>Woonplaats *</td> <td><input type="text" name="woonplaats" /></td>
</tr>
<tr>
<td>Geboortedatum *</td> <td><input type=date name="geboortedatum" step=1 min=1990-01-01 max=2010-31-12></td>
</tr>
<tr>
<td>Geslacht *</td> <td><input type="radio" name="geslacht" value="man">Man <input type="radio" name="geslacht" value="vrouw">Vrouw</td>
</tr>
<tr>
<td>School
<td>
<select name="school">
<option value="Jan van Brabant College Molenstraat">Jan van Brabant College Molenstraat</option>
<option value="Jan van Brabant College">Jan van Brabant College Deltaweg</option>
<option value="Knippenberg College">Knippenberg College</option>
<option value="Carolus Borromeus College">Carolus Borromeus College</option>
</select>
</td>
</tr>
<tr>
<td>Niveau</td>
<td>
<select name="niveau">
<option value="VMBO-T">VMBO-T</option>
<option value="VMBOT/HAVO">VMBO-T/HAVO</option>
<option value="HAVO">HAVO</option>
<option value="HAVO/VWO">HAVO/VWO</option>
<option value="VWO">VWO</option>
</select>
</td>
</tr>
<tr>
<td>Leerjaar</td>
<td>
<select name="leerjaar">
<option value="1">Leerjaar 1</option>
<option value="2">Leerjaar 2</option>
<option value="3">Leerjaar 3</option>
<option value="4">Leerjaar 4</option>
<option value="5">Leerjaar 5</option>
<option value="6">Leerjaar 6</option>
</select>
</td>
</tr>
<tr>
<td>Velden met een * zijn verplicht.</td>
</tr>
</table>
<input type="submit" name="submit" value="Registreren" />
</form>
</body>
</html>
<?php
if(isset($_POST["submit"])) {
$foutMelding = " "; //Deze variabele wordt gevuld met error messages en dan naar de user gestuurd.
//Naamgegevens in variabelen veranderd
$voornaam = $_POST["voornaam"];
$tussenvoegsel = $_POST["tussenvoegsel"];
$achternaam = $_POST["achternaam"];
//Persoonlijke gegevens in variabelen veranderd
$email = $_POST["email"];
$telefoonnummer = $_POST["telefoonnummer"];
$woonplaats = $_POST["woonplaats"];
$geboorteDatum = $_POST["geboortedatum"];
$geslacht = $_POST["geslacht"];
//Schoolgegevens in variabelen veranderd
$school = $_POST["school"];
$niveau = $_POST["niveau"];
$leerjaar = $_POST["leerjaar"];
//Controleert of verplichte velden ingevuld zijn.
if(empty($voornaam) OR empty($achternaam) OR empty($email) OR empty($woonplaats)OR empty($geboorteDatum) OR empty($geslacht)) {
$foutMelding = "Vergeet niet alle verplichte velden in te vullen.";
}
else { //Als alle verplichte velden ingevuld zijn, wordt gecontroleerd of alle invoeren geldig zijn. Fouten worden opgeslagen in $foutMelding.
//Naamgegevens
$voornaamPattern = "[a-zA-Z]{1,20}";
$tussenvoegselPattern = "[a-zA-Z ]{0,6}";
$achternaamPattern = "[a-zA-Z ]{1,30}";
if(!preg_match("/$voornaamPattern/", $voornaam)) {
$foutMelding .= "Een voornaam bestaat alleen uit letters.<br>";
}
if(!preg_match("/$tussenvoegselPattern/", $tussenvoegsel)) {
$foutMelding .= "Zorg dat je een geldig tussenvoegsel invoert.<br>";
}
if(!preg_match("/$achternaamPattern/", $achternaam)) {
$foutMelding .= "Een achternaam bestaat alleen uit letters.<br>";
}
//Overige gegevens
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { //Er wordt gecontroleerd of het opgegeven emailadres de correcte format heeft.
$foutMelding .= "Je opgegeven email-adres is geen geldig adres.<br>";
}
//Schoolgegevens
//!Niet vergeten: onmogelijke combinaties VMBO-T/HAVO en HAVO/VWO ingeven!
if(($niveau == "VMBO-T" && $leerjaar > 4) OR ($niveau == "HAVO" && $leerjaar > 5)) {//Hier worden onmogelijke niveau-klascombinaties uitgesloten
$foutMelding .= "Deze klas bestaat niet voor dit niveau!";
}
}
if($foutMelding == " ") {
//Begin email-verificatieproces.
//We maken een 'hash' voor veiligheid en een random wachtwoord dat de gebruiker voor de eerste keer gebruikt.
$hash = md5(rand(0,1000)); //32-karakters code
$wachtwoord = rand(1000,5000);
$link = db_contact();
$query = "INSERT INTO gebruiker (email, wachtwoord, voornaam, tussenvoegsel, achternaam, school, niveau, klas, telefoonnummer, woonplaats, geboortedatum, geslacht, hash, actief) VALUES ($email, (md5($wachtwoord)), $voornaam, $tussenvoegsel, $achternaam, $school, $niveau, $leerjaar, $telefoonnummer, $woonplaats, $geboorteDatum, $geslacht, $hash, 0)";
$result = mysql_query($query,$link) or die ("Kan de query niet uitvoeren");
mysql_close($link);
//We sturen een email naar de gebruiker met de mail() functie.
$to = $email; //Ontvanger van de email
$subject = 'Dusjezoektbijles.nl || Verificatie'; // Onderwerp van de email.
$message = '
Bedankt voor het aanmelden!
Je account is gecreƫerd en je kunt inloggen met de volgende gegevens (nadat je je account geactiveerd hebt met de link hier beneden):
---------------------------------------------------------
Gebruikersnaam: '.$email.'
Wachtwoord: '.$wachtwoord.'
---------------------------------------------------------
Klik op de volgende link om je account te activeren:
http://www.dusjezoektbijles.nl/verifieren.php?email='.$email.'&hash='.$hash.'
'; //Het bericht in de mail
$headers = 'From:noreply#dusjezoektbijles.nl' . "\r\n"; // Set from headers
mail($to, $subject, $message, $headers); // Verstuur de email
header('Location: Geregistreerd.php');
}
else {
echo"De volgende fouten werden gevonden bij het aanmaken van je profiel:<br><br><br>$foutMelding";
}
}
?>
Can anyone help me out?
Replace few lines with this,even don't work post your sql:
$query = "INSERT INTO 'gebruiker' ('email', 'wachtwoord', 'voornaam', 'tussenvoegsel', 'achternaam', 'school', 'niveau', 'klas', 'telefoonnummer', 'woonplaats', 'geboortedatum', 'geslacht', 'hash', 'actief') VALUES ($email, (md5($wachtwoord)), $voornaam, $tussenvoegsel, $achternaam, $school, $niveau, $leerjaar, $telefoonnummer, $woonplaats, $geboorteDatum, $geslacht, $hash, 0)";
mysql_query($query) or die("error in $query == ---->".mysql_error());