Nieuw lid |
|
Heey allemaal ik heb het volgende gevonden :
Als members zich op jou site kunnen inschrijven, dan wil je het liefst wel dat er niet onnodig veel profielen (of iets in de zin van) worden gemaakt. Dmv dit script kan je mensen een profiel laten maken. Maar voordat ze daarvan gebruik kunnen maken, moet deze eerst geactiveerd worden. Dit wordt gedaan door een activerings mailtje naar de persoon te sturen met een daarin unieke code. Alleen met die code kunnen zij hun profiel activeren. Op deze mannier weet je dus ook meteen of het opgegeven email-adres wel het juiste is.
Ik heb gebruik gemaakt van de tabel "temp_profiel", voor de tijdelijk profielen, en de tabel "profiel" deze is voor de geactiveerde profielen.
Er zijn een aantal dingen die je nog moet aanpassen, database-naam, password... etc Maar ik denk wel dat dat voor zich spreekt
Veel plezier met het script!
Mad_Mike
ps. zijn er vragen, laat ze horen!!
CREATE TABLE temp_profiel (
value varchar(35) NOT NULL default ",
code varchar(35) NOT NULL default ",
username varchar(255) NOT NULL default '',
voornaam varchar(255) NOT NULL default '',
achternaam varchar(255) NOT NULL default '',
email varchar(255) NOT NULL default ''
) TYPE=MyISAM;
CREATE TABLE `profiel` (
`id` int(11) NOT NULL auto_increment,
`code` varchar(35) NOT NULL default '',
`username` varchar(255) NOT NULL default '',
`voornaam` varchar(255) NOT NULL default '',
`achternaam` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1
connect.php
-----------------------------------------------------------------------------------
<?php
mysql_connect("localhost", "username", "password");
mysql_select_db("tabel-naam") or die("Unable to select database.");
?>
formulier.php
-----------------------------------------------------------------------------------
<?
// als het formulier nog niet ingevuld is
if(!$_POST['submit'])
{
?>
<html>
<head>
<title>Aanmelden als member</title>
</head>
<body>
<p><strong>Aanmelden als member:</strong></p>
<form action="formulier.php" method="post">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="130">Username:</td>
<td width="144"><input name="username" type="text" id="username"></td>
</tr>
<tr>
<td>Voornaam:</td>
<td><input name="voornaam" type="text" id="voornaam"></td>
</tr>
<tr>
<td>Achternaam:</td>
<td><input name="achternaam" type="text" id="achternaam"></td>
</tr>
<tr>
<td>Email:</td>
<td><input name="email" type="text" id="email"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Password:</td>
<td><input name="password" type="text" id="password"></td>
</tr>
<tr>
<td>Bevestig password:</td>
<td><input name="password2" type="text" id="password2"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input name="submit" type="submit" id="submit" value="Versturen"></td>
<td> </td>
</tr>
</table>
</form>
</body>
</html>
<?
}
else
{
// formulier is ingevuld, de gegevens kunnen worden verwerkt
if(!isset($_POST['username']))
{
$error = "U heeft geen username ingevuld";
}else{
$username = $_POST['username'];
}
if(!isset($_POST['voornaam']))
{
$error = "Er is geen voornaam ingevuld";
}else{
$voornaam = $_POST['voornaam'];
}
if(!isset($_POST['achternaam']))
{
$error = "Er is geen achternaam ingevuld";
}else{
$achternaam = $_POST['achternaam'];
}
if(!isset($_POST['email']))
{
$error = "Er is geen email-adres in gevuld";
}else{
$email = $_POST['email'];
}
if(!isset($_POST['password']))
{
$error = "U moet een password in voeren";
}else{
$password = $_POST['password'];
}
if($password != $_POST['password2'])
{
$error = "De door u ingevoerde passwords zijn niet gelijk aan elkaar";
}
if($error != "")
{
echo $error;
exit;
}
// Alle gegevens zijn ingevuld. Dus kunnen de gegevens naar de database verzonden worden
include("connect.php");
// Met het volgende script wordt een code gegenereerd van 10 karakters. Deze code dient als activatie code..
$lengte = "10";
function value ($lengte) {
$value = "";
mt_srand ((double) microtime() * 1000000);
while (strlen($value) < $lengte) {
$kiezen = chr(mt_rand (0,255));
if (eregi("^[a-z0-9]$", $kiezen)) $value = $value.$kiezen;
};
return ($value);
};
$value = md5(value ($lengte));
// Dezeheader zorgt ervor dat jou gegevens beschikbaar zijn voor de persoon die een activerings email verzonden wordt
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text;\r\n\tcharset=\"iso-8859-1\"\r\n";
$headers .= "From: \"Jou naam\" <jemaan@provider.iets>\r\n";
// Dit is het bericht dat de persoon in zijn activerings mailtje krijgt
$bericht =
"Beste $voornaam,
Bedankt voor het aanmaken van uw profiel. Om deze te activeren dient u op onderstaande link te klikken.
http://www.blablabla.com/pages/activeer_profiel.php?value=$value
Met vriendelijke groet,
Je naam
Mocht deze email ten onrechte naar u verstuurd zijn, neem dan contact op met onze webmaster";
// Kijken of er al een profiel bestaat met dezelfde usename
$result = mysql_query("SELECT username FROM profiel WHERE username = '$username'");
if($row = mysql_fetch_array($result))
{
echo "Helaas u kunt dit profiel niet aanmaken, er bestaat al een profiel met dezelfde username...";
}
else
{
$password = md5($password);
// Gegevens in de temp_profiel tabel zetten
$query="INSERT INTO temp_profiel (value, code, username, voornaam, achternaam, email) VALUES ('$value', $password', '$username', '$voornaam', '$achternaam', '$email')";
mysql_query($query) or die(mysql_error());
mail($email, "Acitverings mail", $bericht, $headers);
echo "Bedankt voor het aanmaken van u profiel,";
echo "<br>";
echo "Er is een activatie email naar u gestuurd. Door de daarin staande link te openen wordt u profiel geactiveerd!";
}
}
?>
activeer_profiel.php
-----------------------------------------------------------------------------------
<?php
//connectie maken met de database
include ("connect.php");
// kijken of er een temp_profiel is met de waarde "value" (de activerings code)
$value = $_GET['value'];
$result = mysql_query("SELECT * FROM temp_profiel WHERE value = '$value'");
if($row = mysql_fetch_array($result))
{
$code = $row['code'];
$username = $row['username'];
$voornaam = $row['voornaam'];
$achternaam = $row['achternaam'];
$email = $row['email'];
//gegevens van de temp_profiel tabel naar de profiel tabel copieren
$query="INSERT INTO profiel (code, username, voornaam, achternaam, email) VALUES ('$code', '$username', '$voornaam', '$achternaam', '$email')";
mysql_query($query) or die(mysql_error("Er is een fout opgetreden tijdens het veranderen van uw profiel. Probeer het later nog een keer."));
// gegevens uit de temp_profiel tabel verwijderen
$query2 = "DELETE FROM temp_profiel WHERE value = '$value'";
mysql_query($query2) or die(mysql_error());
$bericht = "Bedankt uw profiel is geactiveerd!";
$bericht .= "<br>";
$bericht .= "U kunt nu inloggen met uw gegevens...";
}
else
{
$bericht = "Helaas....";
$bericht .= "Er is een fout opgetreden. Probeer het later nog een keer";
}
?>
CREATE TABLE temp_profiel ( value varchar(35) NOT NULL default ", code varchar(35) NOT NULL default ", username varchar(255) NOT NULL default '', voornaam varchar(255) NOT NULL default '', achternaam varchar(255) NOT NULL default '', email varchar(255) NOT NULL default '' ) TYPE=MyISAM; CREATE TABLE `profiel` ( `id` int(11) NOT NULL auto_increment, `code` varchar(35) NOT NULL default '', `username` varchar(255) NOT NULL default '', `voornaam` varchar(255) NOT NULL default '', `achternaam` varchar(255) NOT NULL default '', `email` varchar(255) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=1 connect.php ----------------------------------------------------------------------------------- <?php ?> formulier.php ----------------------------------------------------------------------------------- <? // als het formulier nog niet ingevuld is if(!$_POST['submit']) { ?> <html> <head> <title>Aanmelden als member</title> </head> <body> <p><strong>Aanmelden als member:</strong></p> <form action="formulier.php" method="post"> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td width="130">Username:</td> <td width="144"><input name="username" type="text" id="username"></td> </tr> <tr> <td>Voornaam:</td> <td><input name="voornaam" type="text" id="voornaam"></td> </tr> <tr> <td>Achternaam:</td> <td><input name="achternaam" type="text" id="achternaam"></td> </tr> <tr> <td>Email:</td> <td><input name="email" type="text" id="email"></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td>Password:</td> <td><input name="password" type="text" id="password"></td> </tr> <tr> <td>Bevestig password:</td> <td><input name="password2" type="text" id="password2"></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td><input name="submit" type="submit" id="submit" value="Versturen"></td> <td> </td> </tr> </table> </form> </body> </html> <? } else { // formulier is ingevuld, de gegevens kunnen worden verwerkt if(!isset($_POST['username'])) { $error = "U heeft geen username ingevuld"; }else{ $username = $_POST['username']; } if(!isset($_POST['voornaam'])) { $error = "Er is geen voornaam ingevuld"; }else{ $voornaam = $_POST['voornaam']; } if(!isset($_POST['achternaam'])) { $error = "Er is geen achternaam ingevuld"; }else{ $achternaam = $_POST['achternaam']; } if(!isset($_POST['email'])) { $error = "Er is geen email-adres in gevuld"; }else{ $email = $_POST['email']; } if(!isset($_POST['password'])) { $error = "U moet een password in voeren"; }else{ $password = $_POST['password']; } if($password != $_POST['password2']) { $error = "De door u ingevoerde passwords zijn niet gelijk aan elkaar"; } if($error != "") { } // Alle gegevens zijn ingevuld. Dus kunnen de gegevens naar de database verzonden worden include("connect.php"); // Met het volgende script wordt een code gegenereerd van 10 karakters. Deze code dient als activatie code.. $lengte = "10"; function value ($lengte) { $value = ""; while (strlen($value) < $lengte) { if (eregi("^[a-z0-9]$", $kiezen)) $value = $value.$kiezen; }; return ($value); }; $value = md5(value ($lengte)); // Dezeheader zorgt ervor dat jou gegevens beschikbaar zijn voor de persoon die een activerings email verzonden wordt $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text;\r\n\tcharset=\"iso-8859-1\"\r\n"; $headers .= "From: \"Jou naam\" <jemaan@provider.iets>\r\n"; // Dit is het bericht dat de persoon in zijn activerings mailtje krijgt $bericht = "Beste $voornaam, Bedankt voor het aanmaken van uw profiel. Om deze te activeren dient u op onderstaande link te klikken. http://www.blablabla.com/pages/activeer_profiel.php?value=$value Met vriendelijke groet, Je naam Mocht deze email ten onrechte naar u verstuurd zijn, neem dan contact op met onze webmaster"; // Kijken of er al een profiel bestaat met dezelfde usename $result = mysql_query("SELECT username FROM profiel WHERE username = '$username'"); { echo "Helaas u kunt dit profiel niet aanmaken, er bestaat al een profiel met dezelfde username..."; } else { $password = md5($password); // Gegevens in de temp_profiel tabel zetten $query="INSERT INTO temp_profiel (value, code, username, voornaam, achternaam, email) VALUES ('$value', $password', '$username', '$voornaam', '$achternaam', '$email')"; mail($email, "Acitverings mail", $bericht, $headers); echo "Bedankt voor het aanmaken van u profiel,"; echo "Er is een activatie email naar u gestuurd. Door de daarin staande link te openen wordt u profiel geactiveerd!"; } } ?> activeer_profiel.php ----------------------------------------------------------------------------------- <?php //connectie maken met de database include ("connect.php"); // kijken of er een temp_profiel is met de waarde "value" (de activerings code) $value = $_GET['value']; $result = mysql_query("SELECT * FROM temp_profiel WHERE value = '$value'"); { $code = $row['code']; $username = $row['username']; $voornaam = $row['voornaam']; $achternaam = $row['achternaam']; $email = $row['email']; //gegevens van de temp_profiel tabel naar de profiel tabel copieren $query="INSERT INTO profiel (code, username, voornaam, achternaam, email) VALUES ('$code', '$username', '$voornaam', '$achternaam', '$email')"; mysql_query($query) or die(mysql_error("Er is een fout opgetreden tijdens het veranderen van uw profiel. Probeer het later nog een keer.")); // gegevens uit de temp_profiel tabel verwijderen $query2 = "DELETE FROM temp_profiel WHERE value = '$value'"; $bericht = "Bedankt uw profiel is geactiveerd!"; $bericht .= "<br>"; $bericht .= "U kunt nu inloggen met uw gegevens..."; } else { $bericht = "Helaas...."; $bericht .= "Er is een fout opgetreden. Probeer het later nog een keer"; } ?>
Nu is dit natuurlijk heel mooi
Maar nu wil ik dit koppelen aan een membersysteem met inlog
Iemand een idee ? of mis nog wat liggen ?
Lataz
|