de inhoud van een dynamisch formulier emailen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Redoin Slimani

Redoin Slimani

02/08/2014 10:08:38
Quote Anchor link
Ik heb een basic inlog, registreer en uitlog systeem voor een website gemaakt met behulp van een youtube tutorial en dreamweaver. Na het succesvol registreren wordt er een webpagina getoond dat het registreren geslaagd is. Graag zou ik willen dat het succesvol registreren per email bevestigd wordt naar degene die zich geregistreerd heeft. De vraag is hoe ik een extra actie (het emailen) kan toevoegen?

Het maken van een mailscript wordt op veel plaatsen uitgelegd maar ik zie nergens hoe je aan een bestaand php webformulier een mailscript kan toevoegen/koppelen zodat er een mail gestuurd kan worden. Bij het registreren voor dit forum moest ik ook gegevens invoeren die waarschijnlijk via een koppeling in een phpmyadmin database terecht komen en waarvan ik een bevestiging per email krijg. Zoiets moet het worden.

Kan iemand mij hiermee helpen of laten weten in welke hoek ik moet zoeken om mijn basic systeem te verbeteren?

Alvast hartelijk dank voor eventuele reacties.
 
PHP hulp

PHP hulp

19/04/2024 19:11:29
 
Shamrock Modelbouw

Shamrock Modelbouw

02/08/2014 10:47:38
Quote Anchor link
Een email kun je sturen via de mail functie (http://php.net/manual/en/function.mail.php)

Als je je registreert neem ik aan dat dit gebeurt via onderstaande code (of ongeveer zoiets):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?PHP
if($_SERVER['REQUEST_METHOD'] == 'POST')
{

   // Registreren in de database
}
else
{
   // Formulier om te registreren
}
?>



Hierin weet je de gebruikersnaam, wachtwoord en andere gegevens van een lid, deze sla je op in een database.

Dit doe je aan de hand van de ingevulde gegevens via ($_POST['gebruikersnaam'] etc...)

Deze gegevens kun je op die plek ook in de mail zetten
Je krijgt dan iets als:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?PHP
mail($_POST['email'], 'Aanmelding succes', "Beste Lid, je gegevens zijn: <BR>Gebruikersnaam: " . $_POST['gebruikersnaam'] . "<BR>Wachtwoord: " .$_POST['wachtwoord']);
?>


Succes!
 
Obelix Idefix

Obelix Idefix

02/08/2014 13:15:21
Quote Anchor link
Is het verstandig om $_POST waarden rechtstreeks te gebruiken?
Bij output kun je er toch beter bv htmlentities over heen gooien?

De mailfunctie van php heeft nogal wat variabelen (headers).
Foute headers kunnen o.a. tot gevolg hebben dat mail in de spam-box of zelfs helemaal niet aankomt.
PHPmailer of swiftmailer zijn classes die alle instellingen voor je uit handen nemen.
 
Redoin Slimani

Redoin Slimani

02/08/2014 13:21:14
Quote Anchor link
Bedankt voor jullie adviezen. Ik kan jullie adviezen helaas niet kan volgen vanwege een gebrek aan deskundigheid/basiskennis. Misschien helpt het als ik mijn website adres vermeld, dan zien jullie het login/registreer/uitlog systeem. http://elearning.progress4taxi.nl/login.php?accesscheck=%2Findex.php Als jullie mij met behulp van de link verder kunnen helpen misschien lukt het me dan wel om jullie adviezen te volgen.
 
Obelix Idefix

Obelix Idefix

02/08/2014 13:47:14
Quote Anchor link
Redoin Slimani op 02/08/2014 13:21:14:
Ik kan jullie adviezen helaas niet kan volgen vanwege een gebrek aan deskundigheid/basiskennis.

Dat wordt het tijd om die deskundigheid / basiskennis te vergroten ;-)
Als je dat niet wilt, kun je altijd nog een vacature plaatsen.
 
Shamrock Modelbouw

Shamrock Modelbouw

02/08/2014 14:16:18
Quote Anchor link
Obelix en Idefix op 02/08/2014 13:15:21:
Is het verstandig om $_POST waarden rechtstreeks te gebruiken?
Bij output kun je er toch beter bv htmlentities over heen gooien?


Het is ook maar een opzet wat ik geef

@Redoin Slimani: Post anders de code eens van je registreer formulier, daar kunnen we wat mee
 
Redoin Slimani

Redoin Slimani

02/08/2014 15:19:15
Quote Anchor link
Hoi Shamrock,

Hieronder de code van het registratieformulier. Ik weet niet hoe jij de code met regelnummers erin krijgt maar ik heb het direct hieronder geplakt.
Ter informatie ik heb eerst een basiswebsite gemaakt met behulp van Dreamweaver. Daarna heb ik de inlog/registratie/uitlog gemaakt. Dat werkt prima maar ik zou graag willen dat degene die registreert een email krijgt van dat zijn registratie succesvol is geweest.

Code:
<!DOCTYPE HTML>
<html>
<head>

<link rel="shortcut icon" href="favicon.ico" />

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/timothy.js"></script>
<script src="SpryAssets/SpryValidationSelect.js" type="text/javascript"></script>
<link href="css/styles.css" rel="stylesheet" type="text/css" media="screen">
<link href="css/print.css" rel="stylesheet" type="text/css" media="print">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Type" content="cache" />
<meta name="robots" content="NOINDEX,NOFOLLOW,NOYDIR,NOODP,NOARCHIVE" />
<meta name="googlebot" content="NOARCHIVE,NOODP,NOSNIPPET" />
<meta name="slurp" content="NOARCHIVE,NOYDIR,NOSNIPPET" />
<meta name="robots" content="noimageindex">
<meta name="keywords" content="Enter Keywords" />
<meta name="description" content="Description Here" />
<title>elearning.p4t</title>
<!-- Google Analytics Code Goes Below Here -->


<!-- End Google Analytics Code -->
<link href="SpryAssets/SpryValidationSelect.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="outer">
<div id="wrapper">

<div id="logo">
<img src="images/Progress4taxi_logoOranje (2).jpg" />
</div>

<div id="social-media-icons">
</div>

<div id="topnav">
</div>

<div id="banner">
</div>

<div id="content-fullwidth">
<h1>Registratie</h1>
<p>Vul hieronder uw gegevens in en klik op de knop gegevens verzenden</p>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php require_once('Connections/elearninnl.php'); ?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
if (!function_exists("GetSQLValueString")) {
function
GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{

  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }


  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case
"text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case
"long":
    case
"int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case
"double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case
"date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case
"defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }

  return $theValue;
}
}


$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}


if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO redoin (gebruikersnaam, wachtwoord, Voornaam, Achternaam, BSN, Geboortedatum, emailadres, Bedrijfsnaam) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['Gebruikersnaam'], "text"),
                       GetSQLValueString($_POST['Wachtwoord'], "text"),
                       GetSQLValueString($_POST['Voornaam'], "text"),
                       GetSQLValueString($_POST['Achternaam'], "text"),
                       GetSQLValueString($_POST['BSNnummer'], "int"),
                       GetSQLValueString($_POST['Geboortedatum'], "text"),
                       GetSQLValueString($_POST['Emailadres'], "text"),
                       GetSQLValueString($_POST['bedrijfsnaam'], "text"));

  mysql_select_db($database_elearninnl, $elearninnl);
  $Result1 = mysql_query($insertSQL, $elearninnl) or die(mysql_error());

  $insertGoTo = "bedankt.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }

  header(sprintf("Location: %s", $insertGoTo));
}


mysql_select_db($database_elearninnl, $elearninnl);
$query_RegistreerGebruikers = "SELECT * FROM  redoin";
$RegistreerGebruikers = mysql_query($query_RegistreerGebruikers, $elearninnl) or die(mysql_error());
$row_RegistreerGebruikers = mysql_fetch_assoc($RegistreerGebruikers);
$totalRows_RegistreerGebruikers = mysql_num_rows($RegistreerGebruikers);

mysql_select_db($database_elearninnl, $elearninnl);
$query_Recordset1 = "SELECT * FROM Bedrijfsnamen";
$Recordset1 = mysql_query($query_Recordset1, $elearninnl) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>

<script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
<form id="form1" name="form1" method="POST" action="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $editFormAction; ?>
">
<span id="sprytextfield1">
<input type="text" name="Voornaam" id="Voornaam" />
<span class="textfieldRequiredMsg">Een waarde is verplicht.</span>
<label for="Voornaam">Voornaam</label>
</span>
<p><span id="sprytextfield2">
<input type="text" name="Achternaam" id="Achternaam" />
<span class="textfieldRequiredMsg">Een waarde is verplicht.</span>
<label for="Achternaam">Achternaam</label>
</span></p>
<p><span id="sprytextfield3">
<input type="text" name="Geboortedatum" id="Geboortedatum" />
<label for="Geboortedatum">Geboortedatum</label>
<span class="textfieldInvalidFormatMsg">Ongeldige notatie.</span><span class="textfieldRequiredMsg">Een waarde is verplicht.</span></span></p>
<p><span id="sprytextfield4">
<input type="text" name="BSNnummer" id="BSNnummer" />
<label for="BSNnummer">BSN </label>
<span class="textfieldInvalidFormatMsg">Ongeldige notatie.</span><span class="textfieldRequiredMsg">Een waarde is verplicht.</span></span></p>
<p><span id="sprytextfield5">
<input type="text" name="Emailadres" id="Emailadres" />
<label for="Emailadres">Emailadres</label>
<span class="textfieldInvalidFormatMsg">Ongeldige notatie.</span><span class="textfieldRequiredMsg">Een waarde is verplicht.</span></span></p>
<p><span id="sprytextfield6">
<input type="text" name="Gebruikersnaam" id="Gebruikersnaam" />
<span class="textfieldRequiredMsg">Een waarde is verplicht.</span>
<label for="Gebruikersnaam">Gebruikersnaam</label>
</span></p>
<p><span id="sprytextfield7">
<input type="password" name="Wachtwoord" id="Wachtwoord" />
<span class="textfieldRequiredMsg">Een waarde is verplicht.</span>
<label for="Wachtwoord">Wachtwoord</label>
</span></p>
<table width="500" border="1" cellpadding="10">
<tr>
<td width="20%"><span id="spryselect1">
<label for="bedrijfsnaam">Bedrijfsnaam </label>
<span class="selectRequiredMsg">Selecteer een item.</span></span></td>
<td width="80%"><select name="bedrijfsnaam" id="bedrijfsnaam">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
do {  
?>

<option value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $row_Recordset1['bedrijfsnaam']?>
"
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if (!(strcmp($row_Recordset1['bedrijfsnaam'], $row_Recordset1['bedrijfsnaam']))) {echo "selected=\"selected\"";} ?>
>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $row_Recordset1['bedrijfsnaam']?>
</option>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
  $rows = mysql_num_rows($Recordset1);
  if($rows > 0) {
      mysql_data_seek($Recordset1, 0);
      $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  }

?>

</select></td>
</tr>
</table>
<p>&nbsp;</p>
<p>
<input type="submit" name="Registreer" id="Registreer" value="Gegevens verzenden" />
</p>
<input type="hidden" name="MM_insert" value="form1" />
</form>
<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "none");
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2", "none");
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3", "date", {format:"dd-mm-yyyy", hint:"dd-mm-jjjj"});
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4", "integer");
var sprytextfield5 = new Spry.Widget.ValidationTextField("sprytextfield5", "email");
var sprytextfield6 = new Spry.Widget.ValidationTextField("sprytextfield6", "none", {hint:"Kies een gebruikersnaam"});
var sprytextfield7 = new Spry.Widget.ValidationTextField("sprytextfield7", "none");
</script>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
mysql_free_result($RegistreerGebruikers);

mysql_free_result($Recordset1);
?>

<p>&nbsp;</p>
<div id="footer">
<p class="footer-text">P4T-2014</p>
</div>

</div>
</div>
<script type="text/javascript">
var spryselect1 = new Spry.Widget.ValidationSelect("spryselect1");
</script>
</body>
</html>



Toevoeging op 02/08/2014 15:21:58:

ik zie nu dat de reglenummering automatisch gebeurt bij php code.

Toevoeging op 02/08/2014 15:27:01:

Obelix en Idefix op 02/08/2014 13:47:14:
Redoin Slimani op 02/08/2014 13:21:14:
Ik kan jullie adviezen helaas niet kan volgen vanwege een gebrek aan deskundigheid/basiskennis.

Dat wordt het tijd om die deskundigheid / basiskennis te vergroten ;-)
Als je dat niet wilt, kun je altijd nog een vacature plaatsen.


Beste Obelix,

Je hebt gelijk. Het is gelukt met behulp van Dreamweaver en youtube om een basiswebsite te maken. Misschien heb je een suggestie voor een website of youtube film waarmee ik dat zou kunnen doen?
 
Shamrock Modelbouw

Shamrock Modelbouw

02/08/2014 15:40:38
Quote Anchor link
als je code wilt plakken zet je dit tussen ["code"] ... ["/code"] tags (zonder quotes)

In deze code wordt je gebruiker opgeslagen in de database:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?PHP
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO redoin (gebruikersnaam, wachtwoord, Voornaam, Achternaam, BSN, Geboortedatum, emailadres, Bedrijfsnaam) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['Gebruikersnaam'], "text"),
                       GetSQLValueString($_POST['Wachtwoord'], "text"),
                       GetSQLValueString($_POST['Voornaam'], "text"),
                       GetSQLValueString($_POST['Achternaam'], "text"),
                       GetSQLValueString($_POST['BSNnummer'], "int"),
                       GetSQLValueString($_POST['Geboortedatum'], "text"),
                       GetSQLValueString($_POST['Emailadres'], "text"),
                       GetSQLValueString($_POST['bedrijfsnaam'], "text"));

  mysql_select_db($database_elearninnl, $elearninnl);
  $Result1 = mysql_query($insertSQL, $elearninnl) or die(mysql_error());

  $insertGoTo = "bedankt.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }

  header(sprintf("Location: %s", $insertGoTo));
}

?>


Je ziet dat per colom een veld wordt opgeslagen (bv $_POST['Gebruikersnaam'])

$_POST geeft aan dat dit via een POST wordt meegestuurd, in jouw geval dus de gebruikersnaam, wachtwoord, voornaam, achternaam etc.

Dit is de regel die je gegevens daadwerkelijk in de database voegt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$Result1 = mysql_query($insertSQL, $elearninnl) or die(mysql_error());


Als je hieronder de mail functie gebruik zoals ik in het begin had aangegeven wordt na het invoegen in de database automatisch een mail gestuurd.

Zoiets kun je er dan van maken ongeveer (zelf aanpassen):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?PHP
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO redoin (gebruikersnaam, wachtwoord, Voornaam, Achternaam, BSN, Geboortedatum, emailadres, Bedrijfsnaam) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['Gebruikersnaam'], "text"),
                       GetSQLValueString($_POST['Wachtwoord'], "text"),
                       GetSQLValueString($_POST['Voornaam'], "text"),
                       GetSQLValueString($_POST['Achternaam'], "text"),
                       GetSQLValueString($_POST['BSNnummer'], "int"),
                       GetSQLValueString($_POST['Geboortedatum'], "text"),
                       GetSQLValueString($_POST['Emailadres'], "text"),
                       GetSQLValueString($_POST['bedrijfsnaam'], "text"));

  mysql_select_db($database_elearninnl, $elearninnl);
  $Result1 = mysql_query($insertSQL, $elearninnl) or die(mysql_error());

  mail(htmlentities($_POST['Emailadres']), 'Aanmelding succes', "Beste Lid, je gegevens zijn: <BR>Gebruikersnaam: " . htmlentities($_POST['Gebruikersnaam']) . "<BR>Wachtwoord: " .htmlentities($_POST['Wachtwoord']));


  $insertGoTo = "bedankt.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }

  header(sprintf("Location: %s", $insertGoTo));

?>


(Netjes zou ook zijn als je controleert of er geen fout is opgetreden en dan pas de bedankt pagina te laten zien, en anders eventueel een foutpagina).
Gewijzigd op 02/08/2014 15:43:16 door Shamrock Modelbouw
 
Redoin Slimani

Redoin Slimani

02/08/2014 16:44:58
Quote Anchor link
ik heb die regel toegevoegd precies zoals hierboven staat en getest door zelf te registreren met mijn eigen emailadres maar ik heb geen mail ontvangen.
Heb je enig idee wat ik zou moeten veranderen aan die regel om het werkend te krijgen?
 
Shamrock Modelbouw

Shamrock Modelbouw

02/08/2014 16:53:20
Quote Anchor link
staat die niet bij ongewenst?

Maak er anders een dit van:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?PHP
$headers
= "From: " . strip_tags($_POST['Emailadres']) . "\r\n";
$headers .= "Reply-To: ". strip_tags($_POST['Emailadres']) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

if(mail(htmlentities($_POST['Emailadres']), 'Aanmelding succes', "Beste Lid, je gegevens zijn: <BR>Gebruikersnaam: " . htmlentities($_POST['Gebruikersnaam']) . "<BR>Wachtwoord: " .htmlentities($_POST['Wachtwoord']), $headers))
{

    echo "Mail verstuurd";
}

else
{
    echo "Fout bij het versturen van de mail";
}


?>
 
Redoin Slimani

Redoin Slimani

02/08/2014 17:05:26
Quote Anchor link
Ik heb eerst bij ongewenste email gekeken maar daar stond niks van de eerste poging die ik misschien over het hoofd had gezien. Daarna heb ik op de plek waar ik de eerste regel had gezet, vervangen door de volgende regels (die hierboven staan) maar dat is ook niet gelukt. De gegevens blijven wel doorkomen in de phpmyadmin tabel maar er komt helaas geen mailtje binnen.

Toevoeging op 02/08/2014 17:08:57:

ik heb wat binnen

Toevoeging op 02/08/2014 17:12:35:

Hij komt in een map spam. Ik gebruik een google mailadres om te testen. In google zit een map spam. Daar zitten meerdere mailtjes van de pogingen in. Ik probeer het nu even met een ander emailadres, kijken hoe die dan reageert.

Toevoeging op 02/08/2014 17:46:56:

Na elke registratie volgt nu een emailbericht naar de geregistreerde met daarin de gebruikersnaam en wachtwoord. Zekerheidshalve heb ik op de bedankt pagina aangegeven dat als het bericht niet in de inbox zit het mogelijk in de map ongewenste mail of de map spam kan zitten.

Ik ben er heel blij mee, mijn dag is goed. Hartelijk dank voor het geduld en de hulp Shamrock.
 
- SanThe -

- SanThe -

02/08/2014 17:57:36
Quote Anchor link
http://phpwiki.santhe.nl/index.php?title=De_juiste_mailheaders

Een wachtwoord hoor je niet in een mailtje te versturen.
Mailtjes kunnen gelezen worden.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.