Zoals beloofd een leden systeem voor in het scriptlib.
Als het goed gekeurd is zet ik het in het scriptlib.



info:
- Niet oop
- Gebruik van phpmailer
- eerste deel (ik ben nog bezig aan de uitbreiding)


Check van het eerste deel:

Update

1 tabel van de db:

CREATE TABLE IF NOT EXISTS `leden` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `voornaam` varchar(32) DEFAULT NULL,
  `achternaam` varchar(32) DEFAULT NULL,
  `email` varchar(30) DEFAULT NULL,
  `wachtwoord` varchar(250) NOT NULL,
  `ip` varchar(20) NOT NULL,
  `activatiecode` varchar(10) NOT NULL,
  `datum_registratie` datetime NOT NULL,
  `activatie` int(11) NOT NULL,
  `functie` int(2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;


config.php

<?php
###############################################
#                                             #
#		--- SILYON - CONFIG ---        	      #
#                                             #
#		Author: Jasper De Smet				  #
#		Email: [email protected]        #
#		Website: www.jasperdesmet.be          # 
#		Last edited: 20 November 2010         #
#		Version: 3.0                          #
#                                             #
###############################################

# Algemene info
$naam_site 						= 'inlogstysteem php-hulp'; 							// titel van site
$activatiecodelengte			= 10; 													// lengte van de activatiecode

# DB connectie - gegevens
$mysql['host'] 				= "localhost";								// host
$mysql['gebruikersnaam'] 	= "";								// gebruikersnaam
$mysql['wachtwoord'] 		= "";								// wachtwoord
$mysql['database'] 			= "";						// database


# errors weergeven - SQL
define('DEBUG_MODE',true);  // true == aan, false == uit

# errors weergeven - SQL - functie: error
function showSQLError($sql,$error) 
{
    echo  '<pre>Error: '.$error.'<br />'.$sql.'</pre>';
}
	
# DB connectie - verbinding
if((mysql_connect($mysql['host'],$mysql['gebruikersnaam'],$mysql['wachtwoord'])) === false )
{
	echo 'Kon geen contact maken met de database! Neem aub. Contact op met de webmaster!';	
}
else
{
	if((mysql_select_db($mysql['database'])) === false)
	{
		echo 'Kon de database niet selecteren! Neem aub. Contact op met de webmaster!';
	}
}

# DB connectie - Zet tijd naar nl
$sql_set_time = "SET lc_time_names = 'nl_NL'";

# Functies
/*
**CHECK Mail functie gaat eruit
*/

	# Functies - check mail
	function checkemail($email)
	{
		// Kijk of er een @ in zit, zo nee false
		if(!stristr($email, '@'))
		{
			return false;
		}
		$email_split = explode("@", $email);
		// Er mag slecht één @ inzitten dus het array moet 2 records tellen
		if(count($email_split) != 2)
		{
			return false;
		}
		$email_user = $email_split[0];
		$email_host = $email_split[1];
		// Kijk of er MX-servers zijn, zo nee false
		if(!getmxrr($email_host, $var))
		{
			return false;
		}
		// Kijk of het usergedeelte okee is, zo nee false
		if(!preg_match("/^[0-9a-z]([-_.~]?[0-9a-z])*$/", $email_user))
		{
			return false;
		}
		return true;
	}
/*
** EINDE MAIL FUNCTIE
** - - - - - - - - - 
*/

# Functies - activatiecode
function activatiecode($lengte) 
{
	$activatie = "";
	mt_srand ((double) microtime() * 1000000);
	while (strlen($activatie) < $lengte) 
	{
		$kiezen = chr(mt_rand (0,255));
		if (eregi("^[a-zA-Z0-9]$", $kiezen)) $activatie = $activatie.$kiezen;
	}
	return ($activatie);
} 				
?>


inloggen.php

<?php
###############################################
#                                             #
#			-- INLOGGEN  ---        		  #
#       									  #
#		Author: Jasper De Smet				  #
#		Email: [email protected]        #
#		Website: www.jasperdesmet.be          # 
#		Last edited:                          #
#		Version: 1.0                          #
#											  #
#		Voor php-hulp : vrij gebruik		  #
#                                             #
###############################################

# errors weergeven - algemeen
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);

# include config
include 'config.php';

# Session start zodat we kunnen zien of een gebruiker ingelogged is.
session_start();


# Verwerking van het inlog formulier
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
	# We maken het wachtwoord hiet al aan zodat we niet te lange rijen code hebben in onze query
	$wachtwoord = sha1(mysql_real_escape_string($_POST['wachtwoord']));
	
	# Dit is de query om te checken of het email adres en het wachtwoord bij elkaar horen en de gegevens uit de database halen (Query1)
	$sql_get_leden = 	"SELECT  id, 
								 voornaam, 
								 wachtwoord, 
								 email,
								 functie
						 FROM leden
						 WHERE email='".mysql_real_escape_string($_POST['email'])."'
						 AND wachtwoord='".$wachtwoord."'
						 AND activatie ='1'
						";

	#  Check Query1		
	if (($result_get_leden = mysql_query($sql_get_leden)) === false) 
	{
		# als de query fout is -> foutafhandeling
		$inloggen = 'Inloggen is (tijdelijk) niet mogelijk.';
															
		# geef de error via de functie (de functie vind u in het config bestand)
		if (DEBUG_MODE) 
		{
			showSQLError($sql_get_leden,mysql_error());
															   
		} 
	}
	else 
	{
		# Query 1 is gelukt
		
		# We tellen of er één (1) rij is met het wachtwoord EN het email adres
		if(($tel = mysql_num_rows($result_get_leden)) == 1)
		{
			# Er is 1 rij!
			
			# We sturen de gebruiker naar de beveiligde pagina
			header('Location: ingelogged/index.php ');
			
			# We fetchen de Query
			$res = mysql_fetch_assoc($result_get_leden);
			
			# We stellen de Sessions in om de gebuiker te indentificeren.
			$_SESSION['voornaam'] = $res['voornaam']; 
			$_SESSION['leden_id'] = $res['id'];
		}
		else
		{
			# Er is geen (0) rij met het wachtwoord EN het email adres
			$inloggen = 'verkeerde inlog gegevens';
		}
	}
}	
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Inloggen</title>
</head>

<body>	
	<form method="post" action="" name="form1">
		Email:                        
		<br />
		<input type="text" name="email" id="email" />
		<br />
		<br />
		Wachtwoord:                        
		<br />
		<input type="password" name="wachtwoord" id="wachtwoord" />
		<br />
		<br />
		<input type="submit" name="submit" value="Login" class="button" >
	</form>
		<?php
			if(isset($inloggen))
			{
				echo $inloggen;
			}
		?>
</body>
</html>


registreren.php

<?php

###############################################
#                                             #
#			-- REGISTREREN ---        		  #
#       									  #
#		Author: Jasper De Smet				  #
#		Email: [email protected]        #
#		Website: www.jasperdesmet.be          # 
#		Last edited:                          #
#		Version: 1.0                          #
#											  #
#		Voor php-hulp : vrij gebruik		  #
#                                             #
###############################################

# include config
include 'config.php';

# errors weergeven - algemeen
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);

# Session start zodat we kunnen zien of een gebruiker ingelogged is.
session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registreren</title>
</head>
<body>	
	<?php
		# Kijk of er gepost is
		if($_SERVER['REQUEST_METHOD'] == 'POST')
		{
			# Query om te checken of gebruikersnaam, email adres al bestaat.
			$sql_get_leden = 	"SELECT id
								 FROM leden
								 WHERE email='".mysql_real_escape_string($_POST['email'])."'
								";
												
			# Query om te checken of ip adres al bestaat.					
			$sql_get_ip = 	"SELECT id
							 FROM leden
							 WHERE ip='".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."'
							";
									
			#  Check query's		
			if (($result_get_leden = mysql_query($sql_get_leden)) === false || ($result_get_ip = mysql_query($sql_get_ip)) === false) 
			{
				// als de query fout is -> foutafhandeling
				echo 'Registreren is (tijdelijk) niet mogelijk.';
							
				// geef de error via de functie (config bestand.)
				if (DEBUG_MODE) 
				{
					showSQLError($sql_get_leden,mysql_error());
					showSQLError($sql_get_ip,mysql_error());
				} 
			}
			else
			{
				/* 	
					Deze else moet het volledige registratie formulier omvatten
					Anders kunnen er, als er een fout is met de query dubbele mail adressen gebruikt worden!
				*/
					
				# we maken een array voor de errors.	
				$error = array();
					
				# Tel of er al een gebruiker bestaat met email
				if(mysql_num_rows($result_get_leden) == 1)  
				{
					$error[] = 'Er bestaat al een gebruiker met dit email adres';
				}
								
				# Tel of er al een gebruiker bestaat met ip
				if(mysql_num_rows($result_get_ip) == 1)  
				{
					$error[] = 'Er bestaat al een gebruiker met dit ip adres';
				}
								
				# wachtwoord ingevuld?
				if(strlen($_POST['wachtwoord']) < 5)  
				{
					$error[] = 'U hebt geen geldig wachtwoord ingevuld. Een wachtwoord moet minstens 5 tekens lang zijn.';
				}
								
				# wachtwoord gelijk aan wachtwoord2?
				if($_POST['wachtwoord'] != $_POST['wachtwoord2'])  
				{
					$error[] = 'U wachtwoorden zijn niet gelijk';
				}
								
				# voornaam ingevuld?
				if(strlen($_POST['voornaam']) < 3)  
				{
					$error[] = 'U hebt geen geldige voornaam ingevuld. Een voornaam moet minstens 3 tekens lang zijn';
				}
								
				# achternaam ingevuld?
				if(strlen($_POST['achternaam']) < 3)  
				{
					$error[] = 'U hebt geen geldige achternaam ingevuld. Een achternaam moet minstens 3 tekens lang zijn';
				}
								
								
				if(!checkemail($_POST['email'])) 
				{
					$error[] = 'U hebt geen geldig e-mailadres ingevuld.';
				}
									
				# Tel de fouten en weergeef ze indien nodig
				$fouten = count($error); // aantal errors tellen
				if($fouten != 0) 
				{ 
					echo 'Uw account kon niet worden aangemaakt omwille van de volgende reden(en):';
					echo '<ul>';
					for($i = 0; $i < $fouten; $i++) 
					{
						echo '<li>'.$error[$i].'</li>';
					}
					echo '</ul>';
				}
				else
				{
					# Alles voldoet aan de voorwaarden!	
					# Stuur een mail zodat ze hun acc kunnen activeren + gegevens in database
					
					# genereer een activatiecode, de lenge is te vinden in de config
					$code = activatiecode($activatiecodelengte); 
					
					# Query voor de gebruiker in de tabel te zetten
					$sql_insert_leden = 	"INSERT INTO leden
											 VALUES     ( '',
														 '".mysql_real_escape_string($_POST['voornaam'])."',
														 '".mysql_real_escape_string($_POST['achternaam'])."',
														 '".mysql_real_escape_string($_POST['email'])."',
														 '".mysql_real_escape_string(sha1($_POST['wachtwoord']))."',
														 '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."',
														 '".$code."',
														 NOW(),
														 '0',
														 '1'	
														) 	
												";

					//  Check query		
					if (($result_insert_leden = mysql_query($sql_insert_leden)) === false) 
					{
						// als de query fout is -> foutafhandeling
						echo 'registreren is (tijdelijk) niet mogelijk.';
										
						// geef de error via de functie (bovenaan script)
						if (DEBUG_MODE) 
						{
								showSQLError($sql_insert_leden,mysql_error());
										   
						} 
					}
					else
					{
							# Stuur de mail
							
							# gegevens voor het versturen van een mail: volg de instructies
							require("class.phpmailer.php");
							$mail = new PHPMailer();$mail = new PHPMailer();
							$mail->IsSMTP(); // Laat PHPMailer gebruik maken van een smtp server.
							$mail->Host = "mail.jasperdesmet.be"; // SMTP server van uw Hosting Partner
							$mail->SMTPAuth = true;
							$mail->Username = ''; // Een geldig emailadres wat aangemaakt is bij uw Hosting Partner
							$mail->Password = ''; // Het wachtwoord wat bij het emailadres hoort
							$mail->From=""; // email adres dat moet weergeven worden
							$mail->FromName="Inlogsysteem php hulp"; // naam dat moet worden weergeven.
							$mail->Sender=""; // Header voor return
							$mail->AddAddress($_POST['email']); // Het emailadres waar naar toe hij verzonden moet worden 
							$mail->Subject = "Activatie op ".$naam_site."";
							$mail->IsHTML(true); //Opmaak van de email is in HTML
							
							# Html mail
							$mail->Body =
							"<h1>Activatie op ".$naam_site."</h1>
							 <p>Beste ".$_POST['voornaam']." ".$_POST['achternaam'].",<br/>
							 <br/>
							 Uw gegevens voor een activatie op <a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/inloggen.php\">www.inlogsysteem-phphulp.be</a>:<br/><br/>
														
							 Gebruik uw email-adres en de activatie code voor de handmatige activatie van uw account,<br/>
							 als u dat heeft gedaan kan u inloggen met uw e-mail adres en passwoord.
														
							 <table border=\"1\">
							 <tr><td>Voornaam</td><td>".$_POST['voornaam']."</td>
							 <tr><td>Achternaam</td><td>".$_POST['achternaam']."</td>
							 <tr><td>Email</td><td>".$_POST['email']."</td>
							 <tr><td>activatiecode</td><td>".$code."</td>
							 <tr><td>Passwoord</td><td>".$_POST['wachtwoord']."</td>
							 </table><br/>
							 <a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/activatie.php?email=".$_POST['email']."&amp;code=".$code."\">Klik hier voor een automatische activatie</a> </p>
							 <p>Met vriendelijke groeten<br/>
							 <br/>
							 <i>(Indien u deze mail niet gewenst heeft gelieve hem dan te negeren)</i></p>
							";
							
							# Als er geen html word ondersteund word dit weergeven		
							$mail->AltBody =
							"<h1>Activatie op ".$naam_site."</h1>
							 <p>Beste ".$_POST['voornaam']." ".$_POST['achternaam'].",<br/>
							 <br/>
							 Uw gegevens voor een activatie op <a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/inloggen.php\">www.inlogsysteem-phphulp.be</a>:<br/><br/>
														
							 Gebruik uw email-adres en de activatie code voor de handmatige activatie van uw account,<br/>
							 als u dat heeft gedaan kan u inloggen met uw e-mail adres en passwoord.
														
							 <table border=\"1\">
							 <tr><td>Voornaam</td><td>".$_POST['voornaam']."</td>
							 <tr><td>Achternaam</td><td>".$_POST['achternaam']."</td>
							 <tr><td>Email</td><td>".$_POST['email']."</td>
							 <tr><td>activatiecode</td><td>".$code."</td>
							 <tr><td>Passwoord</td><td>".$_POST['wachtwoord']."</td>
							 </table><br/>
							 <a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/activatie.php?email=".$_POST['email']."&amp;code=".$code."\">Klik hier voor een automatische activatie</a> </p>
							 <p>Met vriendelijke groeten<br/>
							 <br/>
							 <i>(Indien u deze mail niet gewenst heeft gelieve hem dan te negeren)</i></p>
							";
							
						# De laatste stap is de mail verzenden en controleren of het is gelukt.
						if($mail->Send())
						{
							# De mail is verzonden!
							echo 'Het bericht is verzonden';
						}
						else
						{
							# Er ging iets mis
							echo 'er ging iets mis met het verzenden van het bericht neem contact op met de website beheerder.';
						}	
					}				
				}
			}	
		}
	?>					
	<p>  
		<form method="post" action="" name="">
			Voornaam:<br/>
			<input type="text" name="voornaam" id="voornaam" value="<?php echo $_POST['voornaam']; ?>" />
			<br/>
			<br/>
			Achternaam:<br/>
			<input type="text" name="achternaam" id="achternaam" value="<?php echo $_POST['achternaam']; ?>" />
			<br/>
			<br/>
			Wachtwoord:                        
			<br/>
			<input type="password" name="wachtwoord" id="wachtwoord" />
			<br/>
			<br/>
			Wachtwoord Controle: <br/>
			<input type="password" name="wachtwoord2" id="wachtwoord2"  />
			<br/>
			<br/>
			E-mail:<br/>
			<input type="text" name="email" id="email" value="<?php echo $_POST['email']; ?>" />
			<br />
			<br/>
			<input type="submit" name="submit" value="registreer" class="button" >
		</form>	
	</p>
</body>
</html>


activatie.php

<?php
###############################################
#                                             #
#			-- ACTIVEREN ---        		  #
#       									  #
#		Author: Jasper De Smet				  #
#		Email: [email protected]        #
#		Website: www.jasperdesmet.be          # 
#		Last edited:                          #
#		Version: 1.0                          #
#											  #
#		Voor php-hulp : vrij gebruik		  #
#                                             #
###############################################

# include config
include 'config.php';

# errors weergeven - algemeen
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);

# Session start zodat we kunnen zien of een gebruiker ingelogged is.
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registreren</title>
</head>
<body>	
	<?php
	#  - - - - - - - - - - - - - - - - - - VOOR MENSEN DIE MET DE LINK REGISTREREN - - - - - - - - - - - - - - - - - -
	if(isset($_GET['email']) && isset($_GET['code']))
	{
		# Query om te checken of email en code overeenkomen (tabel activatie).
		$sql_get_leden = 	"SELECT id, email, wachtwoord, voornaam, achternaam, ip
							 FROM leden
							 WHERE email = 	'".mysql_real_escape_string($_GET['email'])."'	
							 AND activatiecode = '".mysql_real_escape_string($_GET['code'])."'
							 AND activatie = '0'
							";

		//  Check query		
		if (($result_get_leden = mysql_query($sql_get_leden)) === false) 
		{
			// als de query fout is -> foutafhandeling
			echo 'Activeren is (tijdelijk) niet mogelijk.';
			
			// geef de error via de functie (bovenaan script)
			if (DEBUG_MODE) 
			{
			   showSQLError($sql_get_leden,mysql_error());
			} 
		}
		else
		{
			if(mysql_num_rows($result_get_leden) == 1)
			{
			
				# Activatie gevens zijn correct : voer een query uit!
				
				$result_leden = mysql_fetch_assoc($result_get_leden);

				# Querys om de gegevens uit de tabel activatie te verwijderen en in de tabel leden te zetten.
				
				#Query 1 - INSERT INTO leden
				
				$sql_update_leden = 	"UPDATE leden
										 SET activatie = '1'
										 WHERE id= '".$result_leden['id']."'
										";
				
				//  Check query		
				if (($result_update_leden = mysql_query($sql_update_leden)) === false ) 
				{
					// als de query fout is -> foutafhandeling
					echo 'registreren is (tijdelijk) niet mogelijk.';
					
					// geef de error via de functie (bovenaan script)
					if (DEBUG_MODE) 
					{
					   showSQLError($sql_update_leden,mysql_error());
					} 
				}
				else
				{
					header('Location: inloggen.php');
				}
			}
			else
			{
				# Gegevens zijn niet correct, geef foutmelding
				echo 'Uw gegevens zijn niet correct';
			}
		}	
	} 




	#  - - - - - - - - - - - - - - - - - - VOOR MENSEN DIE ZONDER DE LINK REGISTREREN - - - - - - - - - - - - - - - - - -
	if($_SERVER['REQUEST_METHOD'] == 'POST')
	{
		# Query om te checken of email en code overeenkomen (tabel activatie).
		$sql_get_leden = 	"SELECT id, email, wachtwoord, voornaam, achternaam, ip
							 FROM leden
							 WHERE email = 	'".mysql_real_escape_string($_POST['email'])."'	
							 AND activatiecode = '".mysql_real_escape_string($_POST['code'])."'
							 AND activatie = '0'
							";

		//  Check query		
		if (($result_get_leden = mysql_query($sql_get_leden)) === false) 
		{
			// als de query fout is -> foutafhandeling
			echo 'Activeren is (tijdelijk) niet mogelijk.';
			
			// geef de error via de functie (bovenaan script)
			if (DEBUG_MODE) 
			{
			   showSQLError($sql_get_leden,mysql_error());
			} 
		}
		else
		{
			if(mysql_num_rows($result_get_leden) == 1)
			{
			
				# Activatie gevens zijn correct : voer een query uit!
				
				$result_leden = mysql_fetch_assoc($result_get_leden);

				# Querys om de gegevens uit de tabel activatie te verwijderen en in de tabel leden te zetten.
				
				#Query 1 - INSERT INTO leden
				
				$sql_update_leden = 	"UPDATE leden
										 SET activatie = '1'
										 WHERE id= '".$result_leden['id']."'
										";
				
				//  Check query		
				if (($result_update_leden = mysql_query($sql_update_leden)) === false ) 
				{
					// als de query fout is -> foutafhandeling
					echo 'registreren is (tijdelijk) niet mogelijk.';
					
					// geef de error via de functie (bovenaan script)
					if (DEBUG_MODE) 
					{
					   showSQLError($sql_update_leden,mysql_error());
					} 
				}
				else
				{
					header('Location: inloggen.php');
				}
			}
			else
			{
				# Gegevens zijn niet correct, geef foutmelding
				echo 'Uw gegevens zijn niet correct';
			}
		}	
	}


	?>
	<form name="form1" method="post" action="">
		Voer de activatiecode en je gebruikersnaam die je in het e-mailbericht hebt ontvangen in. Heb je geen mail ontvangen? Klik dan <a href="send_again.php">hier</a>. <br/>
		Email:<br/>
		<input name="email" type="text" id="email" size="35"><br/>
		Activatiecode:<br/>
		<input name="code" type="text" id="code" size="<?php echo $activatiecodelengte;?>" maxlength="<?php echo $activatiecodelengte;?>"><br/>
		<input type="submit" name="Submit" id="Submit" value="Activeren"><br/>
	</form>
<body>
</html>	


Update log:
de meeste fouten moeten er nu wel uit zijn?
- eregi is noh niet aangepast!


Na eventuele aanpassingen en een goedkeuring van de harde kern van php hulp (ik kijk naar karl, santhe, niels, jelmer, kris peeters,..)
Zal dit in het scriptlib komen. (dit is deel 1, deel 2 volgt)

owja nog vergeten: voorbeeld via pm omdat ik anders weer in google sta. (voorbeeld staat op mijn domein)
hmm...ziet er goed uit maar je werkt hier met 2 tabellen (activatie en leden).
Waarom zet je dan bij activatie geen foreign key op het id en voer je een join uit bij je registratiescript.

Dan kan je die 4 queries vervangen door 1...

verder staat er bij Activatie.php 2 maal onder elkaar session_start()

En ik kan een spatie ingeven als naam geloof ik, als ik het zo bekijk.
Check je naam etc ook met strlen()
eregi() is oud en depricated
Mag ik ook commentaar geven? ;)

Ziet er op het eerste oog wel goed uit.
Een paar dingen:

- Kan ook in 1 tabel

- Bij inloggen heeft $inloggen een foute, want onduidelijke, naam, net als $sql_get_leden_a

- display_errors kan van DEBUG_MODE afhangen

- Verplaats meer zaken naar het configuratiebestand, zodat aanpassen makkelijker kan.

- Nooit fourmeldingen boven de HTML echoën

- Mag wel wat meer abstractie, denk aan PDO, evt templating en meer gebruik van functies

- getmxrr() mag eruit. Je hebt al een goede controle dmv de activatie.

- Geen tabellen voor forms gebruiken

Een OOP had het zo veel makkelijker en mooier gemaakt dit te implementeren in een website.

Mocht je ooit nog daartoe komen, denk aan classes als:
User (naw, geactiveerd, id, setNaam(), opslaan())
Autorisatie/Inloggen (isIngelogd(), login($uname, $pw), getUser(), registreer(User $user)) - Deze kan je nog opsplitsen, maar dat hoeft niet
Mailer abstractie (__construct($config), sendMail($email))
evt Sessie abstractie, niet direct nodig
Tikkes C op 04/01/2011 11:12:16

hmm...ziet er goed uit maar je werkt hier met 2 tabellen (activatie en leden).
Waarom zet je dan bij activatie geen foreign key op het id en voer je een join uit bij je registratiescript.

Dan kan je die 4 queries vervangen door 1...

verder staat er bij Activatie.php 2 maal onder elkaar session_start()

En ik kan een spatie ingeven als naam geloof ik, als ik het zo bekijk.
Check je naam etc ook met strlen()


Ik zal dat aanpassen.

- Aar - op 04/01/2011 11:15:45

eregi() is oud en depricated


Ik zal dat aanpassen.

Pim - op 04/01/2011 11:22:57

Mag ik ook commentaar geven? ;)

Ja natuurlijk ;-)

Pim - op 04/01/2011 11:22:57

Ziet er op het eerste oog wel goed uit.
Een paar dingen:

- Kan ook in 1 tabel

Dat zou ik persoonlijk niet doen. Nu heb je een mooi overzicht.

Pim - op 04/01/2011 11:22:57

- Bij inloggen heeft $inloggen een foute, want onduidelijke, naam, net als $sql_get_leden_a

Dat zal ik aanpassen.

Pim - op 04/01/2011 11:22:57

- display_errors kan van DEBUG_MODE afhangen

- Verplaats meer zaken naar het configuratiebestand, zodat aanpassen makkelijker kan.

ik zal zien wat ik nog kan verplaatsen.

Pim - op 04/01/2011 11:22:57

- Nooit fourmeldingen boven de HTML echoën

helemaal gelijk, dat krijgt prioriteit.

Pim - op 04/01/2011 11:22:57

- Mag wel wat meer abstractie, denk aan PDO, evt templating en meer gebruik van functies

dat zal er niet inzitten vrees ik.

Pim - op 04/01/2011 11:22:57

- getmxrr() mag eruit. Je hebt al een goede controle dmv de activatie.

prima

Pim - op 04/01/2011 11:22:57

- Geen tabellen voor forms gebruiken

Komt in orde.

Pim - op 04/01/2011 11:22:57

Een OOP had het zo veel makkelijker en mooier gemaakt dit te implementeren in een website.

Mocht je ooit nog daartoe komen, denk aan classes als:
User (naw, geactiveerd, id, setNaam(), opslaan())
Autorisatie/Inloggen (isIngelogd(), login($uname, $pw), getUser(), registreer(User $user)) - Deze kan je nog opsplitsen, maar dat hoeft niet
Mailer abstractie (__construct($config), sendMail($email))
evt Sessie abstractie, niet direct nodig


Sorry dat zie ik niet zitten ;)

ik zou het in 2 tabellen houden maar dan de dingen die je 2 keer erin hebt staan weg doen en oplossen met joins in je queries.

Waarom geen tabellen voor forms dan?
- Laat maar, Verkeerd gelezen. -
Tikkes C op 04/01/2011 11:37:56

ik zou het in 2 tabellen houden maar dan de dingen die je 2 keer erin hebt staan weg doen en oplossen met joins in je queries.

Waarom geen tabellen voor forms dan?


tabellen niet gebruiken voor opmaak, maar leden komen eerst in de activatie tabel en vanaf ze geactiveerd hebben in de leden tabel, zo kan je leden die niet geactiveerd zijn mooi splitsen van wel geactiveerde leden. Je zou het ook met een extra kolom kunnen doen en eren where in de query maar dan lijkt mijn oplossing makkelijker.

edit: de volledige mail check eruit?
In welk bestand echo ik boven de html?
Het zijn toch gewoon allemaal users die soms wel, soms niet geactiveerd zijn? Dan is dat toch een eigenschap van die user en dus veld veld in de user tabel?

Activatie met code en id als veld en dan een foreign key bij user die null is als de gebruiker geactiveerd is, is natuurlijk netter, maar je kan ook gewoon het code veld bij de user invullen of null laten...

Wat je nu hebt is echt geen goed datamodel...

En waarom niet meer abstractie? Bang dat dat niet lukt?
Maar bij geactiveerde leden heb je dan altijd 1 nutteloze kolom, de activatie-key?
je hebt gewoon een lege kolom voor de wel geactiveerden, en de niet geactiveerden hebben daar een activatiecode staan.
dat is in ieder geval beter dan een nutteloze tabel.

Reageren