login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Contact formulieren > Dynamische contactpagina

Dynamische contactpagina

Auteur: ikki007 - 03 maart 2008 - 19:03 - Gekeurd door: marten - Hits: 27532 - Aantal punten: 4.13 (4 stemmen)




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.


Groeten Jarno

  1. CREATE TABLE contactfields (
  2. id INT(11) AUTO_INCREMENT,
  3. pid INT(11) NOT NULL DEFAULT '0',
  4. text VARCHAR(255) NOT NULL DEFAULT '',
  5. name VARCHAR(255) NOT NULL DEFAULT '',
  6. size VARCHAR(255) NOT NULL DEFAULT '',
  7. maxlength VARCHAR(255) NOT NULL DEFAULT '',
  8. type VARCHAR(255) NOT NULL DEFAULT '',
  9. rows VARCHAR(255) NOT NULL DEFAULT '',
  10. cols VARCHAR(255) NOT NULL DEFAULT '',
  11. PRIMARY KEY (id)
  12. ) TYPE=MyISAM;
  13.  
  14. CREATE TABLE email (
  15. id INT(11) AUTO_INCREMENT,
  16. email VARCHAR(255) NOT NULL DEFAULT '',
  17. PRIMARY KEY (id)
  18. ) TYPE=MyISAM;

Code:
Addfields.php
  1. <?php
  2.  
  3. // De config wordt ingelezen
  4. require_once("config.inc.php");
  5.  
  6. include("header.php");
  7.  
  8. print '<h2>Dynamic Contact Page</h2>';
  9.  
  10.  
  11. // De ?action= wordt bekeken
  12. $action = get('action', 'x');
  13.  
  14. if($action == 'add') {
  15.  
  16. if($_SERVER['REQUEST_METHOD'] == 'POST') { // Als er op Add is geklikt
  17.  
  18. $text = input($_POST['text']); // De $_POST wordt beveiligd
  19. $name = input($_POST['name']); // etc..
  20. $size = input($_POST['size']);
  21. $maxlength = input($_POST['maxlength']);
  22. $type = input($_POST['type']);
  23. $rows = input($_POST['rows']);
  24. $cols = input($_POST['cols']);
  25.  
  26. if($type == 'textarea') { // Als het opgeven type textarea is
  27. if(!is_numeric($rows) || !is_numeric($cols)) { // Zijn de rows en cols wel numeriek?
  28.  
  29. die('<br />Make sure rows and cols are numeric<br /><br /><a href="addfields.php">&rarr; Try again</a>'); // Nee, er wordt een melding gegeven en het script wordt beeindigd
  30.  
  31. } elseif(!$text || !$name || !$size || !$maxlength) { // De rows en cols zijn wel numeriek, tijd om te kijken of de rest is ingevuld
  32.  
  33. die('<br />Please fill in all fields<br /><br /><a href="addfields.php">&rarr; Try again</a>'); // Nee, niet alles is ingevuld
  34.  
  35. } elseif(!is_numeric($size) || !is_numeric($maxlength)) { // Alles is ingevuld en rows en cols zijn numeriek, maar de size en maxlength?
  36.  
  37. die('<br />Make sure the size and maxlength are numeric<br /><br /><a href="addfields.php">&rarr; Try again</a>'); // Nee, weer wordt er een error gegeven en het script wordt beeindigd.
  38.  
  39. } else { // Alles is goed, het script kan doorgaan
  40.  
  41. $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
  42.  
  43. if($exists < 1 && $name != 'Receiver') { // Als de name nog niet bestaat en de name niet Receiver is (want zo heet het hidden field) doorgaan
  44.  
  45. $pidQuery = mysql_query("SELECT * FROM contactfields ORDER BY pid DESC LIMIT 0, 1"); // De onderste pid ophalen
  46. $pidFetch = mysql_fetch_assoc($pidQuery); // Even fetchen
  47. $pid = $pidFetch['pid']+1; // Er 1 bij optellen zodat die onderaan komt
  48.  
  49. $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
  50.  
  51. if($query) { // Is de query goed?
  52.  
  53. header('Location: admin.php'); // Het is toegevoegd, doorgaan naar admin.php
  54.  
  55. } else {
  56.  
  57. print 'Error in database: '.mysql_error(); // Er is een fout, de fout wordt laten zien
  58.  
  59. }
  60.  
  61. } else {
  62.  
  63. die('<br />This name does already exists<br /><br /><a href="addfields.php">&rarr; Try again</a>'); // De name bestaat al
  64.  
  65. }
  66. }
  67. } elseif($type == 'text' || $type == 'password') { // Als het type geen textarea is maar text of password
  68. $rows = 0; // Rows zijn niet nodig
  69. $cols = 0; // Cols ook niet
  70.  
  71. if(!$text || !$name || !$size || !$maxlength) { // Zijn alle velden ingevuld?
  72.  
  73. die('<br />Please fill in all fields<br /><br /><a href="addfields.php">&rarr; Try again</a>'); // Nee, een melding wordt gegeven en het script stopgezet
  74.  
  75. } elseif(!is_numeric($size) || !is_numeric($maxlength)) { // Alle velden zijn ingevuld, zijn ze geldig?
  76.  
  77. die('<br />Make sure the size and maxlength are numeric<br /><br /><a href="addfields.php">&rarr; Try again</a>'); // De size en maxlength zijn niet numeriek; ongeldig dus.
  78.  
  79. } else { // Alles is geldig, het script kan doorgaan
  80.  
  81. $exists = mysql_num_rows(mysql_query("SELECT * FROM contactfields WHERE name='" . $name . "'")); // Bestaat de name al?
  82.  
  83. if($exists < 1 && $name != 'Receiver') { // Als de name nog niet bestaat en de name niet Receiver is (want zo heet het hidden field) doorgaan
  84.  
  85. $pidQuery = mysql_query("SELECT * FROM contactfields ORDER BY pid DESC LIMIT 0, 1"); // De onderste pid ophalen
  86. $pidFetch = mysql_fetch_assoc($pidQuery); // Even fetchen
  87. $pid = $pidFetch['pid']+1; // Er 1 bij optellen zodat die onderaan komt
  88.  
  89. $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
  90.  
  91. if($query) { // Is de query goed?
  92.  
  93. header('Location: admin.php'); // Het is toegevoegd, doorgaan naar admin.php
  94.  
  95. } else {
  96.  
  97. print 'Error in database: '.mysql_error(); // Er is een fout, de fout wordt laten zien
  98.  
  99. }
  100.  
  101. } else {
  102.  
  103. die('<br />This name does already exists<br /><br /><a href="addfields.php">&rarr; Try again</a>'); // De name bestaat al
  104.  
  105. }
  106.  
  107. }
  108.  
  109.  
  110. } else {
  111.  
  112. die('<br />Unknown type<br /><br /><a href="addfields.php">&rarr; Try again</a>'); // De type is geen textarea, text of password. Dit is alleen mogelijk als iemand het script op een verkeerde manier gebruikt!
  113.  
  114. }
  115.  
  116.  
  117. } else {
  118.  
  119. die('<br />Hacking attempt'); // Iemand is handmatig naar ?action=add gegaan zonder het formulier te gebruiken
  120.  
  121. }
  122.  
  123. } else { // Er is nog niks verzonden, het formulier wordt laten zien.
  124. ?>
  125.  
  126. <form action="?action=add" method="post">
  127. Text:<br />
  128. <input type="text" name="text" size="60" maxlength="255" value=""><br /><br />
  129. Name:<br />
  130. <input type="text" name="name" size="60" maxlength="255" value=""><br /> <br />
  131. Size:<br />
  132. <input type="text" name="size" size="60" maxlength="255" value="30"><br /> <br />
  133. Maxlength:<br />
  134. <input type="text" name="maxlength" size="60" maxlength="255" value="255"><br /><br />
  135. Type:<br />
  136. <select name="type"><option value="text">Text</option><option value="textarea">Textarea</option><option value="password">Password</option></select><br /><br />
  137. Rows (textarea):<br />
  138. <input type="text" name="rows" size="60" maxlength="255" value=""><br /><br />
  139. Cols (textarea):<br />
  140. <input type="text" name="cols" size="60" maxlength="255" value=""><br /><br />
  141. <br />
  142. <input type="submit" value="Add" class="button">
  143. </form>
  144.  
  145. <br /><br /><a href="admin.php">&rarr; Back to admin home</a>
  146.  
  147. <?php
  148. }
  149.  
  150. include("footer.php");
  151. ?>


Admin.php
  1. <?php
  2.  
  3. // De config wordt ingelezen
  4. require_once("config.inc.php");
  5.  
  6. include("header.php");
  7.  
  8. print '<h2>Dynamic Contact Page</h2>';
  9.  
  10.  
  11. $select = mysql_query("SELECT * FROM contactfields ORDER BY pid ASC"); // Alle velden worden opgehaald
  12. $fields = @mysql_num_rows($select); // Kijken of er al velden zijn
  13.  
  14. if($fields < 1) { // Kijken wat het resultaat was
  15.  
  16. print '<br /><i>Please add a field</i><br /><br />'; // Er zijn nog geen velden toegevoegd
  17.  
  18. } else { // Er zijn al 1 of meer velden
  19.  
  20. while($fetch = mysql_fetch_assoc($select)) { // Zorgen dat alle velden opgehaald worden
  21.  
  22. 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'].'">&radic;</a>&nbsp; <a href="delete.php?id='.$fetch['id'].'">&times;</a>&nbsp; <a href="move.php?moveUp='.$fetch['id'].'">&uarr;</a>&nbsp; <a href="move.php?moveDown='.$fetch['id'].'">&darr;</a></div><div class="clear"></div></div>'; // En laten zien
  23.  
  24. }
  25.  
  26. }
  27.  
  28. ?>
  29. <br />
  30. <small>&radic; = edit | &times; = delete | &uarr; = move up | &darr; = move up </small><br /><br />
  31. I want to <a href="clients.php">manage the clients</a>. Or maybe <a href="addfields.php">add a field</a>.
  32.  
  33. <?php
  34.  
  35. include("footer.php");
  36.  
  37. ?>


Clients.php
  1. <?php
  2.  
  3. // De config wordt ingelezen
  4. require_once("config.inc.php");
  5.  
  6. include("header.php");
  7. print '<h2>Dynamic Contact Page</h2>';
  8.  
  9.  
  10. if($_SERVER['REQUEST_METHOD'] == 'POST') { // Is er al iets verzonden?
  11.  
  12. $email = input($_POST['email']);
  13.  
  14. if(checkemail($email)) {
  15.  
  16. $query = mysql_query("INSERT INTO email (email) VALUES ('".$email."')");
  17.  
  18. if($query) {
  19.  
  20. header('Location: clients.php');
  21.  
  22. } else {
  23.  
  24. die('Error in database');
  25.  
  26. }
  27.  
  28. } else {
  29.  
  30. die('<br />Invalid email<br /><br /><a href="clients.php">&rarr; Try again</a>');
  31.  
  32. }
  33.  
  34. } else { // Nee, de boel uitlezen dus.
  35.  
  36. $select = mysql_query("SELECT * FROM email ORDER BY id ASC"); // Alle emails ophalen
  37. $firstrun = mysql_num_rows($select); // Hoeveel resultaten
  38.  
  39. if($firstrun < 1) { // Geen resultaten, er zijn nog geen emails.
  40.  
  41. $query = mysql_query("INSERT INTO email (email) VALUES ('noreply@example.com')"); // Een standaard wordt toegevoegd
  42.  
  43. if($query) { // Is de query goed uitgevoerd?
  44.  
  45. header('Location: clients.php'); // Even een simpele refresh om de email zichtbaar te maken
  46. exit(); // De pagina wordt beeindigd.
  47.  
  48. } else {
  49.  
  50. die('Error in database'); // Er is een fout opgetreden
  51.  
  52. }
  53.  
  54. }
  55.  
  56. while($fetch = mysql_fetch_assoc($select)) { // Zorgen dat alle resultaten uitgelezen worden
  57.  
  58. print '<div class="listitem"><div class="floatleft" style="width: 350px; padding: 6px 0 0 0;">'.$fetch['id'].' &mdash; '.$fetch['email'].' </div><div class="floatright actions"><a href="remove.php?id='.$fetch['id'].'">&times;</a></div><div class="clear"></div></div>'; // Uitlezen
  59.  
  60. }
  61.  
  62. ?>
  63.  
  64. <form action="clients.php" method="post">
  65. <br />
  66. <input type="text" name="email" maxlength="255" value="" size="40">
  67. <input type="submit" value="Add" class="button">
  68. </form>
  69.  
  70. <br /><br /><a href="admin.php">&rarr; Back to admin home</a>
  71. <?php
  72. }
  73. include("footer.php");
  74. ?>


Config.inc.php
  1. <?php
  2. $dbServer = "localhost"; // De host waarop je dit script draait
  3. $dbUser = "root"; // De gebruiker om een connectie naar de database te kunnen maken
  4. $dbPass = ""; // Het wachtwoord dat bij de gebruiker hoort
  5. $dbDbName = ""; // De naam van de database waar alles in is opgeslagen
  6.  
  7. mysql_connect ($dbServer, $dbUser, $dbPass) or die (mysql_error()); // De connectie wordt gemaakt
  8. mysql_select_db($dbDbName) or die (mysql_error()); // De database wordt geselecteerd
  9.  
  10. // Functies worden aangemaakt
  11.  
  12. if(!function_exists('input')) { // Als die nog niet bestaat aanmaken
  13.  
  14. function input($value) // Deze functie beveiligd inputs om fouten te voorkomen
  15. {
  16. if (!in_array(ini_get('magic_quotes_gpc'), array('', '0', 'Off', 'False', 'No'))) {
  17. $value = stripslashes($value);
  18. }
  19.  
  20. if (!is_numeric($value)) {
  21. $value = htmlentities($value);
  22. $value = mysql_real_escape_string($value);
  23. }
  24.  
  25. return $value;
  26. }
  27. }
  28.  
  29. if(!function_exists('get')) { // Als die nog niet bestaat aanmaken
  30.  
  31. function get($item, $default) { // Deze functie is gelijk aan $_GET en geeft een default mee als hij niet is opgegeven in de URL
  32.  
  33. return (isset($_GET[$item]) ? $_GET[$item] : $default);
  34.  
  35. }
  36.  
  37. }
  38.  
  39. if(!function_exists('checkemail')) { // Als die nog niet bestaat aanmaken
  40.  
  41. function checkemail($input) { // Deze functie is gemaakt door FangorN
  42.  
  43. $pattern = "/^([a-z0-9_-]+\.)*[a-z0-9_-]+@([a-z0-9_-]{2,}\.)+([a-z0-9_-]{2,})$/i"; // De reguliere expressie om het emailadres te controleren
  44. return preg_match($pattern, $input);
  45.  
  46. }
  47.  
  48. }
  49.  
  50. // Error reporting
  51. error_reporting(E_ALL ^ E_NOTICE);
  52. ?>


Contact.php
  1. <?php
  2.  
  3. // De config wordt ingelezen
  4. require_once("config.inc.php");
  5.  
  6. include("header.php");
  7.  
  8.  
  9. // Naar welke client moet het verstuurd worden?
  10. $client = get('client', 'x');
  11.  
  12. $select = mysql_query("SELECT * FROM contactfields ORDER BY pid ASC"); // Alle forms worden opgehaald
  13. $check = @mysql_num_rows($select); // Hoeveel forms er zijn
  14.  
  15. if($check < 1) { // Zijn er al wel forms?
  16.  
  17. print 'Please add at least one field first.'; // Wel eerst forms toevoegen
  18.  
  19. } else { // Er zijn al forms
  20.  
  21. $client = mysql_query("SELECT * FROM email WHERE id=".$client.""); // Welke email hoort bij de client?
  22. $toclient = @mysql_fetch_assoc($client);
  23. $exists = @mysql_num_rows($client); // Bestaat deze client wel
  24.  
  25. if($exists > 0) { // Er bestaat een email met deze client ID
  26.  
  27. print '<form action="send.php" method="post">'; // Het begin van de form
  28.  
  29. while($fetch = mysql_fetch_assoc($select)) { // Alle forms komen aan de beurt
  30.  
  31. if($fetch['type'] == 'textarea') { // Is het een textarea?
  32.  
  33. print $fetch['text'].':<br /><textarea class="nowidth" name="'.$fetch['name'].'" cols="'.$fetch['cols'].'" rows="'.$fetch['rows'].'"></textarea><br />'; // De textarea uitlezen
  34.  
  35. } else { // Nee het is een password of text type
  36.  
  37. print $fetch['text'].':<br /><input class="nowidth" type="'.$fetch['type'].'" name="'.$fetch['name'].'" size='.$fetch['size'].' maxlength='.$fetch['maxlength'].'><br />'; // Uitlezen
  38.  
  39. }
  40.  
  41. }
  42.  
  43. print '<input type="hidden" name="Receiver" value="'.$toclient['email'].'">'; // Een hidden input met de client
  44.  
  45. } else { // Er bestaat geen email met deze client ID
  46.  
  47. die('No client found with this ID.'); // En dat laten we even zien
  48.  
  49. }
  50. ?>
  51.  
  52. <br />
  53. <input type="submit" class="button" value="Send">
  54. </form>
  55.  
  56. <?php
  57. }
  58.  
  59. include("footer.php");
  60. ?>


Delete.php
  1. <?php
  2.  
  3. // De config wordt ingelezen
  4. require_once("config.inc.php");
  5.  
  6. include("header.php");
  7.  
  8.  
  9. $id = get('id', 'x'); // De ?id= ophalen
  10. $confirmed = get('confirmed', 'no'); // Hetzelfde voor ?confirmed=
  11.  
  12. if(is_numeric($id)) { // Is de id numeriek?
  13.  
  14. if($confirmed == 'yes' && $_SERVER['REQUEST_METHOD'] == 'POST') { // Is het zeker dat er verwijderd mag worden
  15.  
  16. $errorCount = 1; // Deze wordt verhoogd zodra er errors optreden
  17.  
  18. $select = mysql_query("SELECT pid FROM contactfields WHERE id=".$id.""); // De bijbehorende pid wordt gezocht
  19. $idPid = mysql_fetch_assoc($select); // Even fetchen
  20.  
  21. $queries[] = "UPDATE contactfields SET pid=pid-1 WHERE pid > ".$idPid['pid'].""; // Alle fields schuiven op
  22. $queries[] = "DELETE FROM contactfields WHERE id=".$id.""; // De query om het field te verwijderen
  23.  
  24. foreach($queries as $query) { // Zorgen dat de hele array met queries aan de beurt komt
  25. if(!$result = mysql_query($query)) {
  26. $errorCount++; // Als de query niet goed verloopt wordt dit toegevoegd aan de error count
  27. }
  28. }
  29.  
  30. if($errorCount == 1) { // Als er geen errors zijn opgetreden zijn moet deze nog 1 zijn
  31.  
  32. header('Location: admin.php'); // Doorsturen naar admin.php
  33.  
  34. } else { // Er zijn wel errors
  35.  
  36. print 'Error in database: '.mysql_error(); // De error laten zien
  37. exit(); // Pagina stopzetten
  38.  
  39. }
  40.  
  41. } else { // Er is nog niet verzonden, er wordt een verificatie gevraagd
  42.  
  43.  
  44. <form action="?id='.$id.'&confirmed=yes" method="post">
  45. Are you sure you want to delete the field?
  46. <br />
  47. <br />
  48. <input type="submit" value="Yes" class="button">
  49. </form>
  50.  
  51. ';
  52.  
  53. }
  54.  
  55. } else { // De ID is niet numeriek, iemand heeft met de url gespeeld
  56.  
  57. header('Location: admin.php'); // Doorsturen naar admin.php
  58. exit(); // De pagina wordt beeindigd
  59.  
  60. }
  61. include("footer.php");
  62. ?>


Edit.php
  1. <?php
  2.  
  3. // De config wordt ingelezen
  4. require_once("config.inc.php");
  5.  
  6. include("header.php");
  7.  
  8. print '<h2>Dynamic Contact Page</h2>';
  9.  
  10.  
  11. // De ?action= en &id= worden bekeken
  12. $action = get('action', 'x');
  13. $id = get('id', 'x');
  14.  
  15. if($action == 'add' && is_numeric($id)) {
  16.  
  17. if($_SERVER['REQUEST_METHOD'] == 'POST') { // Als er op Add is geklikt
  18.  
  19. $getName = get('name', 'x');
  20. $text = input($_POST['text']); // De $_POST wordt beveiligd
  21. $name = input($_POST['name']); // etc..
  22. $size = input($_POST['size']);
  23. $maxlength = input($_POST['maxlength']);
  24. $type = input($_POST['type']);
  25. $rows = input($_POST['rows']);
  26. $cols = input($_POST['cols']);
  27.  
  28. if($type == 'textarea') { // Als het opgeven type textarea is
  29. if(!is_numeric($rows) || !is_numeric($cols)) { // Zijn de rows en cols wel numeriek?
  30.  
  31. die('<br />Make sure rows and cols are numeric<br /><br /><a href="edit.php?id='.$id.'">&rarr; Try again</a>'); // Nee, er wordt een melding gegeven en het script wordt beeindigd
  32.  
  33. } elseif(!$text || !$name || !$size || !$maxlength) { // De rows en cols zijn wel numeriek, tijd om te kijken of de rest is ingevuld
  34.  
  35. die('<br />Please fill in all fields<br /><br /><a href="edit.php?id='.$id.'">&rarr; Try again</a>'); // Nee, niet alles is ingevuld
  36.  
  37. } elseif(!is_numeric($size) || !is_numeric($maxlength)) { // Alles is ingevuld en rows en cols zijn numeriek, maar de size en maxlength?
  38.  
  39. die('<br />Make sure the size and maxlength are numeric<br /><br /><a href="edit.php?id='.$id.'">&rarr; Try again</a>'); // Nee, weer wordt er een error gegeven en het script wordt beeindigd.
  40.  
  41. } else { // Alles is goed, het script kan doorgaan
  42.  
  43. if($name != $getName) { // Dit moet alleen als de naam gewijzigd is
  44. $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
  45. } else {
  46. $exists = 0; // Om errors te voorkomen
  47. }
  48.  
  49. if($exists < 1 && $name != 'Receiver') { // Als de name nog niet bestaat en de name niet Receiver is (want zo heet het hidden field) doorgaan
  50.  
  51. $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
  52.  
  53. if($query) { // Is de query goed?
  54.  
  55. print '<br />The field was succesfully edited.<br /><br /><a href="admin.php">&rarr; Back to admin home</a>';
  56.  
  57. } else {
  58.  
  59. print 'Error in database: '.mysql_error(); // Er is een fout, de fout wordt laten zien
  60.  
  61. }
  62.  
  63. } else {
  64.  
  65. die('<br />This name does already exists<br /><br /><a href="edit.php?id='.$id.'">&rarr; Try again</a>'); // De name bestaat al
  66.  
  67. }
  68. }
  69. } elseif($type == 'text' || $type == 'password') { // Als het type geen textarea is maar text of password
  70. $rows = 0; // Rows zijn niet nodig
  71. $cols = 0; // Cols ook niet
  72.  
  73. if(!$text || !$name || !$size || !$maxlength) { // Zijn alle velden ingevuld?
  74.  
  75. die('<br />Please fill in all fields<br /><br /><a href="edit.php?id='.$id.'">&rarr; Try again</a>'); // Nee, een melding wordt gegeven en het script stopgezet
  76.  
  77. } elseif(!is_numeric($size) || !is_numeric($maxlength)) { // Alle velden zijn ingevuld, zijn ze geldig?
  78.  
  79. die('<br />Make sure the size and maxlength are numeric<br /><br /><a href="edit.php?id='.$id.'">&rarr; Try again</a>'); // De size en maxlength zijn niet numeriek; ongeldig dus.
  80.  
  81. } else { // Alles is geldig, het script kan doorgaan
  82.  
  83. if($name != $getName) { // Dit moet alleen als de naam gewijzigd is
  84. $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
  85. } else {
  86. $exists = 0; // Om errors te voorkomen
  87. }
  88.  
  89. if($exists < 1 && $name != 'Receiver') { // Als de name nog niet bestaat en de name niet Receiver is (want zo heet het hidden field) doorgaan
  90.  
  91. $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
  92.  
  93. if($query) { // Is de query goed?
  94.  
  95. print '<br />The field was succesfully edited.<br /><br /><a href="admin.php">&rarr; Back to admin home</a>';
  96.  
  97. } else {
  98.  
  99. print 'Error in database: '.mysql_error(); // Er is een fout, de fout wordt laten zien
  100.  
  101. }
  102.  
  103. } else {
  104.  
  105. die('<br />This name does already exists<br /><br /><a href="edit.php?id='.$id.'">&rarr; Try again</a>'); // De name bestaat al
  106.  
  107. }
  108.  
  109. }
  110.  
  111.  
  112. } else {
  113.  
  114. die('<br />Unknown type<br /><br /><a href="edit.php?id='.$id.'">&rarr; Try again</a>'); // De type is geen textarea, text of password. Dit is alleen mogelijk als iemand het script op een verkeerde manier gebruikt!
  115.  
  116. }
  117.  
  118.  
  119. } else {
  120.  
  121. die('<br />Hacking attempt'); // Iemand is handmatig naar ?action=add gegaan zonder het formulier te gebruiken
  122.  
  123. }
  124.  
  125. } else { // Er is nog niks verzonden, het formulier wordt laten zien.
  126.  
  127. if(is_numeric($id)) { // Als de ID numeriek is doorgaan
  128.  
  129. $select = mysql_query("SELECT * FROM contactfields WHERE id = ".$id.""); // Alle forms worden opgehaald
  130. $check = @mysql_num_rows($select); // Hoeveel forms er zijn
  131.  
  132. if($check > 0) { // Als er wel fields zijn opgehaald, anders is het een foute ID
  133.  
  134. $fetch = mysql_fetch_assoc($select); // De results fetchen zodat ik ze kan gebruiken
  135. ?>
  136.  
  137. <form action="?action=add&id=<?php print $id; ?>&name=<?php print $fetch['name']; ?>" method="post">
  138. Text:<br />
  139. <input type="text" name="text" size="60" maxlength="255" value="<?php print $fetch['text']; ?>"><br /><br />
  140. Name:<br />
  141. <input type="text" name="name" size="60" maxlength="255" value="<?php print $fetch['name']; ?>"><br /> <br />
  142. Size:<br />
  143. <input type="text" name="size" size="60" maxlength="255" value="<?php print $fetch['size']; ?>"><br /> <br />
  144. Maxlength:<br />
  145. <input type="text" name="maxlength" size="60" maxlength="255" value="<?php print $fetch['maxlength']; ?>"><br /><br />
  146. Type:<br />
  147.  
  148. <?php
  149. if($fetch['type'] == 'text') { // In het geval van text moet text eerst
  150.  
  151. print '<select name="type"><option value="text">Text</option><option value="textarea">Textarea</option><option value="password">Password</option></select>';
  152.  
  153. } elseif($fetch['type'] == 'textarea') { // hetzelfde geldt voor textarea
  154.  
  155. print '<select name="type"><option value="textarea">Textarea</option><option value="text">Text</option><option value="password">Password</option></select>';
  156.  
  157. } else { // Het is geen text en ook geen textarea dus een password type, weer geldt hetzelfde
  158.  
  159. print '<select name="type"><option value="password">Password</option><option value="textarea">Textarea</option><option value="text">Text</option></select>';
  160.  
  161. }
  162. ?>
  163.  
  164. <br /><br />
  165. Rows (textarea):<br />
  166. <input type="text" name="rows" size="60" maxlength="255" value="<?php print $fetch['rows']; ?>"><br /><br />
  167. Cols (textarea):<br />
  168. <input type="text" name="cols" size="60" maxlength="255" value="<?php print $fetch['cols']; ?>"><br /><br />
  169. <br />
  170. <input type="submit" value="Edit" class="button">
  171. </form>
  172.  
  173. <br /><br /><a href="admin.php">&rarr; Back to admin home</a>
  174.  
  175. <?php
  176. } else { // Foutieve ID. Hij bestaat niet
  177. header('Location: admin.php'); // Ga maar terug naar admin.php en niet meer met de url spelen
  178. exit(); // De pagina wordt afgebroken
  179. }
  180.  
  181. } else { // De ID is niet numeriek
  182. header('Location: admin.php'); // Ga maar terug naar admin.php en niet meer met de url spelen
  183. exit(); // De pagina wordt afgebroken
  184. }
  185.  
  186. }
  187.  
  188. include("footer.php");
  189. ?>


Footer.php
  1. </body>
  2. </html>


header.php
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-gb" xml:lang="en-gb">
  3. <title>Dynamic Contact Page</title>
  4. <link rel="stylesheet" href="styles.css" />
  5. </head>


Move.php
  1. <?php
  2.  
  3. // De config wordt ingelezen
  4. require_once("config.inc.php");
  5.  
  6. include("header.php");
  7.  
  8.  
  9. // Moet die omlaag of omhoog?
  10. $moveUp = get('moveUp', 'none');
  11. $moveDown = get('moveDown', 'none');
  12.  
  13. if(is_numeric($moveUp) && $moveDown == 'none') { // Dit uitvoeren als die omhoog moet
  14.  
  15. $query = mysql_query("SELECT * FROM contactfields WHERE id=".$moveUp.""); // Query om wat info op te halen
  16. $exists = mysql_num_rows($query); // De resultaten tellen
  17.  
  18. if($exists > 0) { // Als de field bestaat doorgaan
  19.  
  20. $errorCount = 1; // Als er errors voorkomen wordt dat hier bij op geteld
  21. $fetch = mysql_fetch_array($query); // De query wordt gefetched, zodat ik hem makkelijk kan gebruiken
  22.  
  23. if($fetch['pid'] == 1) { // Als die al op de eerste plek staat kan die niet hoger
  24. die('<br />This field is already at the top<br /><br /><a href="admin.php">&rarr; Go back to admin home</a>');
  25. }
  26.  
  27. $queries[] = "UPDATE contactfields SET pid=pid+1 WHERE pid=".($fetch['pid']-1).""; // Diegene boven hem gaat 1 naar onderen
  28. $queries[] = "UPDATE contactfields SET pid=pid-1 WHERE id=".$moveUp.""; // Het field zelf gaat 1 plek naar boven
  29.  
  30. foreach($queries as $query) { // Zorgen dat de hele array met queries aan de beurt komt
  31. if(!$result = mysql_query($query)) {
  32. $errorCount++; // Als de query niet goed verloopt wordt dit toegevoegd aan de error count
  33. }
  34. }
  35.  
  36. if($errorCount == 1) { // Als de error count niet verhoogt is is alles goed gegaan
  37.  
  38. header('Location: admin.php'); // Doorsturen naar admin.php
  39.  
  40. } else { // Er is iets fout gegaan
  41.  
  42. print 'Error: '.mysql_error();
  43.  
  44. }
  45.  
  46. } else { // De field bestaat niet, er is met de URL gespeeld
  47.  
  48. header('Location: admin.php'); // Doorsturen naar admin.php
  49. exit();
  50.  
  51. }
  52.  
  53. } elseif(is_numeric($moveDown) && $moveUp == 'none') { // Dit uitvoeren als die omlaag moet
  54.  
  55. $query = mysql_query("SELECT * FROM contactfields WHERE id=".$moveDown.""); // Query om wat info op te halen
  56. $exists = mysql_num_rows($query); // De resultaten tellen
  57.  
  58. if($exists > 0) { // Als de field bestaat doorgaan
  59.  
  60. $errorCount = 1; // Als er errors voorkomen wordt dat hier bij op geteld
  61. $fetch = mysql_fetch_array($query); // De query wordt gefetched, zodat ik hem makkelijk kan gebruiken
  62. $countRows = mysql_num_rows(mysql_query("SELECT * FROM contactfields")); // Het aantal fields tellen
  63.  
  64. if($fetch['pid'] == $countRows) { // Als die al op de laagste plek staat kan die niet hoger
  65. die('<br />This field is already at the bottom<br /><br /><a href="admin.php">&rarr; Go back to admin home</a>');
  66. }
  67.  
  68. $queries[] = "UPDATE contactfields SET pid=pid-1 WHERE pid=".($fetch['pid']+1).""; // Diegene boven hem gaat 1 naar boven
  69. $queries[] = "UPDATE contactfields SET pid=pid+1 WHERE id=".$moveDown.""; // Het field zelf gaat 1 plek naar onderen
  70.  
  71. foreach($queries as $query) { // Zorgen dat de hele array met queries aan de beurt komt
  72. if(!$result = mysql_query($query)) {
  73. $errorCount++; // Als de query niet goed verloopt wordt dit toegevoegd aan de error count
  74. }
  75. }
  76.  
  77. if($errorCount == 1) { // Als de error count niet verhoogt is is alles goed gegaan
  78.  
  79. header('Location: admin.php'); // Doorsturen naar admin.php
  80.  
  81. } else { // Er is iets fout gegaan
  82.  
  83. print 'Error: '.mysql_error();
  84.  
  85. }
  86.  
  87. } else { // De field bestaat niet, er is met de URL gespeeld
  88.  
  89. header('Location: admin.php'); // Doorsturen naar admin.php
  90. exit();
  91.  
  92. }
  93.  
  94. } else { // Als er met de URL is gespeeld of de pagina verkeerd is aangeroepen
  95.  
  96. header('Location: admin.php'); // Doorsturen naar admin.php
  97. exit();
  98.  
  99. }
  100.  
  101. include("footer.php");
  102. ?>


Remove.php
  1. <?php
  2.  
  3. // De config wordt ingelezen
  4. require_once("config.inc.php");
  5.  
  6.  
  7. include("header.php");
  8.  
  9. $id = get('id', 'x'); // De ?id= wordt opgehaald
  10. $confirmed = get('confirmed', 'no'); // En hetzelfde gebeurd met ?confirmed=
  11.  
  12. if(is_numeric($id)) { // Is de id numeriek?
  13.  
  14. if($confirmed == 'yes' && $_SERVER['REQUEST_METHOD'] == 'POST') { // Is het zeker dat er verwijderd mag worden
  15.  
  16. $query = mysql_query("DELETE FROM email WHERE id=".$id.""); // De query om de client te verwijderen
  17.  
  18. if($query) { // Is het verwijderen goed gegaan?
  19.  
  20. header('Location: clients.php'); // Doorsturen naar clients.php
  21.  
  22. } else { // Er is iets fout gegegaan
  23.  
  24. print 'Error in database: '.mysql_error(); // De error laten zien
  25.  
  26. }
  27.  
  28. } else { // Er is nog niet verzonden, er wordt een verificatie gevraagd
  29.  
  30.  
  31. <form action="?id='.$id.'&confirmed=yes" method="post">
  32. Are you sure you want to delete the client?
  33. <br />
  34. <br />
  35. <input type="submit" value="Yes">
  36. </form>
  37.  
  38. ';
  39.  
  40. }
  41.  
  42. } else { // De ID is niet numeriek, iemand heeft met de url gespeeld
  43.  
  44. header('Location: admin.php'); // Doorsturen naar admin.php
  45. exit(); // De pagina wordt beeindigd
  46.  
  47. }
  48.  
  49. include("footer.php");
  50. ?>


Send.php
  1. <?php
  2.  
  3. // De config wordt ingelezen
  4. require_once("config.inc.php");
  5.  
  6. include("header.php");
  7.  
  8.  
  9. if($_SERVER['REQUEST_METHOD'] == 'POST') {
  10.  
  11. $sender = "Contact";
  12. $email = $_POST['Receiver'];
  13. $subject = "Contact via website";
  14. $message = "----START OF MESSAGE----\n\n";
  15.  
  16. foreach($_POST as $k => $v) {
  17.  
  18. $message .= $k.": - ".$v."\n\n";
  19.  
  20. }
  21.  
  22. $message .= "\n----END OF MESSAGE----";
  23.  
  24.  
  25. $headers = "MIME-Version: 1.0\r\n";
  26. $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
  27. $headers .= "To: ".$email." <".$email.">\r\n";
  28. $headers .= "From: ".$sender." <".$email.">\r\n";
  29.  
  30. $message = nl2br($message);
  31. $mail = @mail($email, $subject, $message, $headers);
  32.  
  33. if($mail) {
  34.  
  35. print 'Your mail has been sent.';
  36.  
  37. } else {
  38.  
  39. print '<h3>ERROR: The following mail could not be sent:</h3><h5>Please check your mail settings and possibilities.</h5><br
  40. /><br />'.$message;
  41.  
  42. }
  43.  
  44. } else {
  45.  
  46. header('Location: contact.php');
  47. }
  48.  
  49. include("footer.php");
  50. ?>


Styles.css
  1. body {
  2. background: #f5f5f5;
  3. margin: 7%;
  4. font: 14px/18px "lucida sans";
  5. color: #0f374a;
  6.  
  7. }
  8.  
  9. a, a:link, a:active, a:visited {
  10. color: #517687;
  11. text-decoration: none;
  12. border-bottom: 1px solid #d7e7ef;
  13. }
  14. a:hover {
  15. border-color: #94a9b4;
  16. }
  17.  
  18. input, textarea, select {
  19. padding: 10px;
  20. font-size: 16px;
  21. background: #fff;
  22. border: 1px solid #eee;
  23. color: #666;
  24. width: 500px;
  25. }
  26. select {
  27. width: 522px;
  28. }
  29. input:hover, input:focus, textarea:hover, textarea:focus, select:hover, select:focus {
  30. background: #fafafa;
  31. color: #000;
  32. border-color: #ddd;
  33. }
  34. .button {
  35. width: auto;
  36. cursor: pointer;
  37. padding: 10px 25px 10px 25px;
  38. font-size: 15px;
  39. font-weight: bold;
  40. }
  41.  
  42. .floatleft {
  43. float: left;
  44. position: relative;
  45. }
  46. .floatright {
  47. float: right;
  48. position: relative;
  49. }
  50. h2 {
  51. font-size: 24px;
  52. }
  53.  
  54. .clear {
  55. clear: both;
  56. }
  57. .listitem {
  58. border-bottom: 1px solid #eee;
  59. }
  60. .actions {
  61. margin: 5px;
  62. }
  63. .actions a {
  64. padding: 1px 8px 1px 8px;
  65. border: 0;
  66. font-weight: bold;
  67. border: 1px solid transparent;
  68. }
  69. .actions a:hover {
  70. background: white;
  71. border-color: #ddd;
  72. }
  73.  
  74. .nowidth {
  75. width: auto;
  76. }
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (15)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.189s