[PHP] login en globals

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • herminator
  • Registratie: Augustus 2000
  • Niet online
Ik heb globals = off staan.

Ik heb dat loginscript uit de artikelen gebruikt.

De inlog pagina werkt.
Maar bij een nieuwe pagina werkt het niet.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?  
    session_start();  

 If ($_SESSION["Login"] == 1) {  

?>  

<html> 
<body> 
ingelogd 



<?php  
    }  
    else { include("../include/error.php"); 
    } 
?>  
</body> 
</html>

Ik kom hiermee niet ingelogd te zien.
Op een andere server waar de globals aan staan werkt dit script wel. Dus was moet er veranderd worden zodat het ook werkt bij global = off?

I'll be back


Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
Geef eens apart de code van je login page en de nieuwe pagina? Kijk eens met var_dump($_SESSION) of je sessie wel goed wordt geschreven?

Iets meer info zou wel fijn zijn...

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

  • Boomerang
  • Registratie: November 2000
  • Niet online
Staan alle session instellingen wel goed ingesteld ? Kijk anders es in de session tmp dir of er wel daadwerkelijk een session wordt aangemaakt.

Acties:
  • 0 Henk 'm!

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 20-08 21:38
Rotjeknor schreef op 03 March 2003 @ 15:15:
Geef eens apart de code van je login page en de nieuwe pagina? Kijk eens met var_dump($_SESSION) of je sessie wel goed wordt geschreven?

Iets meer info zou wel fijn zijn...
var_dump is echt smerig bij array's.

Maak nieuwe pagina aan met deze code:
PHP:
1
2
session_start();
print_r($_SESSION);


En bekijk in de bron of alles er netjes uitziet.

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Acties:
  • 0 Henk 'm!

  • herminator
  • Registratie: Augustus 2000
  • Niet online
Dit is het loginscript die wel werkt.
Maar Ik krijg het dus niet voorelkaar dat de sessie onthouden wordt in die nieuwe pagina.

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?
    session_start(); 
?> 

<html> 
<head> 
<title>Login pagina</title> 
</head> 
<body>



<?php 

if ($_POST['Submit']) {

  include("../include/connect.php");

    $naam = $_POST['naam'];
    $password = $_POST['password'];

    $naam = addslashes($naam); 
    $password = addslashes($password); 

    $Query = mysql_query("SELECT * FROM dj WHERE naam = '$naam' AND password = '$password'"); 
    $Results = mysql_num_rows($Query); 

       if ($Results == '1') { 

       $Login = "1"; 

       $_SESSION["Login"] = $Login; 

            echo "Je bent ingelogd. Klik <a href=\"logout.php\">hier</a> om verder te gaan.<br>\n"; 
            echo "<a href=\"berichten.php\">berichten</a>
                    <a href=\"dj.php\">dj</a>
                    <a href=\"week.php\">week</a>
                    <a href=\"admin.php\">admin</a>
                    <a href=\"programma.php\">programma</a>\n";
        } 
        else { 
        $Login = '0';
        echo " Je gebruikersnaam of password klopt niet.\n"; 
        print("<SCRIPT LANGUAGE=\"JavaScript\">"); print("setTimeout('location.href=\"login.php\"','3000');");  
        print("</SCRIPT>");
 
        } 

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

</body> 
</html>

[ Voor 24% gewijzigd door herminator op 03-03-2003 15:27 ]

I'll be back


Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
prog-konijn schreef op 03 March 2003 @ 15:25:
[...]
var_dump is echt smerig bij array's.
Tsja. Ik heb vaak ook gewoon m'n sessie file open staan in UE, dan weet je ook gelijk of tie refresht wordt, en zie je wat erin staat... Een array daarin ziet er nog smeriger uit, maar je moet gewoon een beetje lezen met een filter aan (-:

btw herminator, ik zie nergens een session_register staan? $_SESSION["Login"] = $Login; is dus het probleem...

[ Voor 15% gewijzigd door Rotjeknor op 03-03-2003 15:31 ]

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

  • herminator
  • Registratie: Augustus 2000
  • Niet online
Die session login staat er wel in.
code:
1
2
3
4
5
 if ($Results == '1') { 

       $Login = "1"; 

       $_SESSION["Login"] = $Login;


Met die vardump krijg ik dit.

array(0) { }

I'll be back


Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
herminator schreef op 03 March 2003 @ 15:35:
Die session login staat er wel in.
Ja precies, die moet je dus vervangen door een session_register();

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

  • herminator
  • Registratie: Augustus 2000
  • Niet online
Mooi, bedankt hij werkt nu.
Ik dacht dat je session_register("Login"); moest vervangen door $_SESSION["Login"] = $Login; als je globals gebruikte.


Ik merk nu ook dat ik dit script niet op beide servers kan gebruiken zonder die session regel weer te vervangen door het oude.

[ Voor 46% gewijzigd door herminator op 03-03-2003 15:46 ]

I'll be back


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

Rotjeknor schreef op 03 March 2003 @ 15:39:
[...]

Ja precies, die moet je dus vervangen door een session_register();
Dat is dus onzin; php.net:
If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered() and session_unregister().
Verder weet ik niet in hoeverre PHP case sensitive is qua syntax, maar
code:
1
If ($_SESSION["Login"] == 1) {

!=
code:
1
if ($_SESSION["Login"] == 1) {

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Boomerang
  • Registratie: November 2000
  • Niet online
herminator schreef op 03 maart 2003 @ 15:43:
Mooi, bedankt hij werkt nu.
Ik dacht dat je session_register("Login"); moest vervangen door $_SESSION["Login"] = $Login; als je globals gebruikte.


Ik merk nu ook dat ik dit script niet op beide servers kan gebruiken zonder die session regel weer te vervangen door het oude.
Dat moet ook hoor, als je met register_globals = off werkt bestaat de optie session_register niet meer, en moet je zelfs $_SESSION['var'] = "var"; gebruiken. Ik weet niet wat je precies fout doet, maar ik gebruik dit zo in m'n script en het werkt met register_globals=on & register_globals=off.

edit:

Crisp was me voor :)

[ Voor 8% gewijzigd door Boomerang op 03-03-2003 15:48 ]


Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
crisp schreef op 03 maart 2003 @ 15:47:
[...]
Dat is dus onzin; php.net:
[...]
Damn, dan zit ik fout ja, das het voordeel (/nadeel? (-: ) als je gewoon eigen functies gebruikt voor sessiezooi, dan weet je niet precies meer hoe het nu zit, aangezien je dat ook niet meer precies hoeft te weten...

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

Pas op voor de grote valkuil: variabelen gebruiken met dezelfde naam als de index voor je $_SESSION array; op machines waar register_globals aan staat overschrijven die vrolijk je sessie-variabelen terwijl dat op je development machine (waar je natuurlijk register_globals uit hebt staan en error_reporting op E_ALL ;) ) niet gebeurd.
In dit geval dus geen $Login meer gebruiken, maar alleen een $_SESSION['Login'] = 1 als het inloggen gelukt is :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • herminator
  • Registratie: Augustus 2000
  • Niet online
Nouja, ik weet in iedergeval waar hetprobleem nu ligt. Waarschijnlijk zal mijn config niet helemaal goed zijn op mijn werkcomputer.
met $_SESSION['var'] = "var"; op de server werkt het dus zoals het hoort.
Bedankt allen.

I'll be back


Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

PHP Warning: Your script possibly relies on a session side-effect which
existed until PHP 4.2.3. Please be advised that the session ex
tension does not consider global variables as a source of data, unless
register_globals is enabled. You can disable this functionality
and this warning by setting session.bug_compat_42 or session.bug_compat_warn to
off, respectively. in /www/future.abstrakt.ch/src/html/
includes/xarSession.php on line 239

this error is generated starting with php 4.3 and up. (running 4.4 here)

Systeem | Strava

Pagina: 1