inlog systeem logt uit
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if (!isset($_POST['submit'])) {
echo '<fieldset><legend>Login</legend>';
echo '<form name="login" action="' . $_SERVER['PHP_SELF'] . '" method="post">';
echo '<input type="text" class="text" size="12" name="user" /> ';
echo '<input type="password" class="text" size="12" name="pass" /> ';
echo '<input type="submit" name="submit" value="Log in!" class="text" />';
echo '</form>';
echo '</fieldset>';
} else {
include("connect.php");
$sql = "SELECT * FROM users WHERE user='" . $_POST['user'] . "' AND pass = '" . md5($_POST['pass']) . "'";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 1) {
echo 'user gevonden en wachtwoord is correct';
$_SESSION['user'] = $_POST['user'];
$_SESSION['pass'] = $_POST['pass'];
echo '<a href="check2.php">droog</a>';
} else {
echo '<h1>Verkeerde gebruikersnaam of verkeerd wachtwoord!</h1> <a href="index.php">Probeer opnieuw</a>';
}
}
?>
if (!isset($_POST['submit'])) {
echo '<fieldset><legend>Login</legend>';
echo '<form name="login" action="' . $_SERVER['PHP_SELF'] . '" method="post">';
echo '<input type="text" class="text" size="12" name="user" /> ';
echo '<input type="password" class="text" size="12" name="pass" /> ';
echo '<input type="submit" name="submit" value="Log in!" class="text" />';
echo '</form>';
echo '</fieldset>';
} else {
include("connect.php");
$sql = "SELECT * FROM users WHERE user='" . $_POST['user'] . "' AND pass = '" . md5($_POST['pass']) . "'";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 1) {
echo 'user gevonden en wachtwoord is correct';
$_SESSION['user'] = $_POST['user'];
$_SESSION['pass'] = $_POST['pass'];
echo '<a href="check2.php">droog</a>';
} else {
echo '<h1>Verkeerde gebruikersnaam of verkeerd wachtwoord!</h1> <a href="index.php">Probeer opnieuw</a>';
}
}
?>
Maar als ik nu naar 'check2.php' ga, die ook deze code bevat, dan moet ik weer opnieuw inloggen. Hoe kan ik dat verhelpen?
Edit:
<?php en ?> toegevoegd
Gewijzigd op 01/01/1970 01:00:00 door K i p
Zo ja, dan ontbreekt session_start() erin. Dat zul je aan het begin van je script moeten zetten als je verderop met sessies wilt werken...
Op check2.php zet je dan ook session_start() en kun je van de variabelen die je in een sessie opgeslagen hebt gebruik maken...
En waarom zet je een wachtwoord in de sessie? Wachtwoorden gebruik je bij het inloggen en daarna nooit meer. Het is dus volkomen onzinnig om dit gegeven in een sessie te zetten met ook nog eens het risico dat je sessie wordt gehijackt.
En hoe kan ik een uitlog-functie maken? Als ik deze code gebruik:
Krijg ik deze output:
Warning: session_destroy(): Trying to destroy uninitialized session in /home/borisbez/domains/xxx.nl/public_html/login/loguit.php on line 3
Je bent succesvol uitgelogd!
Hoe kan ik dit verhelpen?
De sessie lijkt nog niet geset te zijn.
session_destroy() hoef je niet meer te gebruiken, $_SESSION = array() is voldoende...
voor het geval als je later met andere sessies gaat werken!
die fout heb ik namelijk gemaakt met een spel dat als je een crime had gepleegd dan moest je een uur wachten en die tijd werd opgeslagen in een sessie dus wat deden die gasten die logten gewoon uit en daarna weer in en dan konden ze gewoon weer een crime doen:S en ik ondertussen maar zoeken:S{-_-}
@Devon: Door de browser te sluiten vernietig je ook alle sessies. Jij hebt dus nog steeds een lek in jouw crime-spel zitten. Gebruik een database om het tijdstip op te slaan en controleer bij iedere crime of er al voldoende tijd is verstreken t.o.v. de vorige crime. Zie de vele datum- en tijdfuncties van MySQL in hoofdstuk 12.5 van de handleiding.
Oke bedankt.
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
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
<?php
session_start();
if (!isset($_SESSION['user'])) {
echo '<fieldset><legend>Login</legend>';
echo '<form name="login" action="' . $_SERVER['PHP_SELF'] . '" method="post">';
echo '<input type="text" class="text" size="12" name="user" /> ';
echo '<input type="password" class="text" size="12" name="pass" /> ';
echo '<input type="submit" name="submit" value="Log in!" class="text" />';
echo '</form>';
echo '</fieldset>';
if (!isset($_POST['submit'])) {
include("connect.php");
$sql = "SELECT * FROM users WHERE user='" . $_POST['user'] . "' AND pass = '" . md5($_POST['pass']) . "'";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 1) {
$_SESSION['user'] = $_POST['user'];
echo 'Je bent succesvol ingelogd! <br />';
echo '<a href="index.php">Klik hier om door te gaan</a>';
} else {
die('<h1>Verkeerde gebruikersnaam of verkeerd wachtwoord!</h1> <a href="index.php">Probeer opnieuw</a>');
}
}
} else {
echo 'Je bent al/nog ingelogd! Klik <a href="loguit.php">hier</a> om uit te loggen.';
}
?>
session_start();
if (!isset($_SESSION['user'])) {
echo '<fieldset><legend>Login</legend>';
echo '<form name="login" action="' . $_SERVER['PHP_SELF'] . '" method="post">';
echo '<input type="text" class="text" size="12" name="user" /> ';
echo '<input type="password" class="text" size="12" name="pass" /> ';
echo '<input type="submit" name="submit" value="Log in!" class="text" />';
echo '</form>';
echo '</fieldset>';
if (!isset($_POST['submit'])) {
include("connect.php");
$sql = "SELECT * FROM users WHERE user='" . $_POST['user'] . "' AND pass = '" . md5($_POST['pass']) . "'";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 1) {
$_SESSION['user'] = $_POST['user'];
echo 'Je bent succesvol ingelogd! <br />';
echo '<a href="index.php">Klik hier om door te gaan</a>';
} else {
die('<h1>Verkeerde gebruikersnaam of verkeerd wachtwoord!</h1> <a href="index.php">Probeer opnieuw</a>');
}
}
} else {
echo 'Je bent al/nog ingelogd! Klik <a href="loguit.php">hier</a> om uit te loggen.';
}
?>
Dit is nu mijn code, maar nu is het zo, dat als de sessie niet is ge-set, en post['submit'] ook niet, dat hij weergeeft: Verkeerde gebruikersnaam of verkeerd wachtwoord!
Probeer opnieuw. Dat moet ik niet hebben! Hoe verander ik dat?
Als ik het zo lees zou het moeten werken als je het uitroepteken (!) op regel 11 verwijderd. Je wilt namelijk juist dat dat stuk code uitgevoerd wordt als er wel op submit geklikt is...
Dit is nu mijn script:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
session_start();
if (!isset($_SESSION['sessienaam'])) {
echo '<fieldset><legend>Login</legend>';
echo '<form name="login" action="' . $_SERVER['PHP_SELF'] . '" method="post">';
echo '<input type="text" class="text" size="12" name="user" /> ';
echo '<input type="password" class="text" size="12" name="pass" /> ';
echo '<input type="submit" name="submit" value="Log in!" class="text" />';
echo '</form>';
echo '</fieldset>';
if (isset($_POST['submit'])) {
include("connect.php");
$sql = "SELECT * FROM users WHERE user='" . $_POST['user'] . "' AND pass = '" . md5($_POST['pass']) . "'";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 1) {
$_SESSION['user'] = $_POST['user'];
echo 'Je bent succesvol ingelogd! <br />';
echo '<a href="index.php">Klik hier om door te gaan</a>';
} else {
die('<h1>Verkeerde gebruikersnaam of verkeerd wachtwoord!</h1> <a href="index.php">Probeer opnieuw</a>');
}
}
} else {
echo 'Je bent al/nog ingelogd! Klik <a href="loguit.php">hier</a> om uit te loggen.';
} ?>
session_start();
if (!isset($_SESSION['sessienaam'])) {
echo '<fieldset><legend>Login</legend>';
echo '<form name="login" action="' . $_SERVER['PHP_SELF'] . '" method="post">';
echo '<input type="text" class="text" size="12" name="user" /> ';
echo '<input type="password" class="text" size="12" name="pass" /> ';
echo '<input type="submit" name="submit" value="Log in!" class="text" />';
echo '</form>';
echo '</fieldset>';
if (isset($_POST['submit'])) {
include("connect.php");
$sql = "SELECT * FROM users WHERE user='" . $_POST['user'] . "' AND pass = '" . md5($_POST['pass']) . "'";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 1) {
$_SESSION['user'] = $_POST['user'];
echo 'Je bent succesvol ingelogd! <br />';
echo '<a href="index.php">Klik hier om door te gaan</a>';
} else {
die('<h1>Verkeerde gebruikersnaam of verkeerd wachtwoord!</h1> <a href="index.php">Probeer opnieuw</a>');
}
}
} else {
echo 'Je bent al/nog ingelogd! Klik <a href="loguit.php">hier</a> om uit te loggen.';
} ?>
Wat er nu gebeurt, is als je een geldig user en pass invoert, dat als je op ok klikt, je dit tezien krijgt:
de form en daaronder je bent ingelogd
en als je iets fouts invult:
de form en daaronder verkeerd wachtwoord
Hoe krijg ik dít dan goed?
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
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
session_start();
if (!isset($_SESSION['sessienaam']))
{
if (isset($_POST['submit']))
{
include("connect.php");
$sql = "SELECT * FROM users WHERE user='" . $_POST['user'] . "' AND pass = '" . md5($_POST['pass']) . "'";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 1)
{
$_SESSION['user'] = $_POST['user'];
echo 'Je bent succesvol ingelogd! <br />';
echo '<a href="index.php">Klik hier om door te gaan</a>';
}
else
{
die('<h1>Verkeerde gebruikersnaam of verkeerd wachtwoord!</h1> <a href="index.php">Probeer opnieuw</a>');
}
}
else
{
echo '<fieldset><legend>Login</legend>';
echo '<form name="login" action="' . $_SERVER['PHP_SELF'] . '" method="post">';
echo '<input type="text" class="text" size="12" name="user" /> ';
echo '<input type="password" class="text" size="12" name="pass" /> ';
echo '<input type="submit" name="submit" value="Log in!" class="text" />';
echo '</form>';
echo '</fieldset>';
}
}
else
{
echo 'Je bent al/nog ingelogd! Klik <a href="loguit.php">hier</a> om uit te loggen.';
}
?>
session_start();
if (!isset($_SESSION['sessienaam']))
{
if (isset($_POST['submit']))
{
include("connect.php");
$sql = "SELECT * FROM users WHERE user='" . $_POST['user'] . "' AND pass = '" . md5($_POST['pass']) . "'";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 1)
{
$_SESSION['user'] = $_POST['user'];
echo 'Je bent succesvol ingelogd! <br />';
echo '<a href="index.php">Klik hier om door te gaan</a>';
}
else
{
die('<h1>Verkeerde gebruikersnaam of verkeerd wachtwoord!</h1> <a href="index.php">Probeer opnieuw</a>');
}
}
else
{
echo '<fieldset><legend>Login</legend>';
echo '<form name="login" action="' . $_SERVER['PHP_SELF'] . '" method="post">';
echo '<input type="text" class="text" size="12" name="user" /> ';
echo '<input type="password" class="text" size="12" name="pass" /> ';
echo '<input type="submit" name="submit" value="Log in!" class="text" />';
echo '</form>';
echo '</fieldset>';
}
}
else
{
echo 'Je bent al/nog ingelogd! Klik <a href="loguit.php">hier</a> om uit te loggen.';
}
?>
Oke bedankt allemaal alles werkt nu naar behoren:-) :-D