Forum » Server-Side scripting » Login script doet raar
Berichten: 409
avatar
Online Stuur privebericht
Beste cp,

Ik heb op mijn site een login script, deze deed het gewoon de heletijd. Maar nu sinds vandaag, als ik inlog word ik ook gelijk weer uitgelogged automatisch.

Ik log dus in, de menu's komen te voorschijn en dan als ik ergens op klik komt er te staan dat ik niet ingelogged ben. Hij logt mij dus vanzelf uit.

Dit is mijn login script:

Code | Selecteer Alles
minimaliseren
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
<?php
include("includes/include.php");
include(
"includes/connect.php");
include(
"includes/functies.php");
?>


<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    
// Dit is niet mijn gewoonte om queries op deze manier in te springen, maar om de layout
    // van Sitemasters niet naar de knoppen te helpen doe ik dit even gek :)
    
    
$qLogin mysql_query("SELECT id FROM gebruikers WHERE
                gebruikersnaam = '"
.mysql_real_escape_string($_POST['gebruikersnaam'])."' AND
                wachtwoord     = '"
.sha1($_POST['wachtwoord'])."'");
    
    
// Met deze query selecteren we het gebruikers-id van de gebruikersnaam en controleren we of
    // de account geactiveerd is in 1 keer. Als je deze niet snapt, lees hem dan 20 keer :)
    // Je kan natuurlijk ook een tutorial over dit soort queries lezen, alhoewel
    // ze poepsimpel zijn IMO.
    // Deze query mag overigens geen resultaten opleveren om te mogen inloggen. Als deze
    // wél een resultaat oplevert is de account nog niet geactiveerd (en bestaat de
    // activatiedata dus nog).
    
$qActivatie mysql_query("SELECT COUNT(id) FROM gebruikers, gebruikers_activaties WHERE
        gebruikers.gebruikersnaam = '"
.mysql_real_escape_string($_POST['gebruikersnaam'])."' AND
        gebruikers.id             = gebruikers_activaties.gebruikers_id"
);
        
    if(
mysql_result($qActivatie,0) != 0) {
        echo 
'De account is nog niet geactiveerd.';
    } elseif(
mysql_num_rows($qLogin) == 0) {
        echo 
'De gebruikersnaam/wachtwoord combinatie is niet correct.<br><br>';
    } else {
        
// Alles ok, inloggen dus.
        // Nu is 1 ding belangerijk:
        // ZORG DAT ER EEN session_start() GEPLAATST IS, HETZIJ IN JE INDEX.PHP WAAR
        // DEZE PAGINA IN GEPLAATS WORDT, HETZIJ BOVENAAN DEZE PAGINA (ALS ER GEEN
        // INCLUDESYSTEEM IS)!!!
        
$_SESSION['gebruiker']         = mysql_result($qLogin0);
        
$_SESSION['gebruikersnaam'] = $_POST['gebruikersnaam'];
        
// Mocht je nog andere data willen in je sessie, 
        // zoals een level, dien je dit hier te plaatsen.
        
?>
        
        Je bent succesvol ingelogged. Klik <a href="producten.php">hier</a> om onze producten te kunnen zien.<br><br>
        <?php
    
}
}

?>
<form action="<?=htmlentities($_SERVER['REQUEST_URI'])?>" method="post"> 
<? if(isset($_SESSION['gebruiker'])) { 
} else { 
?>

Gebruikersnaam:&nbsp;<input type="text" name="gebruikersnaam" /><br>
Wachtwoord:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="password" name="wachtwoord" /><br>
<center>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="passlost">Wachtwoord vergeten?</a></center><br>
<input name="sub" type="submit" value="Log nu in!"><br><br>
<i>Heb je een probleem bij het inloggen? Let erop dat het inloggen hoofdlettergevoelig is.</i>
<? 
}
?>


functies.php
Code | Selecteer Alles
minimaliseren
1
2
3
4
<? error_reporting );
  
session_start();

  
?>


en voor als het nodig is, mijn logout.php:

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
include("includes/include.php");
include(
"includes/connect.php");
include(
"includes/functies.php");
?> 

<?php
// Zorg dat session_start() hierboven ergens voorkomt,
// hetzij in je globale index.php,
// hetzij gewoon bovenaan dit bestand.
if(isset($_SESSION['gebruiker'])) {
    
session_destroy();
    echo
'Je bent uitgelogd'
} else {
    echo
'Je kan niet uitloggen want je bent nog nooit ingelogged!';
}
?>


Ik snap het echt niet, ik heb er niks aan veranderd maar ik word gewoon gelijk weer uit gelogt.
Laatst gewijzigd door sukel op 2011-07-25 12:05:37
25-07-2011 12:04
Dit topic is 117 keer bekeken door 28 verschillende leden
Reacties op: "Login script doet raar"
1
Berichten: 277
avatar
Offline Stuur privébericht
Ik zou een cookie pakken i.p.v. sessie, die staat wat vaster.

http://php.net/manual/en/function.setcookie.php
25-07-2011 12:05
Berichten: 5
avatar
Offline Stuur privébericht
ik weet dat bij een cookie geen html output mag voorkomen voordat je de setcookie() statement activeert. (net als met header())

ik weet niet of dit het geval is bij $_SESSION, maar in dat geval mogen er ook geen spaties in staan, aangezien die als HTML gezien worden.
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
<?php
include("includes/include.php");
include(
"includes/connect.php");
include(
"includes/functies.php");
?>


<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {


moet dan zijn:

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
<?php
include("includes/include.php");
include(
"includes/connect.php");
include(
"includes/functies.php");

if(
$_SERVER['REQUEST_METHOD'] == 'POST') {
25-07-2011 12:09
Berichten: 409
avatar
Online Stuur privébericht
Quote: knudde1

ik weet dat bij een cookie geen html output mag voorkomen voordat je de setcookie() statement activeert. (net als met header())

ik weet niet of dit het geval is bij $_SESSION, maar in dat geval mogen er ook geen spaties in staan, aangezien die als HTML gezien worden.

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
<?php
include("includes/include.php");
include(
"includes/connect.php");
include(
"includes/functies.php");
?>


<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {


moet dan zijn:

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
<?php
include("includes/include.php");
include(
"includes/connect.php");
include(
"includes/functies.php");

if(
$_SERVER['REQUEST_METHOD'] == 'POST') {



Sorry dat ik het er niet bij vermeld hebt, maar dit is alleen het stukje php, de html staat er nog boven etc. Helemaal bovenaan staat de include maar ik dacht die zet ik er zo even bij

Nieuwe reactie samengevoegd met originele reactie op 25.07.11 16:12:03:
Niemand?

Ik vind het echt vaag het kwam ineens zomaar, ik ben nu ook bijna klaar met mijn project en dan krijg je dit. IK kom er echt niet uit.
25-07-2011 12:30
Reageer op: "Login script doet raar"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden