aanmeldingsformulier koppelen aan een database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hilde

hilde

20/03/2008 15:48:00
Quote Anchor link
Ik heb een aanmeldingsformulier gemaakt en dat werkt.
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)
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
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>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
   <tr>
      <td>gebruikersnaam </td>
      <td><input type="text" name="gebruikersnaam" size="28" maxlength="20" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>wachtwoord</td>
      <td><input type="password" name="wacht1" size="28" maxlength="30" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>wachtwoord </td>
      <td><input type="password" name="wacht2" size="28" maxlength="30" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="submit" value="verstuur" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</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>&nbsp;</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>&nbsp;</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
 
PHP hulp

PHP hulp

11/01/2025 21:07:48
 
Jesper dd

jesper dd

20/03/2008 16:29:00
Quote Anchor link
Hey Hilde
werkt je met een mysql database of een acces
 
Gerben Jacobs

Gerben Jacobs

20/03/2008 16:30:00
Quote Anchor link
Nou, er staat "mysql_query" dus ik denk dat eerste ;]

'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
 
- wes  -

- wes -

20/03/2008 16:30:00
Quote Anchor link
Jesper

je hebt 0 kennis, probeer niet anderen te helpen als je zelf geen idee hebt waar het over gaat
 
Jesper Diovo

Jesper Diovo

20/03/2008 16:35:00
Quote Anchor link
Hilde, haal variabelen buiten quotes en sluit <option> af in je while-loop. Tegenwoordig controleren we tevens i.p.v. if(isset($_POST['submit'])) met if($_SERVER['REQUEST_METHOD']) of een formulier is verzonden of niet.

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...
 
Hilde

hilde

20/03/2008 17:09:00
Quote Anchor link
Ik ken niet zoveel van php en mysql dus zelfs jullie vragen zijn moeilijk.
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
 
Jesper Diovo

Jesper Diovo

20/03/2008 17:30:00
Quote Anchor link
Ik begrijp het eerlijk gezegd niet. Waarom zou je alleen gebruikers - die al een account hebben - een nieuw account aanlaten maken?
 
Hilde

hilde

20/03/2008 17:34:00
Quote Anchor link
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.
 
Bjorn Vennema

Bjorn Vennema

20/03/2008 17:34:00
Quote Anchor link
Je begrijpt het verkeerd Djemo. Ze wil alleen leden een account laten maken. Ze heeft dus een aparte tabel met alle leden daarin. Ze wil dat alleen mensen een account kunnen maken die ook op de ledenlijst staan. Om het uit te sluiten voor buitenstaanders.

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.
 
Hilde

hilde

20/03/2008 17:36:00
Quote Anchor link
hoi Bjorn, dan zit ik met het probleem dat ik geen veld naam heb, maar een veld voornaam en een veld familienaam, er zit ook een vader en zoon combinatie bij dus de familie naam is niet uniek, wel het lidnummer, maar een nummer kan zeker iedereen invullen

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
 
Jesper Diovo

Jesper Diovo

20/03/2008 17:42:00
Quote Anchor link
Ooooh, de leden die je nu hebt hebben eigenlijk nog geen account? Je hebt alleen maar namen, geen wachtwoorden?

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.
 
Hilde

hilde

20/03/2008 17:51:00
Quote Anchor link
Je begrijpt me oef.
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
 
Gino Van Nauw

Gino Van Nauw

20/03/2008 20:19:00
Quote Anchor link
Hilde,
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
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

20/03/2008 20:36:00
Quote Anchor link
kun je geen kolom genaamd code(of wat anders)toevoegen?

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??
 



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.