Versio

Uitloggen.

Overzicht Reageren

Robin van der Vliet

Robin van der Vliet

05/06/2010 11:08:02
Quote Anchor link
Waarom werkt dit script niet.
Het is voor de gebruiker te laten uitloggen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

session_start();

$_SESSION['id'] = '';
$_SESSION['md5_id'] = '';
$_SESSION['username'] = '';
$_SESSION['sha1_password'] = '';

echo "Je bent succesvol uitgelogd.";

?>
Gewijzigd op 05/06/2010 11:27:52 door Robin van der Vliet
 
PHP hulp

PHP hulp

25/05/2012 16:48:20
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Bram Boos
Redacteur

Bram Boos

05/06/2010 11:13:18
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

session_start();
session_unset();
session_destroy();

echo "Je bent succesvol uitgelogd.";

?>
 
Robin van der Vliet

Robin van der Vliet

05/06/2010 11:26:42
Quote Anchor link
Hij leegt ze nu wel maar het werkt nog niet.
Het kan ook komen door het login script.
Dit is het login script:
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
<?php

session_start();

// MYSQL database login hidden. ;)

if (!$_SESSION['username'] = "")
{

echo "Je bent al ingelogd ".$_SESSION['username'].".";
}

else
{
echo '<form method="post">';
echo 'Gebruikersnaam <input type="text" name="username" size="15"><br>';
echo 'Wachtwoord <input type="password" name="password" size="15"><br>';
echo '<input name="submit" type="submit" value="Inloggen">';
echo '</form>';
}


if ($_POST['submit'])
{

    $username = $_POST['username'];
    $password = $_POST['password'];
    $md5_password = (md5($password));

    $username_aantal = mysql_query("Select Count(username) From gebruikers Where username = '".$username."'") or die(mysql_error());
    $password_aantal = mysql_query("Select Count(username) From gebruikers Where md5_password = '".$md5_password."'") or die(mysql_error());

    if (mysql_result($username_aantal, 0) && mysql_result($password_aantal, 0))
    {

        $sql = mysql_query("SELECT * FROM gebruikers WHERE username = '" . $username . "' AND md5_password = '" . $md5_password . "'");
        $fetch = mysql_fetch_assoc($sql);

        $_SESSION['id'] = $fetch['id'];
        $_SESSION['md5_id'] = $fetch['md5_id'];
        $_SESSION['username'] = $fetch['username'];
        $_SESSION['md5_password'] = $fetch['md5_password'];

        echo "Je bent succesvol ingelogd ".$_SESSION['username'].".";
    }

    else
    {
        echo "Gebruikersnaam of wachtwoord incorrect.";
    }
}


?>

Gewijzigd op 05/06/2010 11:29:14 door Robin van der Vliet
 
Bram Boos
Redacteur

Bram Boos

05/06/2010 11:30:33
Quote Anchor link
Wat werkt er nu dan niet? Kun je iets meer informatie geven?
 
FRizZL isMijnUsername

FRizZL isMijnUsername

05/06/2010 11:30:40
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?PHP

if (!$_SESSION['username'] = "")
?>

moet worden
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?PHP

if (!isset($_SESSION['username']))
?>
 
Robin van der Vliet

Robin van der Vliet

05/06/2010 11:32:30
Quote Anchor link
Dat werkt nog steeds niet, de variable is wel leeg.
Deze tekst krijg ik alleen: Je bent al ingelogd .
 
FRizZL isMijnUsername

FRizZL isMijnUsername

05/06/2010 11:34:05
Quote Anchor link
Offtopic, waarom zet je trouwens het wachtwoord ook in een sessie.. niet echt veilig!

Edit: lol mijn fout, het moet zijn:

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

if (isset($_SESSION['username']))
?>
Gewijzigd op 05/06/2010 11:35:20 door FRizZL isMijnUsername
 
Bram Boos
Redacteur

Bram Boos

05/06/2010 11:36:05
Quote Anchor link
Je moet niet te veel in een sessie zetten, het gebruikers id en een sessie met TRUE of FALSE is meer dan genoeg!
 
Robin van der Vliet

Robin van der Vliet

05/06/2010 11:39:21
Quote Anchor link
Het werkt.
Bedankt, het is opgelost.


FRizZL isMijnUsername op 05/06/2010 11:34:05:
Offtopic, waarom zet je trouwens het wachtwoord ook in een sessie.. niet echt veilig!

Hoezo is dat niet veilig?
 
FRizZL isMijnUsername

FRizZL isMijnUsername

05/06/2010 12:16:05
Quote Anchor link
Laat ik het anders formuleren, waarom heb je het nodig? Je kan toch gewoon één of twee sessies doorsturen met bijvoorbeeld $_SESSION['login'] = true en $_SESSION['id'] = GEBRUIKERSID, zoals Bram Boos al zei.

Je weet al dat de inloggegevens goed zijn ingevuld door de gebruiker bij het inloggen en de rest is af te leiden aan de hand van bijvoorbeeld de gebruikersid.
 
Robin van der Vliet

Robin van der Vliet

06/06/2010 11:28:34
Quote Anchor link
FRizZL isMijnUsername op 05/06/2010 12:16:05:
Je weet al dat de inloggegevens goed zijn ingevuld door de gebruiker bij het inloggen en de rest is af te leiden aan de hand van bijvoorbeeld de gebruikersid.

En als ze dan de sessie veranderen in een ander id, dan zitten ze gewoon op iemand anders account.
 
Nibu lez

Nibu lez

06/06/2010 11:30:48
Quote Anchor link
Lock de sessie dan aan een ip
 
P Lekensteyn

P Lekensteyn

06/06/2010 11:57:23
Quote Anchor link
En als je magic_quotes_gpc uit heb staan (wat aangeraden is) kan iedereen met de 1e gebruiker inloggen door als username het volgende op te geven:
' or 1 or '
Wel moet je het wachtwoord weten van een account.

Fix voor de username:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$username
= mysql_real_escape_string($_POST['username']);
?>
 
Robin van der Vliet

Robin van der Vliet

06/06/2010 12:15:38
Quote Anchor link
Niels Hop op 06/06/2010 11:30:48:
Lock de sessie dan aan een ip

En hoe doe je dat?


Peter datwiljewelwetenhe op 06/06/2010 11:57:23:
En als je magic_quotes_gpc uit heb staan (wat aangeraden is)

En hoe zet je dat uit?


Peter datwiljewelwetenhe op 06/06/2010 11:57:23:
Fix voor de username:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$username
= mysql_real_escape_string($_POST['username']);
?>

Dit gebeurde een stuk later in het script. ;)
Gewijzigd op 06/06/2010 12:15:59 door Robin van der Vliet
 
Piet Verhagen

Piet Verhagen

06/06/2010 13:36:29
Quote Anchor link
Als je magic_quotes_gpc uit het staan: mysql_real_escape_string moet je toepassen op elke variabele die je in een SQL query plakt. Hier doe je
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
    $username = $_POST['username'];
    $password = $_POST['password'];
    $md5_password = (md5($password));

En vervolgens ga je deze variabelen in query's plakken ZONDER mysql_real_escape_string
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
    $username_aantal = mysql_query("Select Count(username) From gebruikers Where username = '".$username."'") or die(mysql_error());
    $password_aantal = mysql_query("Select Count(username) From gebruikers Where md5_password = '".$md5_password."'") or die(mysql_error());
Voor het password wellicht in theorie niet zo heel gevaarlijk in dit geval, maar wat betreft de username zit daar een heel groot gapend beveiligings gat.

Zoieso zit het login script raar in elkaar. Je controleert of de username voorkomt en of het paswoord voorkomt. Maar nergens controleer je of username en paswoord bij elkaar horen. Als username en paswoord beide ergens in de database voorkomen (mogelijk bij verschillende gebruikers), doe je
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM gebruikers WHERE username = '" . $username . "' AND md5_password = '" . $md5_password . "'
en vervolgens haal je het resultaat op zonder te controlerne of er überhaupt resultaat is.
Gewijzigd op 06/06/2010 14:34:19 door Piet Verhagen
 
FRizZL isMijnUsername

FRizZL isMijnUsername

06/06/2010 14:07:40
 



Overzicht Reageren

Get Adobe Flash player