[PHP] content laden o.b.v. login status

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik ben nieuw in php en heb deze tutorial gevolgd om een site met user logins te maken.

dit is helemaal goed gegaan alleen wil ik nu op basis van de login status de content weergeven.

met dit stukje code kun je de status of je ingelogd bent of niet zien:

<?php
if (!$_COOKIE['userid']){
die("You are not logged in");
}
echo "You are logged in";
?>

ik dacht hiermee op basis login status de juiste tabel te laten weergeven maar als ik er html in prak doet ie niks.

weet iemand een betere manier om dit te doen?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Als eerste zou ik _niet_ die brakke code van die tutorial gebruiken, tenzij je wilt dat iedereen zonder username/password kan inloggen :)
cookies zijn niet veilig ;)

Daarnaast een hoop overbodige en "moeilijke" code...

Zelf zou ik dat userid in een sessie opslaan, want als ik zo naar jouw site zou gaan en jouw site een cookie geven waarin jouw userid zit, dan hoef ik niet in te loggen maar heb ik wel alle rechten :Y)

Acties:
  • 0 Henk 'm!

  • Solopher
  • Registratie: December 2002
  • Laatst online: 11-09 14:55
Ik zou inderdaad ook met sessie's werken.

Mocht je dan nog automatisch inloggen willen hebben dan kun je eventueel nog iets maken dat bijvoorbeeld een userhash in een cookie zet md5(username+password+mktime()) zoiets :).

Maarja, omdat je net begonnen bent lijkt het me niet echt een bruikbare tip :'(

Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Helaas. Geen wachtwoord in die hash doen.


Zet 4 cookies. 1 met het user ID, 1 met het IP adres waar vanaf is ingelogd en 2 met een random key van bijv. 32 tekens (iets als kfj9j393ui3jjqkerjwpoewi232032 en xnvmnmn32328efik34394uffeurhr, maar dan laten genereren door een functie ofzo) en controleer, indien de sessie niet geset is, of die cookies er zijn.

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
/**
 * Set logged in to the guest account (also on IP changing attempt).
 */
if (!isset($_SESSION['iLoggedIn']) || !isset($_SESSION['sIPAddress']) || $_SESSION['sIPAddress'] != $_SERVER['REMOTE_ADDR'])
{
    $_SESSION['iLoggedIn'] = 0;
    $_SESSION['sIPAddress'] = $_SERVER['REMOTE_ADDR'];
}

// ....

    /**
     * Check if the user has the cookies, but only if he's not yet logged in.
     */
    if ($_SESSION['iLoggedIn'] == 0)
    {
        if (isset($_COOKIE['loginid']) && isset($_COOKIE['loginkey1']) && isset($_COOKIE['loginkey2']) && isset($_COOKIE['loginipaddress']))
        {
            $oDatabase->query("SELECT COUNT(1) AS loggedin FROM members WHERE members_id = " . intval($_COOKIE['loginid']) . " AND members_loginkey1 = '" . addslashes($_COOKIE['loginkey1']) . "' AND members_loginkey2 = '" . addslashes($_COOKIE['loginkey2']) . "' AND members_loginipaddress = '" . addslashes($_COOKIE['loginipaddress']) . "' AND '" . addslashes($_SERVER['REMOTE_ADDR']) . "' = '" . addslashes($_COOKIE['loginipaddress']) . "'", 'memberlogin');
            if ($oDatabase->fetch('memberlogin', 'loggedin') == 1)
            {
                $_SESSION['iLoggedIn'] = intval($_COOKIE['loginid']);
                $_SESSION['sIPAddress'] = $_SERVER['REMOTE_ADDR'];
            }
            else
            {
                setcookie('loginid', '', (time() - 3600), $aConfiguration['configuration_sitepath'], $aConfiguration['configuration_sitedomain']);
                setcookie('loginkey1', '', (time() - 3600), $aConfiguration['configuration_sitepath'], $aConfiguration['configuration_sitedomain']);
                setcookie('loginkey2', '', (time() - 3600), $aConfiguration['configuration_sitepath'], $aConfiguration['configuration_sitedomain']);
                setcookie('loginipaddress', '', (time() - 3600), $aConfiguration['configuration_sitepath'], $aConfiguration['configuration_sitedomain']);
            }
        }
    }


Zoiets.

[ Voor 40% gewijzigd door Tanuki op 13-05-2006 20:36 ]

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


Acties:
  • 0 Henk 'm!

  • Pete
  • Registratie: November 2005
  • Laatst online: 07-09 17:51
CelestialCelebi schreef op zaterdag 13 mei 2006 @ 20:35:
Helaas. Geen wachtwoord in die hash doen.
Ik kan het niet laten, maar heb je enige serieus goed onderbouwing waarom dit zeer onverstandig is, en zou je (indien je die hebt) voortaan direct willen geven?

petersmit.eu


Acties:
  • 0 Henk 'm!

  • Acolyte
  • Registratie: Oktober 2002
  • Laatst online: 28-08-2024

Acolyte

Lid

Naast het feit dat je inlogprocedure dus aan alle kanten rammelt, snap ik niet helemaal hoe je dan precies 'html erin prakt'.
HTML invoegen kan op twee manieren:

manier 1:
PHP:
1
2
3
4
5
6
7
8
9
$html = "hier je html code<br />\n";
$html .= "hier nog meer code";

echo $html;

/* resulteert in:
hier je html code
hier nog meer code
*/


manier 2:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
echo $verschillendedingen;

//nu volgt een stukkie html
?>
<table ...>
<tr>
<td>Hoi</td>
</tr>
</table>

<?php

echo $meerphpcode;

?>


En nu wil ik graag weten wat jij geprobeerd hebt :)

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

CelestialCelebi schreef op zaterdag 13 mei 2006 @ 20:35:
Zet 4 cookies. 1 met het user ID, 1 met het IP adres waar vanaf is ingelogd en 2 met een random key van bijv. 32 tekens[...]
Waarom 2 random keys? Is dat veiliger dan 1 random key (of sessie-id zoals je dat normaliter noemt)? Waarom dan niet meteen 10? :P
En waarom zou je het userid en IP adres in een cookie stoppen?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 19:24

Patriot

Fulltime #whatpulsert

Waarom CC de 2e hash heeft is mij onduidelijk, maar hij bedoeld verder gewoon in een aparte cookie hoor ;-)

OT:

Ik zet zelf altijd de cookies 'user_id' en 'user_pass', waarbij user_pass een md5 hash is van het wachtwoord. Ik check verder niet op IP's of User Agents om te kijken of die plotseling veranderen, moet de user de md5 van zijn pass maar niet doorgeven :P

Acties:
  • 0 Henk 'm!

  • Mephisteus
  • Registratie: Februari 2005
  • Niet online
Wat ik heb zijn 2 random keys in één cookie waarbij de eerste helft als id fungeert en de tweede helft als wachtwoord (ze zijn het geen van beide).

Als de eerste helft matcht maar de tweede niet verwijderdt hij de sessie uit de database.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

timmie_loots schreef op zondag 14 mei 2006 @ 01:01:
Ik zet zelf altijd de cookies 'user_id' en 'user_pass', waarbij user_pass een md5 hash is van het wachtwoord. Ik check verder niet op IP's of User Agents om te kijken of die plotseling veranderen, moet de user de md5 van zijn pass maar niet doorgeven :P
Waarom zou je dat wachtwoord (al dan niet md5) in een cookie stoppen? Beter is het om die info in sessie variabelen te stoppen zodat je alleen een cookie hebt met de session id. Hierdoor hoeft het wachtwoord ook maar 1x over de lijn, bij het inloggen alleen.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Zie Erkens; het enige dat je nodig hebt om te kunnen authenticeren na een succesvolle login is een sessie-id die je genereerd (of laat genereren mbv PHP's eigen sessie-systeem) en aan de client geeft. Serverside match je die sessie aan alle andere nodige variabelen (user-id ecterera) en check je eventueel of het IP nog wel matched). Meer heb je clientside niet nodig.

Intentionally left blank

Pagina: 1