[PHP] login sessie wilt niet lukken

Pagina: 1
Acties:

  • Ankh
  • Registratie: Mei 2001
  • Laatst online: 15-09 18:16
ik heb een script gemaakt, en heb dus ook gekeken bij www.phpfreakz.nl wat ik moest doen.. volgens het artikel/script dat er geschreven is, moet het werken .. en het werkte.. nu wilde ik het uitbreiden -> zodat je dus een site krijgt.. waarbij je dus 3 frames eigenlijk krijgt:
code:
1
|<menu>|<hoofd frame>|<wars>|

^^^ dit heb ik dus al (niet zo moeilijk)
maar nu wil ik dus in het <menu> dat inlog system in bakken:
code:
1
2
3
4
5
6
---
login
---
---
menu 
---

dus eigenlijk hetzelfde als ze bij phpfreakz hebben.
nu heb ik dit dus allemaal

Login.php
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
<?
  // login.php
  session_start();
  include 'connect.php';

  if (isset($submit)) {
    $query = "SELECT * FROM leden WHERE nick = '$input_ID' AND password = '$input_PW'";
    $result = @mysql_query($query);
    if (@mysql_num_rows($result) == 1) {
      $UserSession->login = 1;
      $UserSession->userID = $input_ID;
      $UserSession->userPW = $input_PW;
      session_register('UserSession');
      header('Location: index1.php?');
      exit();
    }
  }
?>
<form method="post" action="login.php">
<input type="text" name="input_ID">
<input type="password" name="input_PW">
<input type="submit" name="submit" value="Login">
</form>
?>

in de index1.php staat dit bij een van de frames:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
  // index1.php
  session_start();
  if ($UserSession->Login == 1) {
    echo 'Welkom '.$UserSession->userID;
  }
  else {
    include('login.php');
  }
?>

dus als het je alles hebt ingevuld bij de frame.. dan moet hij de pagina reloaden en dan krijg je dus ipv van het <form> die tekst van welkom te zien...

maar om 1 of andere manier wilt het niet werken.... :( weet iemand misschien een oplossing?
dus nu als ik kijk en login bijv.. dan zie ik even goed dus dat Welkom terwijl ik niet eens heb ingelogd

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Wat ik vaker heb gezien, is dat het 'doorgeven' van objecten in sessies niet zo lekker verloopt. Je zou even kunnen proberen om 3 losse variabelen te gebruiken en die allemaal registreren. Dan kun je ven kijken of het wel werkt. Oplossing komt daarna wel :)

[edit]

En ik zie login en Login. (hoofdletter probleem) kijk daar eerst even naar

  • Ankh
  • Registratie: Mei 2001
  • Laatst online: 15-09 18:16
hmm ok..

of een login met een cookie ? dat zou natuurlijk ook kunnen (moet wel kunnen via een mysql Database, ik ga niet met files kutten)

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Ik vind sessions altijd wel aardig werken. Heb wel niet zoveel ervaring met cookies, maarja.

Wat je wil kan ook gewoon hoor, dus waarom zou je veranderen?

Kijk nog even naar die hoofdletter...

En eigenlijk is het veel netter om een class te maken. Dan weet je zeker dat het goed gaat.

  • Ankh
  • Registratie: Mei 2001
  • Laatst online: 15-09 18:16
die hoofdletter is het niet.. ik ben gewend om elke nieuwe zin met een Hoofdletter te beginnen :) goed trouwens dat je het zag...
Wat ik vaker heb gezien, is dat het 'doorgeven' van objecten in sessies niet zo lekker verloopt. Je zou even kunnen proberen om 3 losse variabelen te gebruiken en die allemaal registreren. Dan kun je ven kijken of het wel werkt. Oplossing komt daarna wel
dit snap ik niet helemaal... kan je het uitleggen... 3 variabelen (ala das niet moeilijk :) ;)) registeren :? (was dat :P)

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Met registreren doel ik op het registreren van de variabele in de sessie. Hiervoor gebruik je het commando session_register.

Jouw voorbeeldje met 3 variabelen ($login,$userID,$userPW):

Login.php
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
<?
  // login.php
  session_start();
  include 'connect.php';

  if (isset($submit)) {
    $query = "SELECT * FROM leden WHERE nick = '$input_ID' AND password = '$input_PW'";
    $result = @mysql_query($query);
    if (@mysql_num_rows($result) == 1) {
      $login = 1;
      $userID = $input_ID;
      $userPW = $input_PW;
      session_register('login');
      session_register('userID');
      session_register('userPW');
      header('Location: index1.php');
      exit();
    }
  }
?>
<form method="post" action="login.php">
<input type="text" name="input_ID">
<input type="password" name="input_PW">
<input type="submit" name="submit" value="Login">
</form>
?>


PHP:
1
2
3
4
5
6
7
8
9
10
<?
  // index1.php
  session_start();
  if ($login == 1) {
    echo 'Welkom '.$userID;
  }
  else {
    include('login.php');
  }
?>

  • Ankh
  • Registratie: Mei 2001
  • Laatst online: 15-09 18:16
thnx rob ;)

ik ben maar ff helemaal overnieuw begonnen.. en die logout.php laat ik maar ff zitten :)
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
<?
    session_start();
    if($submit)
    {
    include('connect.php');
    $Query = mysql_query("SELECT * FROM leden WHERE nick = '$input_ID' AND password = '$input_PW'");
    $Results = mysql_num_rows($Query);

        if ($Results == '1') 
            {
               $UserSession->login = 1;
            $UserSession->userID = "$input_ID";
            $UserSession->userPW = "$input_PW";
            session_register("UserSession");
        
            header('Location: login.php');
            exit();
            }
        else 
            {
            echo " Je gebruikersnaam of password klopt niet.\n";
            }
    }    
    elseif ($UserSession->login = 1) 
      {
    echo 'Welkom '.$UserSession->userID;
    }

    else
    {
?>
<form method="post" action="login.php">
    <input type="hidden" name="Submit" value="1">
    <input type="text" name="input_ID">
    <input type="password" name="input_PW">
    <input type="submit" value="Login">
</form>
<p>
<?
    }
?>

zoals je kan zien moet hij 1 van deze 3 dingen nemen.. maar hij neemt automatisch (denk ik) "welkom" hoe kan dat? en wat doe ik fout? vele mensen hebben gekeken .. maar snapte niet wat er fout zit.. HELP

[edit]
ff nog bij vertellen dat die sessie's.. juist aangeraden werd bij phpfreakz.. want anders is het niet secure... duzzzz

  • DigiK-oz
  • Registratie: December 2001
  • Laatst online: 13-09 13:38
[
elseif ($UserSession->login = 1)
]

zoals je kan zien moet hij 1 van deze 3 dingen nemen.. maar hij neemt automatisch (denk ik) "welkom" hoe kan dat? en wat doe ik fout? vele mensen hebben gekeken .. maar snapte niet wat er fout zit.. HELP

[edit]
ff nog bij vertellen dat die sessie's.. juist aangeraden werd bij phpfreakz.. want anders is het niet secure... duzzzz
[/quote]

Uhhhh.....Dubbel = teken gebruiken bij je elseif ? php ken ik niet echt, maar bij de andere 'if' dingen wordt dubbel = teken gebruikt, zoals bij vele andere (script)talen.

Whatever


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Ok, de eerste if (if($submit)) kijkt naar de variabele $submit. (Klinkt logisch). Maar in jouw form staat iets met de naam Submit. Wederom weer een hoofdletter-gevoelige-variabele-fout. ;)

Verwijderd

Op dinsdag 22 januari 2002 21:30 schreef RdeTuinman het volgende:
Met registreren doel ik op het registreren van de variabele in de sessie. Hiervoor gebruik je het commando session_register.

Jouw voorbeeldje met 3 variabelen ($login,$userID,$userPW):
Bij het registeren van een session, wordt automatisch een $SESSION[] array aangemaakt waar je al je variabelen in kan stoppen (hoef je niet steeds iedere variabel apart te registeren).
Vb:
session_register("SESSION");
$SESSION["uid"]='username';
$SESSION["pw"]= 'wachtwoord';

session_register doet een impliciete session_start()
De variabel $SESSION kun je het best global maken, zo is ie in verschillende functies aanroepbaar.

  • Ankh
  • Registratie: Mei 2001
  • Laatst online: 15-09 18:16
kwist niet dat het zoveel uitmaakte de == en = <-- doordit kreeg ik het "invul-scherm"

en die hoofdletter shit.. is blaat :+ maar het werkt yes :D

maar thnx allebei :)

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

$UserSession->login = 1
betekent: kan $UserSession->login de waarde 1 krijgen, dit is (in principe) altijd TRUE

$UserSession->login == 1
betekend: is $UserSession->login gelijk aan 1 :)

Verwijderd

$UserSession->login = 1;
Ik zie nergens een class staan. Objecten moeten altijd met $object = new Object(); (of natuurlijk met andere namen) gemaakt worden.

Dus wil je een LoginSessie object gebruiken dan moet je wel eerst een class hiervoor maken.
Heb je eenmaal een class dan kun je een nieuw object maken en de waardes hiervan zetten.

Je kunt het object dan op de volgende manier opslaan in je sessie:
session_register("UserSession") waar UserSession de naam van de variabele is die naar het object verwijst.

Om nu op andere pagina's de waardes in dit object te berijken kun je niet zomaar $UserSession->iets; gebruiken.
Wil je objecten op andere pagina's gebruiken dan waar je deze opslaat dan moet de originele class van het object op elke pagina waar je het object wilt gebruiken aanwezig zijn. include je dus de class op elke pagina dan kun je op elke pagina het object gebruiken dat je hebt opgeslagen in de sessie

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op donderdag 24 januari 2002 15:37 schreef SurfingFromAM2PM het volgende:

[..]

Ik zie nergens een class staan. Objecten moeten altijd met $object = new Object(); (of natuurlijk met andere namen) gemaakt worden.
Sorry, dat klopt nie...

Een object hoeft geen class te zijn een class is altijd een object! Een object kan je niet defineren deze wordt aangemaakt tijdens de initializatie ( raar woord) van de variable.

zie
PHP:
1
2
3
4
<?
$test->blaat="Test";
echo $test->blaat;
?>

$test == object
$test != class

Programmer - an organism that turns coffee into software.

Pagina: 1