Met deze dynamische contactpagina heb ik meegedaan aan de communicatie script wedstrijd. (http://www.sitemasters.be/nieuwsartikels/411/Uitslag_Communicatie_script_wedstrijd)
Wat is het?
Het is een contactsysteem, maar geen normale. Deze is dynamisch.
Alle velden kun je dynamisch via een adminpaneel (admin.php) toevoegen, aanpassen en verwijderen.
Je kunt de volgorde van de velden ook aanpassen. (Up/down)
Het heeft ook de mogelijkheid de ontvanger aan te passen (receiver).
Je kan zelfs meerdere ontvangers toevoegen! Bijvoorbeeld om het zakelijk te gebruiken op een site van een uitzenbureau o.i.d.
Je voegt bijvoorbeeld 3 emails van bedrijven toe en je maakt een leuk vacatureformulier heb je al een klein systeempje!
Waarom dynamisch?
Omdat het zo makkelijk(er) te gebruiken is. Óók voor mensen die er weinig verstand van hebben.
En mede omdat ik dit speciaal voor de sitemasters wedstrijd heb geschreven en mij dit vrij uniek leek.
Hé! De admin is niet beveiligd!?
Ik heb bewust geen loginfunctie ingebouwd.
Mijn communicatiesysteem gaat over een dynamische contactpagina en niet over een inlogsysteem.
Zo kan je hem dus makkelijk in jou systeem inbouwen met je eigen beveiligingsfunctie's.
Hoe werkt het precies?
Ten eerste moet je even alles uit MySQL.txt in je database zetten.
Daarna kan je alles via admin.php beheren.
1. Je maakt een leuk formulier
2. Je voegt een ontvanger toe (of meerdere).
Je zult zien dat er een ID voor het emailadres staat, onthoud deze.
3. Ga nu naar contact.php?client={hier de ID}
Voorbeeld: http://example.com/contact.php?client=3
Elk emailadres krijgt zo zijn eigen ID. Dus de contactpagina van ID 3 zal naar het emailadres met ID 3 sturen.
<?php
ob_start();
// De config wordt ingelezen
require_once("config.inc.php");
include("header.php");
print '<h2>Dynamic Contact Page</h2>';
// De ?action= wordt bekeken
$action = get('action', 'x');
if($action == 'add') {
if($_SERVER['REQUEST_METHOD'] == 'POST') { // Als er op Add is geklikt
$text = input($_POST['text']); // De $_POST wordt beveiligd
$name = input($_POST['name']); // etc..
$size = input($_POST['size']);
$maxlength = input($_POST['maxlength']);
$type = input($_POST['type']);
$rows = input($_POST['rows']);
$cols = input($_POST['cols']);
if($type == 'textarea') { // Als het opgeven type textarea is
if(!is_numeric($rows) || !is_numeric($cols)) { // Zijn de rows en cols wel numeriek?
die('<br />Make sure rows and cols are numeric<br /><br /><a href="addfields.php">→ Try again</a>'); // Nee, er wordt een melding gegeven en het script wordt beeindigd
} elseif(!$text || !$name || !$size || !$maxlength) { // De rows en cols zijn wel numeriek, tijd om te kijken of de rest is ingevuld
die('<br />Please fill in all fields<br /><br /><a href="addfields.php">→ Try again</a>'); // Nee, niet alles is ingevuld
} elseif(!is_numeric($size) || !is_numeric($maxlength)) { // Alles is ingevuld en rows en cols zijn numeriek, maar de size en maxlength?
die('<br />Make sure the size and maxlength are numeric<br /><br /><a href="addfields.php">→ Try again</a>'); // Nee, weer wordt er een error gegeven en het script wordt beeindigd.
} else { // Alles is goed, het script kan doorgaan
$exists = mysql_num_rows(mysql_query("SELECT * FROM contactfields WHERE name='" . $name . "'")); // Query om te kijken of er al een field met deze name is
if($exists < 1 && $name != 'Receiver') { // Als de name nog niet bestaat en de name niet Receiver is (want zo heet het hidden field) doorgaan
$pidQuery = mysql_query("SELECT * FROM contactfields ORDER BY pid DESC LIMIT 0, 1"); // De onderste pid ophalen
$pidFetch = mysql_fetch_assoc($pidQuery); // Even fetchen
$pid = $pidFetch['pid']+1; // Er 1 bij optellen zodat die onderaan komt
$query = mysql_query("INSERT INTO contactfields (text, name, size, maxlength, type, rows, cols, pid) VALUES ('".$text."', '".$name."', ".$size.", ".$maxlength.", '".$type."', ".$rows.", ".$cols.", ".$pid.")"); // Toevoegen in de database
if($query) { // Is de query goed?
header('Location: admin.php'); // Het is toegevoegd, doorgaan naar admin.php
} else {
print 'Error in database: '.mysql_error(); // Er is een fout, de fout wordt laten zien
}
} else {
die('<br />This name does already exists<br /><br /><a href="addfields.php">→ Try again</a>'); // De name bestaat al
}
}
} elseif($type == 'text' || $type == 'password') { // Als het type geen textarea is maar text of password
$rows = 0; // Rows zijn niet nodig
$cols = 0; // Cols ook niet
if(!$text || !$name || !$size || !$maxlength) { // Zijn alle velden ingevuld?
die('<br />Please fill in all fields<br /><br /><a href="addfields.php">→ Try again</a>'); // Nee, een melding wordt gegeven en het script stopgezet
} elseif(!is_numeric($size) || !is_numeric($maxlength)) { // Alle velden zijn ingevuld, zijn ze geldig?
die('<br />Make sure the size and maxlength are numeric<br /><br /><a href="addfields.php">→ Try again</a>'); // De size en maxlength zijn niet numeriek; ongeldig dus.
} else { // Alles is geldig, het script kan doorgaan
$exists = mysql_num_rows(mysql_query("SELECT * FROM contactfields WHERE name='" . $name . "'")); // Bestaat de name al?
if($exists < 1 && $name != 'Receiver') { // Als de name nog niet bestaat en de name niet Receiver is (want zo heet het hidden field) doorgaan
$pidQuery = mysql_query("SELECT * FROM contactfields ORDER BY pid DESC LIMIT 0, 1"); // De onderste pid ophalen
$pidFetch = mysql_fetch_assoc($pidQuery); // Even fetchen
$pid = $pidFetch['pid']+1; // Er 1 bij optellen zodat die onderaan komt
$query = mysql_query("INSERT INTO contactfields (text, name, size, maxlength, type, rows, cols, pid) VALUES ('".$text."', '".$name."', ".$size.", ".$maxlength.", '".$type."', ".$rows.", ".$cols.", ".$pid.")"); // Toevoegen in de database
if($query) { // Is de query goed?
header('Location: admin.php'); // Het is toegevoegd, doorgaan naar admin.php
} else {
print 'Error in database: '.mysql_error(); // Er is een fout, de fout wordt laten zien
}
} else {
die('<br />This name does already exists<br /><br /><a href="addfields.php">→ Try again</a>'); // De name bestaat al
}
}
} else {
die('<br />Unknown type<br /><br /><a href="addfields.php">→ Try again</a>'); // De type is geen textarea, text of password. Dit is alleen mogelijk als iemand het script op een verkeerde manier gebruikt!
}
} else {
die('<br />Hacking attempt'); // Iemand is handmatig naar ?action=add gegaan zonder het formulier te gebruiken
}
} else { // Er is nog niks verzonden, het formulier wordt laten zien.
?>
<form action="?action=add" method="post">
Text:<br />
<input type="text" name="text" size="60" maxlength="255" value=""><br /><br />
Name:<br />
<input type="text" name="name" size="60" maxlength="255" value=""><br /> <br />
Size:<br />
<input type="text" name="size" size="60" maxlength="255" value="30"><br /> <br />
Maxlength:<br />
<input type="text" name="maxlength" size="60" maxlength="255" value="255"><br /><br />
Type:<br />
<select name="type"><option value="text">Text</option><option value="textarea">Textarea</option><option value="password">Password</option></select><br /><br />
Rows (textarea):<br />
<input type="text" name="rows" size="60" maxlength="255" value=""><br /><br />
Cols (textarea):<br />
<input type="text" name="cols" size="60" maxlength="255" value=""><br /><br />
<br />
<input type="submit" value="Add" class="button">
</form>
<br /><br /><a href="admin.php">→ Back to admin home</a>
<?php
}
include("footer.php");
?>
if($_SERVER['REQUEST_METHOD']=='POST'){// Als er op Add is geklikt
$text= input($_POST['text']);// De $_POST wordt beveiligd
$name= input($_POST['name']);// etc..
$size= input($_POST['size']);
$maxlength= input($_POST['maxlength']);
$type= input($_POST['type']);
$rows= input($_POST['rows']);
$cols= input($_POST['cols']);
if($type=='textarea'){// Als het opgeven type textarea is
if(!is_numeric($rows)||!is_numeric($cols)){// Zijn de rows en cols wel numeriek?
die('<br />Make sure rows and cols are numeric<br /><br /><a href="addfields.php">→ Try again</a>');// Nee, er wordt een melding gegeven en het script wordt beeindigd
}elseif(!$text||!$name||!$size||!$maxlength){// De rows en cols zijn wel numeriek, tijd om te kijken of de rest is ingevuld
die('<br />Please fill in all fields<br /><br /><a href="addfields.php">→ Try again</a>');// Nee, niet alles is ingevuld
}elseif(!is_numeric($size)||!is_numeric($maxlength)){// Alles is ingevuld en rows en cols zijn numeriek, maar de size en maxlength?
die('<br />Make sure the size and maxlength are numeric<br /><br /><a href="addfields.php">→ Try again</a>');// Nee, weer wordt er een error gegeven en het script wordt beeindigd.
}else{// Alles is goed, het script kan doorgaan
$exists=mysql_num_rows(mysql_query("SELECT * FROM contactfields WHERE name='".$name."'"));// Query om te kijken of er al een field met deze name is
if($exists<1&&$name!='Receiver'){// Als de name nog niet bestaat en de name niet Receiver is (want zo heet het hidden field) doorgaan
$pidQuery=mysql_query("SELECT * FROM contactfields ORDER BY pid DESC LIMIT 0, 1");// De onderste pid ophalen
$pid=$pidFetch['pid']+1;// Er 1 bij optellen zodat die onderaan komt
$query=mysql_query("INSERT INTO contactfields (text, name, size, maxlength, type, rows, cols, pid) VALUES ('".$text."', '".$name."', ".$size.", ".$maxlength.", '".$type."', ".$rows.", ".$cols.", ".$pid.")");// Toevoegen in de database
if($query){// Is de query goed?
header('Location: admin.php');// Het is toegevoegd, doorgaan naar admin.php
}else{
print'Error in database: '.mysql_error();// Er is een fout, de fout wordt laten zien
}
}else{
die('<br />This name does already exists<br /><br /><a href="addfields.php">→ Try again</a>');// De name bestaat al
}
}
}elseif($type=='text'||$type=='password'){// Als het type geen textarea is maar text of password
$rows=0;// Rows zijn niet nodig
$cols=0;// Cols ook niet
if(!$text||!$name||!$size||!$maxlength){// Zijn alle velden ingevuld?
die('<br />Please fill in all fields<br /><br /><a href="addfields.php">→ Try again</a>');// Nee, een melding wordt gegeven en het script stopgezet
}elseif(!is_numeric($size)||!is_numeric($maxlength)){// Alle velden zijn ingevuld, zijn ze geldig?
die('<br />Make sure the size and maxlength are numeric<br /><br /><a href="addfields.php">→ Try again</a>');// De size en maxlength zijn niet numeriek; ongeldig dus.
}else{// Alles is geldig, het script kan doorgaan
$exists=mysql_num_rows(mysql_query("SELECT * FROM contactfields WHERE name='".$name."'"));// Bestaat de name al?
if($exists<1&&$name!='Receiver'){// Als de name nog niet bestaat en de name niet Receiver is (want zo heet het hidden field) doorgaan
$pidQuery=mysql_query("SELECT * FROM contactfields ORDER BY pid DESC LIMIT 0, 1");// De onderste pid ophalen
$pid=$pidFetch['pid']+1;// Er 1 bij optellen zodat die onderaan komt
$query=mysql_query("INSERT INTO contactfields (text, name, size, maxlength, type, rows, cols, pid) VALUES ('".$text."', '".$name."', ".$size.", ".$maxlength.", '".$type."', ".$rows.", ".$cols.", ".$pid.")");// Toevoegen in de database
if($query){// Is de query goed?
header('Location: admin.php');// Het is toegevoegd, doorgaan naar admin.php
}else{
print'Error in database: '.mysql_error();// Er is een fout, de fout wordt laten zien
}
}else{
die('<br />This name does already exists<br /><br /><a href="addfields.php">→ Try again</a>');// De name bestaat al
}
}
}else{
die('<br />Unknown type<br /><br /><a href="addfields.php">→ Try again</a>');// De type is geen textarea, text of password. Dit is alleen mogelijk als iemand het script op een verkeerde manier gebruikt!
}
}else{
die('<br />Hacking attempt');// Iemand is handmatig naar ?action=add gegaan zonder het formulier te gebruiken
}
}else{// Er is nog niks verzonden, het formulier wordt laten zien.
<?php
ob_start();
// De config wordt ingelezen
require_once("config.inc.php");
include("header.php");
print '<h2>Dynamic Contact Page</h2>';
$select = mysql_query("SELECT * FROM contactfields ORDER BY pid ASC"); // Alle velden worden opgehaald
$fields = @mysql_num_rows($select); // Kijken of er al velden zijn
if($fields < 1) { // Kijken wat het resultaat was
print '<br /><i>Please add a field</i><br /><br />'; // Er zijn nog geen velden toegevoegd
} else { // Er zijn al 1 of meer velden
while($fetch = mysql_fetch_assoc($select)) { // Zorgen dat alle velden opgehaald worden
print '<div class="listitem"><div class="floatleft" style="width: 350px; padding: 6px 0 0 0;">'.$fetch['name'].'</div> <div class="floatright actions"><a href="edit.php?id='.$fetch['id'].'">√</a> <a href="delete.php?id='.$fetch['id'].'">×</a> <a href="move.php?moveUp='.$fetch['id'].'">↑</a> <a href="move.php?moveDown='.$fetch['id'].'">↓</a></div><div class="clear"></div></div>'; // En laten zien
}
}
?>
<br />
<small>√ = edit | × = delete | ↑ = move up | ↓ = move up </small><br /><br />
I want to <a href="clients.php">manage the clients</a>. Or maybe <a href="addfields.php">add a field</a>.
<?php
include("footer.php");
?>
<?php
$dbServer = "localhost"; // De host waarop je dit script draait
$dbUser = "root"; // De gebruiker om een connectie naar de database te kunnen maken
$dbPass = ""; // Het wachtwoord dat bij de gebruiker hoort
$dbDbName = ""; // De naam van de database waar alles in is opgeslagen
mysql_connect ($dbServer, $dbUser, $dbPass) or die (mysql_error()); // De connectie wordt gemaakt
mysql_select_db($dbDbName) or die (mysql_error()); // De database wordt geselecteerd
// Functies worden aangemaakt
if(!function_exists('input')) { // Als die nog niet bestaat aanmaken
function input($value) // Deze functie beveiligd inputs om fouten te voorkomen
{
if (!in_array(ini_get('magic_quotes_gpc'), array('', '0', 'Off', 'False', 'No'))) {
$value = stripslashes($value);
}
if (!is_numeric($value)) {
$value = htmlentities($value);
$value = mysql_real_escape_string($value);
}
return $value;
}
}
if(!function_exists('get')) { // Als die nog niet bestaat aanmaken
function get($item, $default) { // Deze functie is gelijk aan $_GET en geeft een default mee als hij niet is opgegeven in de URL
return (isset($_GET[$item]) ? $_GET[$item] : $default);
}
}
if(!function_exists('checkemail')) { // Als die nog niet bestaat aanmaken
function checkemail($input) { // Deze functie is gemaakt door FangorN
$pattern = "/^([a-z0-9_-]+\.)*[a-z0-9_-]+@([a-z0-9_-]{2,}\.)+([a-z0-9_-]{2,})$/i"; // De reguliere expressie om het emailadres te controleren
return preg_match($pattern, $input);
}
}
// Error reporting
error_reporting(E_ALL ^ E_NOTICE);
?>
<?php
$dbServer="localhost";// De host waarop je dit script draait
$dbUser="root";// De gebruiker om een connectie naar de database te kunnen maken
$dbPass="";// Het wachtwoord dat bij de gebruiker hoort
$dbDbName="";// De naam van de database waar alles in is opgeslagen
<?php
ob_start();
// De config wordt ingelezen
require_once("config.inc.php");
include("header.php");
// Naar welke client moet het verstuurd worden?
$client = get('client', 'x');
$select = mysql_query("SELECT * FROM contactfields ORDER BY pid ASC"); // Alle forms worden opgehaald
$check = @mysql_num_rows($select); // Hoeveel forms er zijn
if($check < 1) { // Zijn er al wel forms?
print 'Please add at least one field first.'; // Wel eerst forms toevoegen
} else { // Er zijn al forms
$client = mysql_query("SELECT * FROM email WHERE id=".$client.""); // Welke email hoort bij de client?
$toclient = @mysql_fetch_assoc($client);
$exists = @mysql_num_rows($client); // Bestaat deze client wel
if($exists > 0) { // Er bestaat een email met deze client ID
print '<form action="send.php" method="post">'; // Het begin van de form
while($fetch = mysql_fetch_assoc($select)) { // Alle forms komen aan de beurt
if($fetch['type'] == 'textarea') { // Is het een textarea?
print $fetch['text'].':<br /><textarea class="nowidth" name="'.$fetch['name'].'" cols="'.$fetch['cols'].'" rows="'.$fetch['rows'].'"></textarea><br />'; // De textarea uitlezen
} else { // Nee het is een password of text type
print $fetch['text'].':<br /><input class="nowidth" type="'.$fetch['type'].'" name="'.$fetch['name'].'" size='.$fetch['size'].' maxlength='.$fetch['maxlength'].'><br />'; // Uitlezen
}
}
print '<input type="hidden" name="Receiver" value="'.$toclient['email'].'">'; // Een hidden input met de client
} else { // Er bestaat geen email met deze client ID
die('No client found with this ID.'); // En dat laten we even zien
}
?>
<br />
<input type="submit" class="button" value="Send">
</form>
<?php
}
include("footer.php");
?>
<?php
ob_start();
// De config wordt ingelezen
require_once("config.inc.php");
include("header.php");
$id = get('id', 'x'); // De ?id= ophalen
$confirmed = get('confirmed', 'no'); // Hetzelfde voor ?confirmed=
if(is_numeric($id)) { // Is de id numeriek?
if($confirmed == 'yes' && $_SERVER['REQUEST_METHOD'] == 'POST') { // Is het zeker dat er verwijderd mag worden
$errorCount = 1; // Deze wordt verhoogd zodra er errors optreden
$select = mysql_query("SELECT pid FROM contactfields WHERE id=".$id.""); // De bijbehorende pid wordt gezocht
$idPid = mysql_fetch_assoc($select); // Even fetchen
$queries[] = "UPDATE contactfields SET pid=pid-1 WHERE pid > ".$idPid['pid'].""; // Alle fields schuiven op
$queries[] = "DELETE FROM contactfields WHERE id=".$id.""; // De query om het field te verwijderen
foreach($queries as $query) { // Zorgen dat de hele array met queries aan de beurt komt
if(!$result = mysql_query($query)) {
$errorCount++; // Als de query niet goed verloopt wordt dit toegevoegd aan de error count
}
}
if($errorCount == 1) { // Als er geen errors zijn opgetreden zijn moet deze nog 1 zijn
header('Location: admin.php'); // Doorsturen naar admin.php
} else { // Er zijn wel errors
print 'Error in database: '.mysql_error(); // De error laten zien
exit(); // Pagina stopzetten
}
} else { // Er is nog niet verzonden, er wordt een verificatie gevraagd
print '
<form action="?id='.$id.'&confirmed=yes" method="post">
Are you sure you want to delete the field?
<br />
<br />
<input type="submit" value="Yes" class="button">
</form>
';
}
} else { // De ID is niet numeriek, iemand heeft met de url gespeeld
header('Location: admin.php'); // Doorsturen naar admin.php
exit(); // De pagina wordt beeindigd
}
include("footer.php");
?>
<?php
ob_start();
// De config wordt ingelezen
require_once("config.inc.php");
include("header.php");
print '<h2>Dynamic Contact Page</h2>';
// De ?action= en &id= worden bekeken
$action = get('action', 'x');
$id = get('id', 'x');
if($action == 'add' && is_numeric($id)) {
if($_SERVER['REQUEST_METHOD'] == 'POST') { // Als er op Add is geklikt
$getName = get('name', 'x');
$text = input($_POST['text']); // De $_POST wordt beveiligd
$name = input($_POST['name']); // etc..
$size = input($_POST['size']);
$maxlength = input($_POST['maxlength']);
$type = input($_POST['type']);
$rows = input($_POST['rows']);
$cols = input($_POST['cols']);
if($type == 'textarea') { // Als het opgeven type textarea is
if(!is_numeric($rows) || !is_numeric($cols)) { // Zijn de rows en cols wel numeriek?
die('<br />Make sure rows and cols are numeric<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>'); // Nee, er wordt een melding gegeven en het script wordt beeindigd
} elseif(!$text || !$name || !$size || !$maxlength) { // De rows en cols zijn wel numeriek, tijd om te kijken of de rest is ingevuld
die('<br />Please fill in all fields<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>'); // Nee, niet alles is ingevuld
} elseif(!is_numeric($size) || !is_numeric($maxlength)) { // Alles is ingevuld en rows en cols zijn numeriek, maar de size en maxlength?
die('<br />Make sure the size and maxlength are numeric<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>'); // Nee, weer wordt er een error gegeven en het script wordt beeindigd.
} else { // Alles is goed, het script kan doorgaan
if($name != $getName) { // Dit moet alleen als de naam gewijzigd is
$exists = mysql_num_rows(mysql_query("SELECT * FROM contactfields WHERE name='" . $name . "'")); // Query om te kijken of er al een field met deze name is
} else {
$exists = 0; // Om errors te voorkomen
}
if($exists < 1 && $name != 'Receiver') { // Als de name nog niet bestaat en de name niet Receiver is (want zo heet het hidden field) doorgaan
$query = mysql_query("UPDATE contactfields SET text='".$text."', name='".$name."', size=".$size.", maxlength=".$maxlength.", type='".$type."', rows=".$rows.", cols=".$cols." WHERE id=".$id."") or die(mysql_error()); // Updaten van de database
if($query) { // Is de query goed?
print '<br />The field was succesfully edited.<br /><br /><a href="admin.php">→ Back to admin home</a>';
} else {
print 'Error in database: '.mysql_error(); // Er is een fout, de fout wordt laten zien
}
} else {
die('<br />This name does already exists<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>'); // De name bestaat al
}
}
} elseif($type == 'text' || $type == 'password') { // Als het type geen textarea is maar text of password
$rows = 0; // Rows zijn niet nodig
$cols = 0; // Cols ook niet
if(!$text || !$name || !$size || !$maxlength) { // Zijn alle velden ingevuld?
die('<br />Please fill in all fields<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>'); // Nee, een melding wordt gegeven en het script stopgezet
} elseif(!is_numeric($size) || !is_numeric($maxlength)) { // Alle velden zijn ingevuld, zijn ze geldig?
die('<br />Make sure the size and maxlength are numeric<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>'); // De size en maxlength zijn niet numeriek; ongeldig dus.
} else { // Alles is geldig, het script kan doorgaan
if($name != $getName) { // Dit moet alleen als de naam gewijzigd is
$exists = mysql_num_rows(mysql_query("SELECT * FROM contactfields WHERE name='" . $name . "'")); // Query om te kijken of er al een field met deze name is
} else {
$exists = 0; // Om errors te voorkomen
}
if($exists < 1 && $name != 'Receiver') { // Als de name nog niet bestaat en de name niet Receiver is (want zo heet het hidden field) doorgaan
$query = mysql_query("UPDATE contactfields SET text='".$text."', name='".$name."', size=".$size.", maxlength=".$maxlength.", type='".$type."', rows=".$rows.", cols=".$cols." WHERE id=".$id."") or die(mysql_error()); // Updaten van de database
if($query) { // Is de query goed?
print '<br />The field was succesfully edited.<br /><br /><a href="admin.php">→ Back to admin home</a>';
} else {
print 'Error in database: '.mysql_error(); // Er is een fout, de fout wordt laten zien
}
} else {
die('<br />This name does already exists<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>'); // De name bestaat al
}
}
} else {
die('<br />Unknown type<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>'); // De type is geen textarea, text of password. Dit is alleen mogelijk als iemand het script op een verkeerde manier gebruikt!
}
} else {
die('<br />Hacking attempt'); // Iemand is handmatig naar ?action=add gegaan zonder het formulier te gebruiken
}
} else { // Er is nog niks verzonden, het formulier wordt laten zien.
if(is_numeric($id)) { // Als de ID numeriek is doorgaan
$select = mysql_query("SELECT * FROM contactfields WHERE id = ".$id.""); // Alle forms worden opgehaald
$check = @mysql_num_rows($select); // Hoeveel forms er zijn
if($check > 0) { // Als er wel fields zijn opgehaald, anders is het een foute ID
$fetch = mysql_fetch_assoc($select); // De results fetchen zodat ik ze kan gebruiken
?>
<form action="?action=add&id=<?php print $id; ?>&name=<?php print $fetch['name']; ?>" method="post">
Text:<br />
<input type="text" name="text" size="60" maxlength="255" value="<?php print $fetch['text']; ?>"><br /><br />
Name:<br />
<input type="text" name="name" size="60" maxlength="255" value="<?php print $fetch['name']; ?>"><br /> <br />
Size:<br />
<input type="text" name="size" size="60" maxlength="255" value="<?php print $fetch['size']; ?>"><br /> <br />
Maxlength:<br />
<input type="text" name="maxlength" size="60" maxlength="255" value="<?php print $fetch['maxlength']; ?>"><br /><br />
Type:<br />
<?php
if($fetch['type'] == 'text') { // In het geval van text moet text eerst
print '<select name="type"><option value="text">Text</option><option value="textarea">Textarea</option><option value="password">Password</option></select>';
} elseif($fetch['type'] == 'textarea') { // hetzelfde geldt voor textarea
print '<select name="type"><option value="textarea">Textarea</option><option value="text">Text</option><option value="password">Password</option></select>';
} else { // Het is geen text en ook geen textarea dus een password type, weer geldt hetzelfde
print '<select name="type"><option value="password">Password</option><option value="textarea">Textarea</option><option value="text">Text</option></select>';
}
?>
<br /><br />
Rows (textarea):<br />
<input type="text" name="rows" size="60" maxlength="255" value="<?php print $fetch['rows']; ?>"><br /><br />
Cols (textarea):<br />
<input type="text" name="cols" size="60" maxlength="255" value="<?php print $fetch['cols']; ?>"><br /><br />
<br />
<input type="submit" value="Edit" class="button">
</form>
<br /><br /><a href="admin.php">→ Back to admin home</a>
<?php
} else { // Foutieve ID. Hij bestaat niet
header('Location: admin.php'); // Ga maar terug naar admin.php en niet meer met de url spelen
exit(); // De pagina wordt afgebroken
}
} else { // De ID is niet numeriek
header('Location: admin.php'); // Ga maar terug naar admin.php en niet meer met de url spelen
exit(); // De pagina wordt afgebroken
}
}
include("footer.php");
?>
if($_SERVER['REQUEST_METHOD']=='POST'){// Als er op Add is geklikt
$getName= get('name','x');
$text= input($_POST['text']);// De $_POST wordt beveiligd
$name= input($_POST['name']);// etc..
$size= input($_POST['size']);
$maxlength= input($_POST['maxlength']);
$type= input($_POST['type']);
$rows= input($_POST['rows']);
$cols= input($_POST['cols']);
if($type=='textarea'){// Als het opgeven type textarea is
if(!is_numeric($rows)||!is_numeric($cols)){// Zijn de rows en cols wel numeriek?
die('<br />Make sure rows and cols are numeric<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>');// Nee, er wordt een melding gegeven en het script wordt beeindigd
}elseif(!$text||!$name||!$size||!$maxlength){// De rows en cols zijn wel numeriek, tijd om te kijken of de rest is ingevuld
die('<br />Please fill in all fields<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>');// Nee, niet alles is ingevuld
}elseif(!is_numeric($size)||!is_numeric($maxlength)){// Alles is ingevuld en rows en cols zijn numeriek, maar de size en maxlength?
die('<br />Make sure the size and maxlength are numeric<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>');// Nee, weer wordt er een error gegeven en het script wordt beeindigd.
}else{// Alles is goed, het script kan doorgaan
if($name!=$getName){// Dit moet alleen als de naam gewijzigd is
$exists=mysql_num_rows(mysql_query("SELECT * FROM contactfields WHERE name='".$name."'"));// Query om te kijken of er al een field met deze name is
}else{
$exists=0;// Om errors te voorkomen
}
if($exists<1&&$name!='Receiver'){// Als de name nog niet bestaat en de name niet Receiver is (want zo heet het hidden field) doorgaan
$query=mysql_query("UPDATE contactfields SET text='".$text."', name='".$name."', size=".$size.", maxlength=".$maxlength.", type='".$type."', rows=".$rows.", cols=".$cols." WHERE id=".$id."") or die(mysql_error());// Updaten van de database
if($query){// Is de query goed?
print'<br />The field was succesfully edited.<br /><br /><a href="admin.php">→ Back to admin home</a>';
}else{
print'Error in database: '.mysql_error();// Er is een fout, de fout wordt laten zien
}
}else{
die('<br />This name does already exists<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>');// De name bestaat al
}
}
}elseif($type=='text'||$type=='password'){// Als het type geen textarea is maar text of password
$rows=0;// Rows zijn niet nodig
$cols=0;// Cols ook niet
if(!$text||!$name||!$size||!$maxlength){// Zijn alle velden ingevuld?
die('<br />Please fill in all fields<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>');// Nee, een melding wordt gegeven en het script stopgezet
}elseif(!is_numeric($size)||!is_numeric($maxlength)){// Alle velden zijn ingevuld, zijn ze geldig?
die('<br />Make sure the size and maxlength are numeric<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>');// De size en maxlength zijn niet numeriek; ongeldig dus.
}else{// Alles is geldig, het script kan doorgaan
if($name!=$getName){// Dit moet alleen als de naam gewijzigd is
$exists=mysql_num_rows(mysql_query("SELECT * FROM contactfields WHERE name='".$name."'"));// Query om te kijken of er al een field met deze name is
}else{
$exists=0;// Om errors te voorkomen
}
if($exists<1&&$name!='Receiver'){// Als de name nog niet bestaat en de name niet Receiver is (want zo heet het hidden field) doorgaan
$query=mysql_query("UPDATE contactfields SET text='".$text."', name='".$name."', size=".$size.", maxlength=".$maxlength.", type='".$type."', rows=".$rows.", cols=".$cols." WHERE id=".$id."") or die(mysql_error());// Updaten van de database
if($query){// Is de query goed?
print'<br />The field was succesfully edited.<br /><br /><a href="admin.php">→ Back to admin home</a>';
}else{
print'Error in database: '.mysql_error();// Er is een fout, de fout wordt laten zien
}
}else{
die('<br />This name does already exists<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>');// De name bestaat al
}
}
}else{
die('<br />Unknown type<br /><br /><a href="edit.php?id='.$id.'">→ Try again</a>');// De type is geen textarea, text of password. Dit is alleen mogelijk als iemand het script op een verkeerde manier gebruikt!
}
}else{
die('<br />Hacking attempt');// Iemand is handmatig naar ?action=add gegaan zonder het formulier te gebruiken
}
}else{// Er is nog niks verzonden, het formulier wordt laten zien.
if(is_numeric($id)){// Als de ID numeriek is doorgaan
$select=mysql_query("SELECT * FROM contactfields WHERE id = ".$id."");// Alle forms worden opgehaald
$check=@mysql_num_rows($select);// Hoeveel forms er zijn
if($check>0){// Als er wel fields zijn opgehaald, anders is het een foute ID
$fetch=mysql_fetch_assoc($select);// De results fetchen zodat ik ze kan gebruiken
<?php
ob_start();
// De config wordt ingelezen
require_once("config.inc.php");
include("header.php");
// Moet die omlaag of omhoog?
$moveUp = get('moveUp', 'none');
$moveDown = get('moveDown', 'none');
if(is_numeric($moveUp) && $moveDown == 'none') { // Dit uitvoeren als die omhoog moet
$query = mysql_query("SELECT * FROM contactfields WHERE id=".$moveUp.""); // Query om wat info op te halen
$exists = mysql_num_rows($query); // De resultaten tellen
if($exists > 0) { // Als de field bestaat doorgaan
$errorCount = 1; // Als er errors voorkomen wordt dat hier bij op geteld
$fetch = mysql_fetch_array($query); // De query wordt gefetched, zodat ik hem makkelijk kan gebruiken
if($fetch['pid'] == 1) { // Als die al op de eerste plek staat kan die niet hoger
die('<br />This field is already at the top<br /><br /><a href="admin.php">→ Go back to admin home</a>');
}
$queries[] = "UPDATE contactfields SET pid=pid+1 WHERE pid=".($fetch['pid']-1).""; // Diegene boven hem gaat 1 naar onderen
$queries[] = "UPDATE contactfields SET pid=pid-1 WHERE id=".$moveUp.""; // Het field zelf gaat 1 plek naar boven
foreach($queries as $query) { // Zorgen dat de hele array met queries aan de beurt komt
if(!$result = mysql_query($query)) {
$errorCount++; // Als de query niet goed verloopt wordt dit toegevoegd aan de error count
}
}
if($errorCount == 1) { // Als de error count niet verhoogt is is alles goed gegaan
header('Location: admin.php'); // Doorsturen naar admin.php
} else { // Er is iets fout gegaan
print 'Error: '.mysql_error();
}
} else { // De field bestaat niet, er is met de URL gespeeld
header('Location: admin.php'); // Doorsturen naar admin.php
exit();
}
} elseif(is_numeric($moveDown) && $moveUp == 'none') { // Dit uitvoeren als die omlaag moet
$query = mysql_query("SELECT * FROM contactfields WHERE id=".$moveDown.""); // Query om wat info op te halen
$exists = mysql_num_rows($query); // De resultaten tellen
if($exists > 0) { // Als de field bestaat doorgaan
$errorCount = 1; // Als er errors voorkomen wordt dat hier bij op geteld
$fetch = mysql_fetch_array($query); // De query wordt gefetched, zodat ik hem makkelijk kan gebruiken
$countRows = mysql_num_rows(mysql_query("SELECT * FROM contactfields")); // Het aantal fields tellen
if($fetch['pid'] == $countRows) { // Als die al op de laagste plek staat kan die niet hoger
die('<br />This field is already at the bottom<br /><br /><a href="admin.php">→ Go back to admin home</a>');
}
$queries[] = "UPDATE contactfields SET pid=pid-1 WHERE pid=".($fetch['pid']+1).""; // Diegene boven hem gaat 1 naar boven
$queries[] = "UPDATE contactfields SET pid=pid+1 WHERE id=".$moveDown.""; // Het field zelf gaat 1 plek naar onderen
foreach($queries as $query) { // Zorgen dat de hele array met queries aan de beurt komt
if(!$result = mysql_query($query)) {
$errorCount++; // Als de query niet goed verloopt wordt dit toegevoegd aan de error count
}
}
if($errorCount == 1) { // Als de error count niet verhoogt is is alles goed gegaan
header('Location: admin.php'); // Doorsturen naar admin.php
} else { // Er is iets fout gegaan
print 'Error: '.mysql_error();
}
} else { // De field bestaat niet, er is met de URL gespeeld
header('Location: admin.php'); // Doorsturen naar admin.php
exit();
}
} else { // Als er met de URL is gespeeld of de pagina verkeerd is aangeroepen
header('Location: admin.php'); // Doorsturen naar admin.php
exit();
}
include("footer.php");
?>
<?php
ob_start();
// De config wordt ingelezen
require_once("config.inc.php");
include("header.php");
$id = get('id', 'x'); // De ?id= wordt opgehaald
$confirmed = get('confirmed', 'no'); // En hetzelfde gebeurd met ?confirmed=
if(is_numeric($id)) { // Is de id numeriek?
if($confirmed == 'yes' && $_SERVER['REQUEST_METHOD'] == 'POST') { // Is het zeker dat er verwijderd mag worden
$query = mysql_query("DELETE FROM email WHERE id=".$id.""); // De query om de client te verwijderen
if($query) { // Is het verwijderen goed gegaan?
header('Location: clients.php'); // Doorsturen naar clients.php
} else { // Er is iets fout gegegaan
print 'Error in database: '.mysql_error(); // De error laten zien
}
} else { // Er is nog niet verzonden, er wordt een verificatie gevraagd
print '
<form action="?id='.$id.'&confirmed=yes" method="post">
Are you sure you want to delete the client?
<br />
<br />
<input type="submit" value="Yes">
</form>
';
}
} else { // De ID is niet numeriek, iemand heeft met de url gespeeld
header('Location: admin.php'); // Doorsturen naar admin.php
exit(); // De pagina wordt beeindigd
}
include("footer.php");
?>