Login PHP en MySQL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

26/05/2004 21:49:00
Quote Anchor link
Ik heb een vraag. Er zit een fout in het volgende script. Als ik het open, dan wordt de lijst met nicknames niet zichtbaar. Ik heb een database (genaamd login) met de velden id, nickname, password, email en status. Weet iemand hoe dat kan en waar de fout zit?? Alvast bedankt voor de medewerking!!


<form action="member_login.php" method="post">
Nickname:
<select name="nickname" id="nickname" class="form">
<option selected="selected" value=" ">Your Nickname:</option>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    // Een rij met gebruikersnamen maken, zodat de gebruiker sneller kan inloggen. Vaak
    // zijn ze vergeten of hun naam nou met een kleine of grote hoofdletter geschreven
    // werd.

    $query = mysql_query("SELECT `nickname` FROM `login` ORDER BY nickname ASC");
    while ($rij = mysql_fetch_object($query)) {
        print "<option value=\"".$rij->nickname."\">".$rij->nickname."</option>\n";
    }

    ?>

</select>
<br />
Password:
<input type="password" name="password" id="password" size="15" maxlength="15" class="form" />
<br />
<input type="checkbox" name="requestpw" id="requestpw" value="1" />
Sent password to my e-mail
<br />
<br />
<input type="submit" value="Login" class="button" name="submit" />
</form>
 
PHP hulp

PHP hulp

25/04/2024 12:21:27
 
Mitch X

Mitch X

27/05/2004 09:44:00
Quote Anchor link
Kweenie hoeveel leden jij hebt maar dat nickname ding lijkt me sowieso nogal omslachtig ...
En wat doet die \n achter </option>?
 
Rick

Rick

27/05/2004 10:05:00
Quote Anchor link
\n geeft een newline, lijkt me toch duidelijk :)
dat houd de html weer een stuk netter
 

27/05/2004 10:32:00
Quote Anchor link
Sorry, ik heb hetal gevonden. Ik heb de pagins niet geopend met:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    session_start();
?>


:S:S. Evengoed bedankt voor het bekijken van het script...
 
Mitch X

Mitch X

27/05/2004 10:41:00
Quote Anchor link
Dat het een newline geeft snapte ik jah
Maar ik dacht wat moet dat ernou achter :)
 
Rick

Rick

27/05/2004 11:25:00
Quote Anchor link
doe dit maar eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
for($i=0;$i<20;$i++){
   echo '<option value="'.$i.'">'.$i.'</option>';
}

?>

en dan naar de html source kijken, wedden dat het met newlines makkelijker leest ;)
 

27/05/2004 15:32:00
Quote Anchor link
Wie kan er een script maken van een login.
met mysQl enzow
 

27/05/2004 15:51:00
Quote Anchor link
Doe gewoon copy - paste. Het enige wat je hoeft aan te passen zij nde plaatsen aangegeven met ******. Hier is gekozen voor sessies en noet van coockies, omdat sessies via de server gaan en dus niet aangepast kunnen worden. Noem het volgende bestand login.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    session_start();
?>


<html>
<head>
<title>Login pagina</title>
</head>
<body>

<CENTER><P class="pagetitle"><font size="4">Inloggen configuratiescherm</font></P>

<form method="post" action="login.php">
<TABLE BORDER="0" WIDTH="200" BGCOLOR="#F0F0F0" ALIGN="center" CELLSPACING="2" CELLPADDING="2" CLASS="smallcontenttable">
<TR BGCOLOR="#0099CC">
<TD COLSPAN="2"><font color="#FFFFFF" face="Arial">&nbsp;<B>Inloggen</B></FONT></TD>
</TR>
<TR>
<TD><font face="Arial">Gebruikersnaam</font>:</TD>
<TD><INPUT TYPE="text" NAME="LoginNaam" class="loginformveld"></TD>
</TR>
<tr>
<TD><font face="Arial">Wachtwoord:</font></TD>
<TD><INPUT TYPE="password" NAME="LoginPassword" class="loginformveld"></TD>
</tr>
</CENTER>
<INPUT TYPE="hidden" NAME="Submit" VALUE="1">
<TD COLSPAN="2" ALIGN="RIGHT"><INPUT TYPE="submit" VALUE="Login" class="loginformveld"></TD>
</TR>
</TABLE>
</form>

<p>

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


If ($Submit) {

    $DBHost = "******";
    $DBLogin = "******";
    $DBPassword = "******";
    $DBDatabase = "******";

        mysql_connect("$DBHost", "$DBLogin", "$DBPassword");
        @
mysql_select_db("$DBDatabase");

            $LoginNaam = addslashes($LoginNaam);
            $LoginPassword = addslashes($LoginPassword);

    $Query = mysql_query("SELECT * FROM gebruikers WHERE gebruiker = '$LoginNaam' AND password = '$LoginPassword'");
    $Results = mysql_num_rows($Query);

        if ($Results == '1') {

            $Login = "1";
        session_register("Login");

            echo "Je bent ingelogd. Klik <a href=\"vervolg.php\">hier</a> om verder te gaan.\n";

        }

        else {

        echo " Je gebruikersnaam of password klopt niet.\n";

        }

}

?>


</body>
</html>

Ik denk dat bovenstaande wel voor zich spreekt. Maak nu het bestand vervolg.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    session_start();

    if ($Login == '1') {
?>


<!-- Hier komt de code voor de pagina. Als de gebruiker dit ziet is hij inderdaad ingelogd, want de variabele $Login bestaat. De PHP tag is afgesloten dus je kan gewoon HTML gebruiken -->

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    }
    else {
?>


<!-- De gebruiker is niet van tevoren ingelogd. Hier komt dus een waarschuwing voor de gebruiker dat er eerst ingelogd moet worden. Het is slim om een apart PHP bestand te maken voor deze waarschuwing, en die hier te includen omdat je deze code vaker nodig zult hebben (elke pagina moet immers controleren of er is ingelogd. Dit scheelt een lap code in elk bestand, terwijl die code overal hetzelfde is. -->

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    }
?>


Als je dit tweede script op alle pagina's die beveiligd moeten worden zet, dan controleert hij elke keer of je bent aangemeld. Voordeel hiervan is dat er niet iemand via een zoekbox toch intern kan komen.

Maak verder de volgende tabel aan in MySQL:
CREATE TABLE `gebruikers` (
`gebruiker` VARCHAR(15) NOT NULL,
`password` VARCHAR(33) NOT NULL
);

Ik hoop dat je hier wat aan hebt
 
Arend a

Arend a

27/05/2004 16:29:00
Quote Anchor link
het is ook nog wel grappig om een niet compleet brakke mysql tabel te hebben.

Zoals bijvoorbeeld unieke usernames, een primaire sleutel user_id.

create table gebruikers (
user_id int(5) auto_increment not null,
user_naam varchar(15) not null,
user_password varchar(33) not null,
primary key(user_id),
unique(user_naam)
);

Verder is het handig om voor passwords van de functie PASSWORD() gebruik te maken

$Query = mysql_query("SELECT * FROM gebruikers WHERE gebruiker = '$LoginNaam' AND password = PASSWORD('$LoginPassword')");

Zelfde dient bij het inserten te geschieden

INSERT INTO gebruikers .. (user_naam, user_password) values ('$user', PASSWORD('$password');

Verder maak je geen gebruik van Superglobals, wat schandlig is, op zn minst.

voor sessie variabelen geld voor $Login:

$SESSION['Login'] om op te vragen of de user ingelogd is.

Grtz,

Adje
 

27/05/2004 16:47:00
Quote Anchor link
Wat bedoel je met dat laatste? Hoe voer ik dat in?


voor sessie variabelen geld voor $Login:

$SESSION['Login'] om op te vragen of de user ingelogd is.


Hartelijk dank tot zo ver iig
 

24/06/2004 18:20:00
Quote Anchor link
Script werkt perfect... Maar nu wil ik graag meerdere gebruikers die ik allemaal naar een eigen site toe stuur...

Dus toen heb ik in de tabel Site toegevoegd.

En de script als volget gemaakt:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php  
    session_start();  
?>


<html>
<head>
<title>Login pagina</title>
</head>
<body>

<CENTER><P class="pagetitle"><font size="4">Inloggen configuratiescherm</font></P>

<form method="post" action="login.php">
<TABLE BORDER="0" WIDTH="200" BGCOLOR="#F0F0F0" ALIGN="center" CELLSPACING="2" CELLPADDING="2" CLASS="smallcontenttable">
<TR BGCOLOR="#0099CC">
<TD COLSPAN="2"><font color="#FFFFFF" face="Arial"> <B>Inloggen</B></FONT></TD>
</TR>
<TR>
<TD><font face="Arial">Gebruikersnaam</font>:</TD>
<TD><INPUT TYPE="text" NAME="LoginNaam" class="loginformveld"></TD>
</TR>
<tr>
<TD><font face="Arial">Wachtwoord:</font></TD>
<TD><INPUT TYPE="password" NAME="LoginPassword" class="loginformveld"></TD>
</tr>
</CENTER>
<INPUT TYPE="hidden" NAME="Submit" VALUE="1">
<TD COLSPAN="2" ALIGN="RIGHT"><INPUT TYPE="submit" VALUE="Login" class="loginformveld"></TD>
</TR>
</TABLE>
</form>

<p>

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


If ($Submit) {  

    $DBHost = "****";  
    $DBLogin = "****";  
    $DBPassword = "****";  
    $DBDatabase = "****";  

        mysql_connect("$DBHost", "$DBLogin", "$DBPassword");  
        @
mysql_select_db("$DBDatabase");  

            $LoginNaam = addslashes($LoginNaam);  
            $LoginPassword = addslashes($LoginPassword);  
            $LoginSite = addslashes($LoginSite);

    $Query = mysql_query("SELECT * FROM gebruikers WHERE user_naam = '$LoginNaam' AND user_password = '$LoginPassword' AND user_site = '$LoginSite'");  
    $Results = mysql_num_rows($Query);  

        if ($Results == '1') {  

            $Login = "1";  
        session_register("Login");  

            echo "Je bent ingelogd. Klik <a href= $LoginSite>hier</a> om verder te gaan.\n";  

        }
  
        else {  

        echo " Je gebruikersnaam of password klopt niet.\n";  

        }  

}

?>


</body>
</html>


Ik heb verder nog niet zoveel kaas gegeten van PHP maar opzich leek mij dit wel een goede oplossing!! :D

Maar nu krijg ik de volgende fout:
Parse error: parse error in /data/members/paid/v/a/vakantielokaties.nl/htdocs/zwaluw/login2.php on line 62


Weet iemand wat ik hier mee moet?

Ik zou het zeer waarderen! :)

Groeten. Ell.
Gewijzigd op 25/06/2004 00:20:00 door
 

24/06/2004 18:26:00
Quote Anchor link
Die eerste groene error in het bericht is de " die er teveel in staat.... of niet? :)

dat heb ik inmiddels veranderd. Maar wat bedoelen ze met die 2de warning dan?
 
Mitch X

Mitch X

24/06/2004 21:11:00
Quote Anchor link
Die kwam door de eerste.
 
ElleRt

ElleRt

24/06/2004 22:58:00
Quote Anchor link
aah.. ok.. :) maar wat doe ik dan nog verder fout?

Of beter gezegt.. kan het wel op de manier zoals ik dat nu wil???
 



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.