login session doet het niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Antonov tonova

Antonov tonova

08/01/2012 03:31:48
Quote Anchor link
Hey,

ik ben bezig met een simpel login script alleen zit ik met 1 foutje en dat is hij gaat niet naar index.php

login-scripts.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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();
    if(isset($_POST['logintoadminpanel']))
    {

        include_once 'connection.php';
    
        $username = $_POST['username'];
        $password = $_POST['password'];
            
        if(empty($username) || empty($password))
        {

            $error =  'Please fill the required fields';
        }

        else
        {
            $username = strip_tags($username);
            $password = strip_tags($password);
            
            $username = mysql_real_escape_string($username);
            $password = mysql_real_escape_string($password);
            $password = md5($password);
            $sql = mysql_query("SELECT * FROM users WHERE name = '$username' && password = '$password' LIMIT 1") or die (mysql_error());
            $num_rows = mysql_num_rows($sql);
            if($num_rows == 1)
            {

                $rows = mysql_fetch_array($sql);
                extract($rows);
                
                $SESSION['username'] = $name;
                $SESSION['level'] = $access_level;
                
                if(isset($_SESSION['username']))
            {

                    $update = mysql_query("UPDATE users SET last_log_time = now()") or die(mysql_error());
                    header ("location:index.php");
            }
            }

            else
            {
                $error = 'Invalid Credentails';
            }
        }
        
        
    }

?>


login.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php include_once( 'scripts/login-scripts.php' );?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>login</title>
    <link rel="stylesheet" type="text/css" href="css/custom.css" />
    <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js?ver=1.3.2'></script>
</head>
<body>
    <div id="mainWrapper">
        <?php if(isset($error)) { echo '<div id="errors">'.$error.'</div>'; }?>
        <div id="loginform">
            <h2>Login Area</h2>
            
            <form method="post" action="login.php">
                <div class="form-elements">
                    <label for="Username">Username</label>
                    <input type="text" name="username" placeholder="Enter Username" id="username"/>
                </div>
                
                <div class="form-elements">
                    <label for="Password">Password</label>
                    <input type="password" name="password" placeholder="Enter Password" id="Password"/>
                </div>
                
                <div class="form-elements">
                    <label></label>
                    <input type="submit" name="logintoadminpanel" value="Login" id="logintoadminpanel" class="myButton"/>
                </div>
    
    
    </div><!--end mainWrapper-->
</body>
</html>
 
PHP hulp

PHP hulp

27/01/2020 03:11:44
 
Eddy B

Eddy B

08/01/2012 03:37:34
Quote Anchor link
Krijg je errors?
 
Antonov tonova

Antonov tonova

08/01/2012 03:41:21
Quote Anchor link
nee, wat hij doet is hij blijft op de login.php hangen hij gaat niet door naar index.php wat hij wel zou moeten doen.
 
Eddy B

Eddy B

08/01/2012 03:53:56
Quote Anchor link
Geef al je if statements een else, dan zie je waar het vastloopt.
 
Antonov tonova

Antonov tonova

08/01/2012 04:12:10
Quote Anchor link
ken je en voorbeeld geven?

Edit:

volgens mijn mis ik nog een
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
</div>
om
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<div id="loginform">
af te sluiten
Gewijzigd op 08/01/2012 04:16:38 door Antonov tonova
 
Andre Sep

Andre Sep

08/01/2012 05:05:29
Quote Anchor link
probeer eens:

header("URL:'index.php'");


En je mist inderdaad een afsluitende </div>.
Verder zag ik dat de id van je textfield username niet met hoofdletter is maar de label die erbij hoort wel (id="username" <--> for="Username").
Dit zal niet voor de fout zorgen, maar is wel netter om te verhelpen denk ik zo.
Gewijzigd op 08/01/2012 05:16:09 door Andre Sep
 
Obelix Idefix

Obelix Idefix

08/01/2012 09:13:10
Quote Anchor link
Ook hier weer de standaard opmerkingen (over login-scripts.php):
controleren of een formulier is verzonden: if( $_SERVER['REQUEST_METHOD'] == 'POST' )
Selecteren doe je niet met *, maar benoem het veld/de velden.
Waarom variabelen kopiëren (8/9) en 2x bewerken (17/21)?
De md5 kun je ook prima in de query uitvoeren.
Waar is je salt?
mysql_real_escape_string in je query gebruiken, niet er buiten.
Variabelen buiten quotes.
empty is geen goede manier om te controleren.
die is geen foutafhandeling.
if(isset($_SESSION['username'])) lijkt me zinloos --> je zit in een if waarbij je $_SESSION['username'] set. Die zou dus altijd waar moeten zijn...
Na header wordt exit geadviseerd.
 
- SanThe -

- SanThe -

08/01/2012 11:29:22
Quote Anchor link
In de login staat header ("location:index.php");
En in index.php staat include login.
Dat lijkt wel een eeuwige loop.


Edit:
Dit update je hele database:
$update = mysql_query("UPDATE users SET last_log_time = now()") or die(mysql_error());
Gewijzigd op 08/01/2012 11:34:11 door - SanThe -
 
Antonov tonova

Antonov tonova

08/01/2012 12:32:42
Quote Anchor link
Oke bedankt voor alle tips,

maar ik snap het nog steeds niet wat is nou het genen wat ik moet veranderen, om me session te laten werken?

hoe zou de code er volgens jullie er uit moeten zien?
Gewijzigd op 08/01/2012 12:32:56 door Antonov tonova
 
- SanThe -

- SanThe -

08/01/2012 12:55:22
Quote Anchor link
Haal die header() eens weg.
 
Antonov tonova

Antonov tonova

08/01/2012 13:06:50
Quote Anchor link
- SanThe - op 08/01/2012 12:55:22:
Haal die header() eens weg.

@- SanThe - maakt geen verschil.

Dit is de login page
http://www.clan-hosting.nl/cms/admin/login.php
en hier zou je op uit moeten komen:
http://www.clan-hosting.nl/cms/admin/index.php

je kan in loggen met
GB: phphulp
WW: phphulp
Gewijzigd op 08/01/2012 13:12:53 door Antonov tonova
 
Obelix Idefix

Obelix Idefix

08/01/2012 13:30:42
Quote Anchor link
Debuggen: plaats op regel 6 in login-scripts.php eens echo 'test';
Krijg je dat te zien als je het formulier verzend?
 
Antonov tonova

Antonov tonova

08/01/2012 13:34:25
Quote Anchor link
@Obelix en Idefix

je die zie ik verschijnen
 
Erwin H

Erwin H

08/01/2012 13:57:56
Quote Anchor link
En na de tip van Obelix ben je neem ik aan daar verder mee gegaan. Dus na regel 6, de volgende regel proberen. De variabele echoen zodat je zeker weet dat de juiste waarde erin zit. Na een functie de return waarde echoen zodat je weet dat die functie de juiste dingen doet, etc etc etc.

Met andere woorden, gewoon eens beginnen met debuggen. Wij kunnen dat namelijk niet voor je doen vanaf een afstandje.
 

08/01/2012 14:05:17
Quote Anchor link
Misschien ben je vergeten van op iedere pagina session_start() te plaatsen. Dat ben ik ooit ook nog eens vergeten.

En vanwaar komen deze dingen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    $SESSION
['username'] = $name;
    $SESSION['level'] = $access_level;
?>

Want ik zie nergens $name en of $acces_level staan.

PS: ik kom wel gewoon op index.php?
Gewijzigd op 08/01/2012 14:08:32 door
 
Antonov tonova

Antonov tonova

08/01/2012 14:17:43
Quote Anchor link
@Aaron

ik heb net op regel op regel 20 van login.php verandert naar index.php
en nou doet hij het wel.
maar of hij het daadwerkelijk doet of dat hij me in de maling neemt geen idee.

@Erwin H

ik ben nog een beginner op gebied van php, dus debuggen is voor mijn nog nieuw.
 

08/01/2012 14:22:05
Quote Anchor link
Probeer eens je $_SESSION te echoeen. Ook moet je die op elke beveiligde pagina checken hé. Anders kom ik gewoon op index.php zonder enige session!
 
Erwin H

Erwin H

08/01/2012 14:25:17
Quote Anchor link
Antonov tonova op 08/01/2012 14:17:43:
@Erwin H

ik ben nog een beginner op gebied van php, dus debuggen is voor mijn nog nieuw.

Dat kan natuurlijk, maar dan is het nu de tijd om het te leren. Dus mijn vraag blijft, wat voor debugging heb je nu gedaan na de tip van Obelix te hebben gelezen? Als je het op een regel kan doen, kan je het op alle, toch? Dus, laat ons maar eens zien waar iets anders gebeurt dan jij verwacht.
 
Antonov tonova

Antonov tonova

08/01/2012 14:46:50
Quote Anchor link
oké wat ik heb gedaan is dit ik heb op regel 6 dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo 'test';
toegevoegd

als ik dan inlog dan gebeurt er dus niks alleen laat hij in de linker bovenhoek test zien.

maar verander ik nou regel 20 van login.php naar index.php inplaats van login.php en ik log in gaat hij w el verder naar index.php

@Aaron
dit stukje haalt hij uit de database vandaan
"name" en "access_level".
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    $SESSION
['username'] = $name;
    $SESSION['level'] = $access_level;
?>
Gewijzigd op 08/01/2012 14:48:42 door Antonov tonova
 
Erwin H

Erwin H

08/01/2012 14:55:48
Quote Anchor link
Antonov tonova op 08/01/2012 14:46:50:
oké wat ik heb gedaan is dit ik heb op regel 6 dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo 'test';
toegevoegd

als ik dan inlog dan gebeurt er dus niks alleen laat hij in de linker bovenhoek test zien.

Ben ik dan zo onduidelijk.... wat heb je DAARNA gedaan. Heb je hetzelfde gedaan op regel 17 bijvoorbeeld om te controleren of je script daar wel correct komt. Daarna op regel 27. Daarna op 35 etc etc.
En op regel 7 eens proberen om je $_POST array naar het scherm te schrijven (met print_r($_POST) bijvoorbeeld) om te kijken of alle gegevens daar wel juist in staan. Dan op regel 24 echoen wat er uit je query komt etc etc.

Vertel eens eerlijk, heb je echt nog geen moment eraan gedacht om gewoon dit soort controles toe te passen? Heb je echt nog geen enkele test gedaan om te zien of alles wel loopt zoals je denkt dat het loopt? Of, heb je dat wel allemaal al gedaan en weet je dus waar je de fout moet zoeken.

Overigens heeft dit alles te maken met debuggen, maar ook met gezond verstand. Het feit dat er ergens iets niet gebeurt wat je verwacht betekent dat er iets fout gaat. Optie 1 is dan volgens sommige het op een forum te zetten, maar optie 1 is natuurlijk om met alle middelen die je hebt de fout opsporen. Dat is namelijk ook het enige wat wij van een afstandje kunnen doen. Alleen wij moeten het dan puur van de code hebben, terwijl jij dit soort checks kan uitvoeren.

Dus, probeer de tests even zoals hierboven aangegeven en vertel ons waar precies het mis gaat.
 
Antonov tonova

Antonov tonova

08/01/2012 15:26:16
Quote Anchor link
ik heb op regel 6, 17, 27, 35, 40 een echo neer gezet alleen laat hij de echo op regel 40 niet zien.

dus ik denk dat er iets fout gaat vanaf regel 36 t/m 40
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.