aanmeldingsformulier koppelen aan een database
Alleen iedereen kan aanmelden, en dat is niet echt de bedoeling.
Alleen de leden (van onze wielerclub) die dus al in de database zitten, zouden mogen aanmelden en dan eventueel op een beveiligde pagina, hun gegevens aanpassen
Ik zou dus graag hebben dat je eerst een naam moet kiezen met die select en dat je dan pas kan aanmelden, maar dit lukt mij niet.
Mijn code (niet volledig maar ik denk wel de stukken die nodig zijn)
Code (php)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<html>
<?php
// als het formulier nog niet is ingevuld
if(!isset($_POST['submit']))
{
?>
<form action="aanmeld.php" method="post">
<table width="50%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>uw naam </td>
<td> <select name="naam">
<option value="" selected>(alle leden)</option>
<?php
$resultaat = mysql_query( "SELECT voornaam, naam FROM leden" );
while( $a_row = mysql_fetch_object( $resultaat ) )
{
print "<option value=\"$a_row->naam\"";
if ( isset($naam) && $naam == $a_row->naam )
print " SELECTED";
print "> $a_row->naam - $a_row->voornaam\n";
}
?>
</select>
</td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>gebruikersnaam </td>
<td><input type="text" name="gebruikersnaam" size="28" maxlength="20" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>wachtwoord</td>
<td><input type="password" name="wacht1" size="28" maxlength="30" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>wachtwoord </td>
<td><input type="password" name="wacht2" size="28" maxlength="30" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="verstuur" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
</form>
<?php
// formulier gepost, kijk of alle velden ook daadwerkelijk zijn ingevuld
}
elseif(trim($_POST['gebruikersnaam']) <> "" && trim($_POST['wacht1']) <> "")
{
// formulier ingevuld - kijk eerst of de gebruiker al bestaat
$gebruikersnaam = $_POST['gebruikersnaam'];
$res = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$gebruikersnaam."'") or die(mysql_error());
if(mysql_num_rows($res) == 0)
{
// geen resultaten - dit is wat we willen
// kijk of de opgegeven wachtwoorden overeenkomen
if(!strcmp($_POST['wacht1'], $_POST['wacht2']))
{
// wachtwoorden komen overeen - sla alle gegevens op in de database
// naam is al opgehaald uit het formulier
$wacht = md5($_POST['wacht1']); // versleuteld wachtwoord
$level = 1; // standaard gebruikersniveau
mysql_query("INSERT INTO leden (gebruikersnaam, pass, level) VALUES ('".$gebruikersnaam."','".$wacht."',".$level.")") or die(mysql_error());
// geef melding weer
?>
</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>Je gegevens zijn opgeslagen.<br>
Klik <a href="login.php">hier</a> om in te loggen.
</td>
</tr>
<tr>
<td><?php
}
else
{
// wachtwoorden komen niet overeen
?>
</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>Wachtwoord is fout <br>
Klik <a href="aanmeld.php">hier</a> en voer twee keer <strong>hetzelfde</strong> wachtwoord in.
</td>
</tr>
<tr>
<td><?php
}
}
else
{
// er bestaat al een gebruiker met deze naam
?>
enz.
</html>
<?php
// als het formulier nog niet is ingevuld
if(!isset($_POST['submit']))
{
?>
<form action="aanmeld.php" method="post">
<table width="50%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>uw naam </td>
<td> <select name="naam">
<option value="" selected>(alle leden)</option>
<?php
$resultaat = mysql_query( "SELECT voornaam, naam FROM leden" );
while( $a_row = mysql_fetch_object( $resultaat ) )
{
print "<option value=\"$a_row->naam\"";
if ( isset($naam) && $naam == $a_row->naam )
print " SELECTED";
print "> $a_row->naam - $a_row->voornaam\n";
}
?>
</select>
</td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>gebruikersnaam </td>
<td><input type="text" name="gebruikersnaam" size="28" maxlength="20" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>wachtwoord</td>
<td><input type="password" name="wacht1" size="28" maxlength="30" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>wachtwoord </td>
<td><input type="password" name="wacht2" size="28" maxlength="30" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="verstuur" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
</form>
<?php
// formulier gepost, kijk of alle velden ook daadwerkelijk zijn ingevuld
}
elseif(trim($_POST['gebruikersnaam']) <> "" && trim($_POST['wacht1']) <> "")
{
// formulier ingevuld - kijk eerst of de gebruiker al bestaat
$gebruikersnaam = $_POST['gebruikersnaam'];
$res = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$gebruikersnaam."'") or die(mysql_error());
if(mysql_num_rows($res) == 0)
{
// geen resultaten - dit is wat we willen
// kijk of de opgegeven wachtwoorden overeenkomen
if(!strcmp($_POST['wacht1'], $_POST['wacht2']))
{
// wachtwoorden komen overeen - sla alle gegevens op in de database
// naam is al opgehaald uit het formulier
$wacht = md5($_POST['wacht1']); // versleuteld wachtwoord
$level = 1; // standaard gebruikersniveau
mysql_query("INSERT INTO leden (gebruikersnaam, pass, level) VALUES ('".$gebruikersnaam."','".$wacht."',".$level.")") or die(mysql_error());
// geef melding weer
?>
</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>Je gegevens zijn opgeslagen.<br>
Klik <a href="login.php">hier</a> om in te loggen.
</td>
</tr>
<tr>
<td><?php
}
else
{
// wachtwoorden komen niet overeen
?>
</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>Wachtwoord is fout <br>
Klik <a href="aanmeld.php">hier</a> en voer twee keer <strong>hetzelfde</strong> wachtwoord in.
</td>
</tr>
<tr>
<td><?php
}
}
else
{
// er bestaat al een gebruiker met deze naam
?>
enz.
</html>
Gewijzigd op 01/01/1970 01:00:00 door Hilde
werkt je met een mysql database of een acces
't zou wel m'n dag compleet maken, als jij, jesper, haar nu gaat helpen.
Gewijzigd op 01/01/1970 01:00:00 door Gerben Jacobs
je hebt 0 kennis, probeer niet anderen te helpen als je zelf geen idee hebt waar het over gaat
Maar eigenlijk snap ik je script niet met wat je wilt. Je wilt dat er maar een beperkt aantal mensen zich kunnen aanmelden, en daarna zeg je dat er al iemand bestaat met deze naam??
Quote:
// er bestaat al een gebruiker met deze naam
Beetje vaag...
Ik kan misschien eens een link plaatsen naar de voorlopige site, dan zien jullie zelf wat ik bedoel.
Mijn eerste loginscript zit onder het tablad leden, maar had slechts 1 account nl admin en 1 paswoord nl. voorbeeld.
Ik heb dit script kunnen koppelen aan mijn database en deze vind je terug onder testlogin. het login script gaat open en kaar kun je een account aanmaken als dit nog niet gebeurd is door op de onderste link te klikken, dan ga je naar het aanmeldingsformulier
Daar kun je een gebruikersnaam en paswoord aanmaken die opgeslagen worden in de database en daarna kun je inloggen en uitloggen dit lukt ook.
Er zijn momenteel 48 leden in de club en nu zou ik graag hebben dat alleen deze leden een gebruikersnaam en paswoord mogen aanmaken.
Dus met die select zou je dan eerst moeten "zeggen" (kiezen) welk lid je bent, je zou dan een gebruikersnaam en een paswoord kunnen aanmaken waarna je kan inloggen
De link naar de site is http://members.lycos.nl/
Gewijzigd op 01/01/1970 01:00:00 door hilde
Ik begrijp het eerlijk gezegd niet. Waarom zou je alleen gebruikers - die al een account hebben - een nieuw account aanlaten maken?
Omdat ze een paswoord moeten kunnen instellen, ze moeten dus geen nieuwe account aanmaken, het is de bedoeling dat hun gebruikersnaam en paswoord in het daarvoor voorziene veld van hun bestaande account wordt gevoegd.
Maar Hilde, zou je het dan niet andersom doen. Dus niet met een select, maar gewoon mensen hun naam laten invullen en dan later met een query kijken of die naam ook op de ledenlijst. Met die selectbox kan alsnog iedereen een naam aanklikken, terwijl ze dat niet zijn. Zo wordt het in ieder geval een klein beetje minder fraudegevoelig.
edit dat van die apparte tabel klopt niet
Ik ben een echte beginner en weet in het geheel niet hoe ik een relatie tussen twee tabellen moet maken
Gewijzigd op 01/01/1970 01:00:00 door hilde
Oké, als dat het is, begrijp ik het. Ik zou alleen niet weten hoe je nu - veilig - bij een ieder van die leden, daadwerkelijk door hen een wachtwoord kan laten instellen. Je kunt op IP controleren, maar als iemand een dynamisch IP heeft, heeft dat ook weer weinig zin. Als je e-mailadressen hebt, kun je misschien een mailtje naar ieder lid sturen, met per lid een unieke url (met voor iedereen een verschillende code, opgeslagen bij een ieder van de leden). Als men op deze url klikt, krijgt men een pagina te zien, waarop een wachtwoord voor dat account kan worden ingesteld (met behulp van die unieke code in de URL natuurlijk).
Ook kun je kiezen om een bestaan gegeven, wat niet iedereen van elkaar heeft, te gebruiken als wachtwoord. Daarmee in laten loggen en dan een nieuw wachtwoord in laten stellen.
Maar nu begrijp ik u niet dwz. ik heb geen flauw idee hoe ik zoiets (die email met een unieke url) moet maken
Ik ga daar in ieder geval eens op zoeken
Wat betreft dat veilig,
Ik dacht met een select, dan kunnen ze toch maar 48 namen kiezen, en eens er een paar gekozen zijn wordt dit getal steeds kleiner, dus als ik (in het begin) regelmatig mijn database controleer kon er toch niet zoveel gebeuren, tenslotte staan op die beveiligde pagina's geen bankgegevens, maar wel telefoonnummers, E-mail adressen, enz,
Enkele mensen (het bestuur) zou ook meer rechten moeten krijgen zodat zij bv. de kilometerstand kunnen aanpassen, gewone leden mogen dat niet want dan zouden ze op 2 dagen 10 keer de wereld rondgefietst hebben om het meeste kilometers te hebben
een dropdown list maken met daarin de gebruikers is sowieso niet veilig en absoluut af te raden. Wat je volgens mij best kunt doen is een tabel maken met daarin de login-id van de leden, het paswoord en een veldje dat de toegang tot de site regelt (bv 1 voor normale toegang, 2 voor admin rechten, 3 voor superuser etc). Nadat het lid inlogt, check je de login tegen de inhoud van deze tabel en je haalt de waarde van het veld dat de toegang moet regelen. Dit kan je dan met de session variabele doorgeven naar de andere pagina's waar je allereerst moet starten met een session_start(). Daarna kan je de waarde van de variable toegang nakijken met een php routinetje
en daar een willekeurige code inzetten.
En dan een mailtje sturen, met daarin bijv. un id, naam, en code.
want als je die 3 waardes wilt gokken ben je wel ff bezig?
en dan kun je ze eventueel een mail sturen dmv een php scriptje. Bijv. select id, naam, code en dan die waardes in een mailtje zetten??