Foutje in script?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Erwin Nieuwenhuis

Erwin Nieuwenhuis

21/03/2008 14:03:00
Quote Anchor link
hallo,

waarschijnlijk zie ik het gewoon over het hoofd, maar het volgende script doet niets.

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
48
49
50
51
52
53
54
55
56
57
<?php
    ini_set('display_errors', 'on');
    error_reporting(E_ALL);
?>

<html>
<head>
<title>Login</title>
</head>
<body>
<?php
    if( isset($_POST['user'], $_POST['pass']))
    {

        $link = mysqli_connect('localhost', 'user', 'pass', 'slepperfm');
        if(!$link)
        {

            trigger_error('Fout bij verbinden met database: '.mysqli_connect_error());
        }


            $sql = "
                SELECT
                    username,
                    pw
                FROM
                    users
                WHERE
                    username = $_POST['user'] && pw = $_POST['pass']
                "
;
            if(!$res = mysqli_query($link, $sql))
            {

                trigger_error('Fout in query: '.mysqli_error());
            }

                if( mysqli_num_rows($res) == 1)
                {

                    echo 'Je bent ingelogd'; //dit moet ik nog uitwerken
                }
            else
            {
                echo 'Je bent niet ingelogd. <br> <a href='.$_SERVER['PHP_SELF'].'alt=opnieuw>Ga terug</a>';
            }
    }

    else
    {
        echo '<form method=POST action='.$_SERVER['PHP_SELF'].'>';
        
            echo '<label for=username>Gebruikersnaam:</label>';
            echo '<input id=user name=user type=text>';
        
            echo '<label for=pass>Wachtwoord:</label>';
            echo '<input id=pass name=pass type=password>';
        
            echo '<input type=submit value=Inloggen>';
        
        echo '</form>';
    }

?>

</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door Erwin Nieuwenhuis
 
PHP hulp

PHP hulp

19/03/2024 11:22:29
 
Gerben Jacobs

Gerben Jacobs

21/03/2008 14:06:00
Quote Anchor link
Wat is 'doet niets'?
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

21/03/2008 14:08:00
Quote Anchor link
een leeg veld..

het moet ergens in het if statement zitten, want dat heb ik het laatst aangepast.

waarschijnlijk heb ik dus ergens iets niet goed afgesloten ofzo..

voor een voorbeeld:

http://www.slepperfm.nl/login/login.php
 
- SanThe -

- SanThe -

21/03/2008 14:11:00
Quote Anchor link
Zet dubbele quotes in je html.
Haal $vars buiten de quotes.
Gebruik in de query enkele quotes om de stringwaardes.
 
Gerben Jacobs

Gerben Jacobs

21/03/2008 14:11:00
Quote Anchor link
Mm, haal die bovenste PHP dingetjes eens weg. Iniset en reporting
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

21/03/2008 14:12:00
Quote Anchor link
welke $vars bedoel je?
 
Frank -

Frank -

21/03/2008 14:15:00
Quote Anchor link
Dit is zo lek als een mandje... De query is fout en onveilig, SQL-injection ligt op de loer. Hoe doe je het wel?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql
= "
                SELECT
                    username
                FROM
                    users
                WHERE
                    username = '"
.mysqli_real_escape_string($link, $_POST['user'])."'
                AND
                    pw = '"
.mysqli_real_escape_string($link, $_POST['pass'])."'
                "
;
?>

Edit: Een password haal je uiteraard niet op, die heb je nooit nodig buiten de database.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
- SanThe -

- SanThe -

21/03/2008 14:16:00
Quote Anchor link
Gerben Jacobs schreef op 21.03.2008 14:11:
Mm, haal die bovenste PHP dingetjes eens weg. Iniset en reporting

En de reden?
Dan krijg je dus geen foutmeldingen meer te zien.
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

21/03/2008 14:28:00
Quote Anchor link
nu heb ik dus het volgende:

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
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
    ini_set('display_errors', 'on');
    error_reporting(E_ALL);
?>

<html>
<head>
<title>Login</title>
</head>
<body>
<?php
    if( isset($_POST['user'], $_POST['pass']))
    {

        $link = mysqli_connect('localhost', 'user', 'pass', 'slepperfm');
        if(!$link)
        {

            trigger_error('Fout bij verbinden met database: '.mysqli_connect_error());
        }

            
            $sql = "
                SELECT
                    username,
                    pw
                FROM
                    users
                WHERE
                    username = '"
.mysqli_real_escape_string($link, $_POST['user'])."'
                AND
                    pw = '"
.mysqli_real_escape_string($link, $_POST['pass'])."'
                "
;
                                
            if(!$res = mysqli_query($link, $sql))
            {

                trigger_error('Fout in query: '.mysqli_error());
            }

                if( mysqli_num_rows($res) == 1)
                {

                    echo 'Je bent ingelogd';
                }

            else
            {
                echo 'Je bent niet ingelogd. <br> <a href="'$_SERVER['PHP_SELF']'" alt="opnieuw">Ga terug</a>';
            }
    }

    else
    {
        echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
        
            echo '<label for="username">Gebruikersnaam:</label>';
            echo '<input id="user" name="user" type="text">';
        
            echo '<label for="pass">Wachtwoord:</label>';
            echo '<input id="pass" name="pass" type="password">';
        
            echo '<input type="submit" value="Inloggen">';
        
        echo '</form>';
    }

?>

</body>
</html>


maar ik zie nog steeds niks, geen foutmelding en geen formulier..
 
- SanThe -

- SanThe -

21/03/2008 14:37:00
Quote Anchor link
Regel 41 punten vergeten.
echo 'Je bent niet ingelogd. <br> <a href="' . $_SERVER['PHP_SELF'] . '" alt="opnieuw">Ga terug</a>';
 
Gerben Jacobs

Gerben Jacobs

21/03/2008 15:59:00
Quote Anchor link
SanThe schreef op 21.03.2008 14:16:
Gerben Jacobs schreef op 21.03.2008 14:11:
Mm, haal die bovenste PHP dingetjes eens weg. Iniset en reporting

En de reden?
Dan krijg je dus geen foutmeldingen meer te zien.


Nou, er werd geen HTML getoont, terwijl dat wel had moeten gebeuren. Compleet blanco pagina.

Dus ik dacht misschien dat er iets was met iniset dat niet uitgevoerd mocht worden..
 
- SanThe -

- SanThe -

21/03/2008 16:11:00
Quote Anchor link
SanThe schreef op 21.03.2008 14:37:
Regel 41 punten vergeten.
echo 'Je bent niet ingelogd. <br> <a href="' . $_SERVER['PHP_SELF'] . '" alt="opnieuw">Ga terug</a>';

Dit soort fouten krijg je alleen in de Apache logs te zien. Niet op het scherm.
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

21/03/2008 16:32:00
Quote Anchor link
bedankt, nu doet hij het. :)
 



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.