PHP & MySQL: inlogsysteem
Check de volgende post, voor reeds aangepast script!
Ik zit een beetje in de knoop met volgend script.
Het probleem is heel eenvoudig: het werkt gewoon niet, hopelijk is de oplossing net zo eenvoudig.
Iemand een idee?
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
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
<?php
include 'inc_stats.php'; //hier includen we stats.php, om de bezoekgegevens van deze pagina bij te houden.
if ($valid !== 'TRUE') { //We kijken of we al aangemeld zijn, als de variabele valid niet gelijk is aan 'TRUE', dan krijgen we het inlogformulier te zien, hieronder in html te vinden.
?>
<br>
<h3>Inloggen</h3>
<FORM METHOD="post" ACTION="">
<table width="350" border="0">
<tr>
<td>Gebruikersnaam:</td>
<td><div align="right"><input name="user" type="text" value="" size="20" maxlength="255"/></div></td>
</tr>
<tr>
<td>Wachtwoord:</td>
<td><div align="right"><input name="pass" type="password" value="" size="20" maxlength="255" /></div></td>
<td><div align="right"><INPUT NAME="logon" TYPE="submit" VALUE="Inloggen" /></div></td>
</tr>
</table>
</FORM>
<p>Inloggen doe je door je gebruikersnaam in te vullen. Je gebruikersnaam is je klas, gevolgd door je klasnummer.<br>
Bijvoorbeeld: 6j01 (kleine letter).<br>
Je wachtwoord heb je normaal reeds ontvangen, zoniet, gelieve contact op te nemen met de vakleerkracht.</p>
<br>
<?php
}
else {
if (isset($_POST['logon'])) { //Als op de 'Inloggen' knop gedrukt is, mogen we door naar wat volgt.
include 'inc_connect2.php';
$user = $_GET['user']; //De ingevulde gegevens worden toegekend aan variabelen.
$pass = $_GET['pass'];
$querypass = "SELECT `pass` FROM `users` WHERE `user`=`".$user."`"; //We halen het wachtwoord op voor de ingegeven gebruikersnaam in de database. Dit is de MySQL Query.
$fetchpass = mysql_query($querypass) or die ( mysql_error( ) ); //Hier voeren we de Query uit.
$checkpass = mysql_fetch_object($fetchpass); //Hier wordt het wachtwoord toegekend aan een variabele.
if ($pass == $checkpass) { //We kijken of het opgehaalde wachtwoord gelijk is aan het gegeven wachtwoord, zoja mogen we verder, anders ...¨(*)
$valid = 'TRUE';
echo 'Yes!'; //moet nog weg, ter controle tijdens testen. (pagina die hieronder geïnclude wordt moet nog weg)
include 'sec_index.php?page=home'; //Alles is ok, we geven de volgende pagina in (waar nogmaals een beveiliging wordt ingebouwd.)
}
else {
echo 'Uw gebruikersnaam of wachtwoord is niet correct, gelieve opnieuw te proberen.'; // (*)... wordt dit weergegeven.
}
}
}
?>
include 'inc_stats.php'; //hier includen we stats.php, om de bezoekgegevens van deze pagina bij te houden.
if ($valid !== 'TRUE') { //We kijken of we al aangemeld zijn, als de variabele valid niet gelijk is aan 'TRUE', dan krijgen we het inlogformulier te zien, hieronder in html te vinden.
?>
<br>
<h3>Inloggen</h3>
<FORM METHOD="post" ACTION="">
<table width="350" border="0">
<tr>
<td>Gebruikersnaam:</td>
<td><div align="right"><input name="user" type="text" value="" size="20" maxlength="255"/></div></td>
</tr>
<tr>
<td>Wachtwoord:</td>
<td><div align="right"><input name="pass" type="password" value="" size="20" maxlength="255" /></div></td>
<td><div align="right"><INPUT NAME="logon" TYPE="submit" VALUE="Inloggen" /></div></td>
</tr>
</table>
</FORM>
<p>Inloggen doe je door je gebruikersnaam in te vullen. Je gebruikersnaam is je klas, gevolgd door je klasnummer.<br>
Bijvoorbeeld: 6j01 (kleine letter).<br>
Je wachtwoord heb je normaal reeds ontvangen, zoniet, gelieve contact op te nemen met de vakleerkracht.</p>
<br>
<?php
}
else {
if (isset($_POST['logon'])) { //Als op de 'Inloggen' knop gedrukt is, mogen we door naar wat volgt.
include 'inc_connect2.php';
$user = $_GET['user']; //De ingevulde gegevens worden toegekend aan variabelen.
$pass = $_GET['pass'];
$querypass = "SELECT `pass` FROM `users` WHERE `user`=`".$user."`"; //We halen het wachtwoord op voor de ingegeven gebruikersnaam in de database. Dit is de MySQL Query.
$fetchpass = mysql_query($querypass) or die ( mysql_error( ) ); //Hier voeren we de Query uit.
$checkpass = mysql_fetch_object($fetchpass); //Hier wordt het wachtwoord toegekend aan een variabele.
if ($pass == $checkpass) { //We kijken of het opgehaalde wachtwoord gelijk is aan het gegeven wachtwoord, zoja mogen we verder, anders ...¨(*)
$valid = 'TRUE';
echo 'Yes!'; //moet nog weg, ter controle tijdens testen. (pagina die hieronder geïnclude wordt moet nog weg)
include 'sec_index.php?page=home'; //Alles is ok, we geven de volgende pagina in (waar nogmaals een beveiliging wordt ingebouwd.)
}
else {
echo 'Uw gebruikersnaam of wachtwoord is niet correct, gelieve opnieuw te proberen.'; // (*)... wordt dit weergegeven.
}
}
}
?>
Op volgende url kan je gaan kijken:
http://project.bafke.be/index.php?page=inloggen
(wordt wel constant aan gewerkt, dus kan zijn dat straks het probleem anders is ofzo, het valt hieronder dan wel te lezen)
Een gebruikersnaam en wachtwoord voor jullie om te testen:
gebruikersnaam: 6j01
wachtwoord: project
Zoals je zult zien gebeurt er na het klikken op inloggen niks, terwijl het script 'Yes!' zou moeten weergeven, en het formulier zou moeten verdwijnen.
Kan iemand helpen?
Dank bij voorbaat!
(die script is geïnclude in een andere pagina, vandaar geen html opening enz...)
Gewijzigd op 01/01/1970 01:00:00 door Bavo
Met andere woorden, $valid zal nooit de waarde TRUE krijgen omdat altijd het if-statement uitgevoerd wordt...
Dus ik gebruik beter gewoon ACTION="" in het formulier en ik gebruik een andere pagina om het script uit te voeren?
Anders zie ik niet onmiddelijk hoe ik het formulier kan verbergen na aanmelding, of zie ik iets over het hoofd?
Zo is het in 2 pagina's:
inc_inloggen.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
include 'inc_stats.php'; //hier includen we stats.php, om de bezoekgegevens van deze pagina bij te houden.
?>
<br>
<h3>Inloggen</h3>
<FORM METHOD="post" ACTION="index.php?page=exc_inloggen.php">
<table width="350" border="0">
<tr>
<td>Gebruikersnaam:</td>
<td><div align="right"><input name="user" type="text" value="" size="20" maxlength="255"/></div></td>
</tr>
<tr>
<td>Wachtwoord:</td>
<td><div align="right"><input name="pass" type="password" value="" size="20" maxlength="255" /></div></td>
<td><div align="right"><INPUT NAME="logon" TYPE="submit" VALUE="Inloggen" /></div></td>
</tr>
</table>
</FORM>
<p>Inloggen doe je door je gebruikersnaam in te vullen. Je gebruikersnaam is je klas, gevolgd door je klasnummer.<br>
Bijvoorbeeld: 6j01 (kleine letter).<br>
Je wachtwoord heb je normaal reeds ontvangen, zoniet, gelieve contact op te nemen met de vakleerkracht.</p>
<br>
include 'inc_stats.php'; //hier includen we stats.php, om de bezoekgegevens van deze pagina bij te houden.
?>
<br>
<h3>Inloggen</h3>
<FORM METHOD="post" ACTION="index.php?page=exc_inloggen.php">
<table width="350" border="0">
<tr>
<td>Gebruikersnaam:</td>
<td><div align="right"><input name="user" type="text" value="" size="20" maxlength="255"/></div></td>
</tr>
<tr>
<td>Wachtwoord:</td>
<td><div align="right"><input name="pass" type="password" value="" size="20" maxlength="255" /></div></td>
<td><div align="right"><INPUT NAME="logon" TYPE="submit" VALUE="Inloggen" /></div></td>
</tr>
</table>
</FORM>
<p>Inloggen doe je door je gebruikersnaam in te vullen. Je gebruikersnaam is je klas, gevolgd door je klasnummer.<br>
Bijvoorbeeld: 6j01 (kleine letter).<br>
Je wachtwoord heb je normaal reeds ontvangen, zoniet, gelieve contact op te nemen met de vakleerkracht.</p>
<br>
inc_exc_inloggen.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if (isset($_POST['logon'])) { //Als op de 'Inloggen' knop gedrukt is, mogen we door naar wat volgt.
include 'inc_connect2.php';
$user = $_POST['user']; //De ingevulde gegevens worden toegekend aan variabelen.
$pass = $_POST['pass'];
$querypass = "SELECT * FROM 'users' WHERE 'user'='".$user."'"; //We halen het wachtwoord op voor de ingegeven gebruikersnaam in de database. Dit is de MySQL Query.
$fetchpass = mysql_query($querypass) or die ( mysql_error( ) ); //Hier voeren we de Query uit.
$checkpass = mysql_fetch_object($fetchpass); //Hier wordt het wachtwoord toegekend aan een variabele.
if ($pass == $checkpass->pass) { //We kijken of het opgehaalde wachtwoord gelijk is aan het gegeven wachtwoord, zoja mogen we verder, anders ...¨(*)
$valid = 'TRUE';
echo '<p>Yes!</p>'; //moet nog weg, ter controle tijdens testen. (pagina die hieronder geïnclude wordt moet nog weg)
include 'sec_index.php?page=home'; //Alles is ok, we geven de volgende pagina in (waar nogmaals een beveiliging wordt ingebouwd.)
}
else {
echo '<p>Uw gebruikersnaam of wachtwoord is niet correct, gelieve opnieuw te proberen.</p>'; // (*)... wordt dit weergegeven.
}
}
?>
if (isset($_POST['logon'])) { //Als op de 'Inloggen' knop gedrukt is, mogen we door naar wat volgt.
include 'inc_connect2.php';
$user = $_POST['user']; //De ingevulde gegevens worden toegekend aan variabelen.
$pass = $_POST['pass'];
$querypass = "SELECT * FROM 'users' WHERE 'user'='".$user."'"; //We halen het wachtwoord op voor de ingegeven gebruikersnaam in de database. Dit is de MySQL Query.
$fetchpass = mysql_query($querypass) or die ( mysql_error( ) ); //Hier voeren we de Query uit.
$checkpass = mysql_fetch_object($fetchpass); //Hier wordt het wachtwoord toegekend aan een variabele.
if ($pass == $checkpass->pass) { //We kijken of het opgehaalde wachtwoord gelijk is aan het gegeven wachtwoord, zoja mogen we verder, anders ...¨(*)
$valid = 'TRUE';
echo '<p>Yes!</p>'; //moet nog weg, ter controle tijdens testen. (pagina die hieronder geïnclude wordt moet nog weg)
include 'sec_index.php?page=home'; //Alles is ok, we geven de volgende pagina in (waar nogmaals een beveiliging wordt ingebouwd.)
}
else {
echo '<p>Uw gebruikersnaam of wachtwoord is niet correct, gelieve opnieuw te proberen.</p>'; // (*)... wordt dit weergegeven.
}
}
?>
(het klopt dat de url vanuit inc_inloggen.php naar inc_exc_inloggen.php naar exc_inloggen.php verwijst, in index.php wordt die inc_ toegevoegd.)
Gewijzigd op 01/01/1970 01:00:00 door Bavo
Op die manier wordt er eerst gecontroleerd of iemand inlogt en als dat lukt wordt $valid op TRUE gezet. Vervolgens wordt het if-statement voor het weergeven van het formulier niet meer uitgevoerd omdat $valid op TRUE staat...
Maar dat is het probleem niet meer, omdat het zoals het nu is nog steeds niet werkt...
Ook als ik het doe zoals je net zei.
Ik zie echter de fout echt niet, en ookal zou mijn query fout zijn of de database problemen geven, ik zou een foutmelding moeten krijgen, maar ik krijg helemaal niks.
Bedankt dat je de tijd wil nemen om te antwoorden trouwens. Ik vindt het op fora over onderwerpen waar ik zelf veel ervaring in heb ook vervelend om die koppige newbies te gaan helpen. Veel respect dus! :)
Gewijzigd op 01/01/1970 01:00:00 door Bavo
Plaats in je script eens wat echo's zodat je weet welke delen er nu wel en niet uitgevoerd worden. Met name het if statement waarin je controleert of het formulier gepost is.
De houdige code:
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
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
<?php
include 'inc_stats.php'; //hier includen we stats.php, om de bezoekgegevens van deze pagina bij te houden.
?>
<br>
<h3>Inloggen</h3>
<FORM METHOD="post" ACTION="">
<table width="350" border="0">
<tr>
<td>Gebruikersnaam:</td>
<td><div align="right"><input name="user" type="text" value="" size="20" maxlength="255"/></div></td>
</tr>
<tr>
<td>Wachtwoord:</td>
<td><div align="right"><input name="pass" type="password" value="" size="20" maxlength="255" /></div></td>
<td><div align="right"><input name="logon" type="submit" value="Inloggen" /></div></td>
</tr>
</table>
</FORM>
<p>Inloggen doe je door je gebruikersnaam in te vullen. Je gebruikersnaam is je klas, gevolgd door je klasnummer.<br>
Bijvoorbeeld: 6j01 (kleine letter).<br>
Je wachtwoord heb je normaal reeds ontvangen, zoniet, gelieve contact op te nemen met de vakleerkracht.</p>
<br>
<?php
if (isset($_POST['logon'])) { //Als op de 'Inloggen' knop gedrukt is, mogen we door naar wat volgt.
include 'inc_connect2.php';
$user = $_POST['user']; //De ingevulde gegevens worden toegekend aan variabelen.
$pass = $_POST['pass'];
$querypass = "SELECT * FROM 'users' WHERE 'user'='".$user."'"; //We halen het wachtwoord op voor de ingegeven gebruikersnaam in de database. Dit is de MySQL Query.
$fetchpass = mysql_query($querypass) or die ( mysql_error( ) ); //Hier voeren we de Query uit.
$checkpass = mysql_fetch_object($fetchpass); //Hier wordt het wachtwoord toegekend aan een variabele.
if ($pass == $checkpass->pass) { //We kijken of het opgehaalde wachtwoord gelijk is aan het gegeven wachtwoord, zoja mogen we verder, anders ...¨(*)
$valid = 'TRUE';
echo 'Yes!'; //moet nog weg, ter controle tijdens testen. (pagina die hieronder geïnclude wordt moet nog weg)
include 'sec_index.php?page=home'; //Alles is ok, we geven de volgende pagina in (waar nogmaals een beveiliging wordt ingebouwd.)
}
else {
echo 'Uw gebruikersnaam of wachtwoord is niet correct, gelieve opnieuw te proberen.'; // (*)... wordt dit weergegeven.
}
}
?>
include 'inc_stats.php'; //hier includen we stats.php, om de bezoekgegevens van deze pagina bij te houden.
?>
<br>
<h3>Inloggen</h3>
<FORM METHOD="post" ACTION="">
<table width="350" border="0">
<tr>
<td>Gebruikersnaam:</td>
<td><div align="right"><input name="user" type="text" value="" size="20" maxlength="255"/></div></td>
</tr>
<tr>
<td>Wachtwoord:</td>
<td><div align="right"><input name="pass" type="password" value="" size="20" maxlength="255" /></div></td>
<td><div align="right"><input name="logon" type="submit" value="Inloggen" /></div></td>
</tr>
</table>
</FORM>
<p>Inloggen doe je door je gebruikersnaam in te vullen. Je gebruikersnaam is je klas, gevolgd door je klasnummer.<br>
Bijvoorbeeld: 6j01 (kleine letter).<br>
Je wachtwoord heb je normaal reeds ontvangen, zoniet, gelieve contact op te nemen met de vakleerkracht.</p>
<br>
<?php
if (isset($_POST['logon'])) { //Als op de 'Inloggen' knop gedrukt is, mogen we door naar wat volgt.
include 'inc_connect2.php';
$user = $_POST['user']; //De ingevulde gegevens worden toegekend aan variabelen.
$pass = $_POST['pass'];
$querypass = "SELECT * FROM 'users' WHERE 'user'='".$user."'"; //We halen het wachtwoord op voor de ingegeven gebruikersnaam in de database. Dit is de MySQL Query.
$fetchpass = mysql_query($querypass) or die ( mysql_error( ) ); //Hier voeren we de Query uit.
$checkpass = mysql_fetch_object($fetchpass); //Hier wordt het wachtwoord toegekend aan een variabele.
if ($pass == $checkpass->pass) { //We kijken of het opgehaalde wachtwoord gelijk is aan het gegeven wachtwoord, zoja mogen we verder, anders ...¨(*)
$valid = 'TRUE';
echo 'Yes!'; //moet nog weg, ter controle tijdens testen. (pagina die hieronder geïnclude wordt moet nog weg)
include 'sec_index.php?page=home'; //Alles is ok, we geven de volgende pagina in (waar nogmaals een beveiliging wordt ingebouwd.)
}
else {
echo 'Uw gebruikersnaam of wachtwoord is niet correct, gelieve opnieuw te proberen.'; // (*)... wordt dit weergegeven.
}
}
?>
De error: "You have an error in your SQL syntax near ''users' WHERE 'user'=''' at line 1"
Mocht je de fout zien, je hulp is welkom, maar hier kan ik zelf ook achter komen denk ik. :)
alvast bedankt voor alle hulp!
Wat doen die quotes daar rond je tabel- en kolomnaam? Die horen daar niet thuis. Quotes gebruik je enkel rond strings...
Allesinds, nu moet ik enkel nog eens controleren of de tabelnaam juist is, want de error vertelt me dat die tabel niet bestaat.
edit: had een foutje gemaakt in connect2.php, geen probleem nu, alles werkt!
Bedankt!
Gewijzigd op 01/01/1970 01:00:00 door Bavo