Sessions in PHP4 Mysql enzo... probleem

Pagina: 1
Acties:

  • smaij
  • Registratie: November 2000
  • Laatst online: 08:09
Ik ben bezig met een website met authorisaties en dergelijke. Ik ben nu bezig met sessies.
Mijn bedoeling is ook om Groups te maken, zoals User, Lid,
Admin, Werker. Of zoiets dan..
Ik ga dus een table users maken met username en Password,
en een table per group met enkel de username.

Het probleem begint eigenlijk al bij het begin.
code:
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
<?php 
    session_start(); 
?>

<html>
<head>
<title>Making Bones</title>
<script language="javascript">
    .....knip.....
</script>

</head>
<body topmargin="0" leftmargin="0" bgcolor="#4068AC" text="#C1D3E1" link="#80A6BB" vlink="#80A6BB" alink="#80A6BB">

<?php 
If ($HTTP_SESSION_VARS["Login"] == '1') {echo "ingelogd.\n";} //testje
Else {
      echo "nog niet ingelogd.\n"; //testje, gaat later weg
}
?>  

.....knip....

        <?php
            If ($HTTP_SESSION_VARS["Login"] == '1') {
        ?>
            <p align="center"><font color="#80A6BB">You have<br>
            &nbsp;0 New Message(s)</font>
        <?php
            }
            else {
        ?>
            <p align="left">
            <form method="post" action="login.php">
            <input type="hidden" name="Submit" value="1">
            <input type="text" name="LoginNaam">
            <input type="password" name="LoginPassword">
            <input type="submit" value="Login">
            </form>
            </p>
        <?php
            }
        ?>
....knip......

Login.php
code:
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
<?php 
    session_start(); 
?> 

<html> 
<head> 
<title>Logged</title>
</head> 
<body topmargin="0" leftmargin="0" bgcolor="#4068AC" text="#C1D3E1" link="#80A6BB" vlink="#80A6BB" alink="#80A6BB">

<?php

If ($Submit) { 

    $DBHost = "localhost"; 
    $DBLogin = "...";
    $DBPassword = "..."; 
    $DBDatabase = "gebruikers";

    mysql_connect("$DBHost", "$DBLogin", "$DBPassword") or die("MySQL Connectie mislukt"); 
    mysql_select_db("$DBDatabase") or die("Selecteren van database mislukt");

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

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

      if ($Results == '1') { 

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

        echo "Je bent ingelogd. Klik <a href=\"index.php\">hier</a> om naar de hoofdpagina te gaan.\n";

      } 
      else { 

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

      } 

} 
?> 

</body> 
</html>

Het inloggen gaat denk ik wel goed.. de eerste keer komt uiteraard het inlogscherm tevoorchijn ipv u heeft 0 new messages, via de submit knop worden de waarden de waarden gepost naar inlog.php deze komt met de message
"Je bent ingelogd. Klik <a href=\"index.php\">hier</a> om naar de hoofdpagina te gaan."
Dus ik ga terug naar de hoofdpagina, maar krijg weer het inlogscherm te zien en weer staat er helemaal bovenaan "nog niet ingelogd"

RARARA.. hoe kan dit?!?!?!?!?!??!? please.. op phpfreakz hadden ze ook geen raad tot nu toe

Verwijderd

Misschien heb je wat aan het volgende. ;)

Als user authentication tegen database goed verlopen is registreer ik het volgende, waarbij ik de $hash laat genereren (md5) uit het ip-adres van de user en de sessie-id:
PHP:
1
2
3
4
5
6
<?
session_register("SESSION");
$SESSION["userid"] = $userID;
$SESSION["ip"]     = $REMOTE_ADDR;
$SESSION["hash"]   = $hash;
?>

Voor het kijken of een user is ingelogd is, heb ik de volgende functie:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
function isLoggedIn()
{
    global $SESSION, $REMOTE_ADDR;

    $id = session_id();
    $hash = md5($id.$REMOTE_ADDR);
    return isset($SESSION)
    &amp;&amp; isset($SESSION["userid"])
        &amp;&amp; isset($SESSION["ip"])
        &amp;&amp; isset($SESSION["hash"])
        &amp;&amp; $SESSION["ip"] == $REMOTE_ADDR
        &amp;&amp; $SESSION["hash"] == $hash;
}
?>

De functie isLoggedIn geeft 1 terug als de sessie variabelen inderdaad zijn gezet en als het ip-adres samen met het session-id door md5 heen gehaald $hash oplevert...

Hope this helps...

  • smaij
  • Registratie: November 2000
  • Laatst online: 08:09
Op maandag 15 oktober 2001 19:17 schreef Grofur het volgende:
Misschien heb je wat aan het volgende. ;)

Als user authentication tegen database goed verlopen is registreer ik het volgende, waarbij ik de $hash laat genereren (md5) uit het ip-adres van de user en de sessie-id:
PHP:
1
2
3
4
5
6
<?
session_register("SESSION");
$SESSION["userid"] = $userID;
$SESSION["ip"]     = $REMOTE_ADDR;
$SESSION["hash"]   = $hash;
?>

Voor het kijken of een user is ingelogd is, heb ik de volgende functie:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
function isLoggedIn()
{
    global $SESSION, $REMOTE_ADDR;

    $id = session_id();
    $hash = md5($id.$REMOTE_ADDR);
    return isset($SESSION)
    &amp;amp;&amp;amp; isset($SESSION["userid"])
        &amp;amp;&amp;amp; isset($SESSION["ip"])
        &amp;amp;&amp;amp; isset($SESSION["hash"])
        &amp;amp;&amp;amp; $SESSION["ip"] == $REMOTE_ADDR
        &amp;amp;&amp;amp; $SESSION["hash"] == $hash;
}
?>

De functie isLoggedIn geeft 1 terug als de sessie variabelen inderdaad zijn gezet en als het ip-adres samen met het session-id door md5 heen gehaald $hash oplevert...

Hope this helps...
Kan je mij je tables laten zien en hoe je opvraagt hierin. ik snap dit nog niet volledig.. Hoe logt een user in?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:25

Janoz

Moderator Devschuur®

!litemod

Waarom maak je apparte tabellen voor de groepen met de usernames erin? Als je met user_id's werkt gaat het zoeken makkelijker. Als je users maar van 1 groep lid kunnen zijn, dan kun je zelfs beter 1 veld in je usertabel gebruiken.


Trouwens (wild guess) als je op Shift-F5 drukt, ben je dan wel ingelogd?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • smaij
  • Registratie: November 2000
  • Laatst online: 08:09
Op maandag 15 oktober 2001 20:05 schreef Janoz het volgende:
Waarom maak je apparte tabellen voor de groepen met de usernames erin? Als je met user_id's werkt gaat het zoeken makkelijker. Als je users maar van 1 groep lid kunnen zijn, dan kun je zelfs beter 1 veld in je usertabel gebruiken.


Trouwens (wild guess) als je op Shift-F5 drukt, ben je dan wel ingelogd?
Dit omdat als je later makkelijk kan uitbreiden en gewoon een nieuwe table maakt ipv moeilijk een veld invoegen in de bestaande usertable. Niet moeilijk lijkt mij.

Dat wild guess gedoe:p werkt niet hoor.... zou wel erg dom zijn van sessies, maar hoe kwam je erop dan?

  • smaij
  • Registratie: November 2000
  • Laatst online: 08:09
maar niemand ziet een fout in het bovenstaande

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:25

Janoz

Moderator Devschuur®

!litemod

Owh .. bij de weg... if schrijf je met een kleine letter, net als else.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • smaij
  • Registratie: November 2000
  • Laatst online: 08:09
probleem opgelost.. kwam in de error.log wat rare dingen tegen. ben php.ini gaan doorspitten en dacht bij het bekijken ook even om te controleren of de directory wel bestaat waarin hij de sessies opslaat. NEE DUS :(:(:(

maar volgend probleem:

door index.php opnieuw te openen en een nieuwe sessie te starten open ik een nieuw venster, en type ik
http://........./../index.php (zoiets dus :) )
Ik krijg dan bij elke link ook de sessieid te zien zoiets van:
http://...../..../gastenboek.php?PHPSESSID=85ea1ad5001dbdae11db64f75a9b9874

Is dit erg... als ik dus ben ingelogd is dit namelijk niet meer zo, en krijgt degene zijn eigen id dus niet meer te zien, maar dan heeft hij hem natuurlijk al gezien :(

  • smaij
  • Registratie: November 2000
  • Laatst online: 08:09
ook opgelost :):):) moest effe mijn php.ini bestand dus weer doorspitten nadat ik de manual op SESSID hadden doorgezocht. BEDANKT 8-)
Pagina: 1