Forum » Server-Side scripting » Inloggen doet raar
Berichten: 409
avatar
Online Stuur privebericht
*****FIXED******

Na de zoek functie kwam ik op de site:

http://php.net/manual/en/function.setcookie.php

Daar heb ik even wat dingen van gelezen, en kwam ik er gelijk achter waar het probleem zat.

Hij is dus fixed.

IK laat de topic zelf nog wel staan, aangezien mijn login het eerst ook deed voor 3 dagen, en daarna "crashde"

---------------------------------------------------




Hey cp,

Ik was dus bezig met een project, deze stond op de host versio. Alles ging goed tot ik plots niet meer kon inloggen, dat werkte gewoon opeens niet meer.

Het projectje heeft toen lang stil gelegen, tot ik besloot er weer mee verder te gaan. Ik heb nu het zelfde script op een free host staan, en het inloggen werkt gewoon weer.

Ik heb hem nu dus weer op mijn betaalde host (versio) gezet en daar heb ik PRECIES het zelfde script opgezet.

Nou is het probleem echter, dat ik bij de gratis host gewoon kan inloggen, maar als ik dat bij de betaalde doet dan staat er dat ik aangemeld bent, en ook komt het menu tevoorschijn.

Echter, als ik dan van de pagina af gaat, krijg ik mijn error pagina, dat er nog niet ingelogd is, ook verdwijnt de menu (die je alleen ziet als je ingelogd bent)

Nou en zo gaat dat dan door, echt heel vaag. 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
<?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.';
    } 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="controlepaneel.php">hier</a> om naar je controlepaneel te gaan.
        <?php
    
}
}
?>
<form action="<?=htmlentities($_SERVER['REQUEST_URI'])?>" method="post">
Gebruikersnaam:
<input type="text" name="gebruikersnaam" />
Wachtwoord:
<input type="password" name="wachtwoord" />

<input type="submit" value="Inloggen" />
</form>


Nu heb ik mensen horen zeggen dat "cookies" beter zijn, maar daar heb ik absoluut geen verstand van.

Groetjes,

EDIT:

Dit wordt overal geinclude bovenaan:

Code | Selecteer Alles
minimaliseren
1
2
3
error_reporting );

  
session_start();


Als ik de error reporting weghaald, dan komt er overal bovenin mijn scherm te staan:

Code | Selecteer Alles
minimaliseren
1
Warningsession_start() [function.session-start]: Cannot send session cookie headers already sent by (output started at /home/xqtzaoym/domains/*/public_html/index.php:3) in /home/xqtzaoym/domains/*/public_html/includes/functies.php on line 3


Wat ik vaag vind, want NERGENS anders wordt de session opgeroepen.

EDIT EDIT:

Bij de free host ontstaat er een cookie bij mijn cookies, bij de betaalde host wordt er echter geen cookie aangemaakt. Ik denk dat dat het probleem is, maar hoe los ik deze dan op?
Laatst gewijzigd door sukel op 2011-08-25 19:23:08
25-08-2011 16:27
Dit topic is 115 keer bekeken door 28 verschillende leden
Reacties op: "Inloggen doet raar"
1
Berichten: 552
avatar
Offline Stuur privébericht
Try this:

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
<?php
if(isset($_POST['submit'])) {
    
// 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.';
    } 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="controlepaneel.php">hier</a> om naar je controlepaneel te gaan.
        <?php
    
}
}
?>
<form action="<?=htmlentities($_SERVER['REQUEST_URI'])?>" method="post">
Gebruikersnaam:
<input type="text" name="gebruikersnaam" />
Wachtwoord:
<input type="password" name="wachtwoord" />

<input type="submit" name="submit" value="Inloggen" />
</form>
25-08-2011 16:51
Berichten: 409
avatar
Online Stuur privébericht
Hij werkt nog steeds niet ;(

Nieuwe reactie samengevoegd met originele reactie op 25.08.11 17:23:59:
Ik heb de beginpost even aangepast.
25-08-2011 16:58
Berichten: 552
avatar
Offline Stuur privébericht
Er mag niks voor session_start staan, zet die eens boven aan zonder al die spaties ?
25-08-2011 17:35
Berichten: 409
avatar
Online Stuur privébericht
Code | Selecteer Alles
minimaliseren
1
Warningsession_start() [function.session-start]: Cannot send session cookie headers already sent by (output started at /home/xqtzaoym/domains/*/public_html/index.php:3) in /home/xqtzaoym/domains/*/public_html/includes/functies.php on line 3


die error blijft

Nieuwe reactie samengevoegd met originele reactie op 25.08.11 17:47:39:
EDIT:

IK zie net bij mijn cookies, dat die van de freehost, die cookie staat erbij, maar die van de betaalde niet.

Misschien gaat er dus ergens iets goed fout?

Nieuwe reactie samengevoegd met originele reactie op 25.08.11 19:30:37:
FIXED, zie begin post
25-08-2011 17:38
Luc
devow.nl
Berichten: 1592
avatar
Offline Stuur privébericht
Het is dus (tijdelijk) opgelost. Als je nog problemen hebt open ik dit topic wel opnieuw. Voor nu
26-08-2011 08:46
Reageer op: "Inloggen doet raar"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden