mysqli toch niet simpel vind ik

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Chris Bosmans

chris Bosmans

15/11/2015 16:23:08
Quote Anchor link
ik ben mijn pagina's aant omvormen naar mysqli
maar stoot toch op een paar problemen

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
<?php
include("admin/entrance/login.inc.php"); // hier zit de var $link

    
    function to_login () {
        
      header ('Location: http://***/index.php?fout=1' );  // indien je fout user-pasw combi geeft hij error boodschap
    
    }

    function
check_login ($username, $password) {
        $sql = "
            SELECT id
            FROM admin
            WHERE username = '"
. mysqli_real_escape_string ($link,$username) . "'
            AND password = SHA1('"
. mysqli_real_escape_string ($link,$password) . "')
            "
;
        if ($res = mysqli_query($link,$sql)) {
            if (mysqli_num_rows ($link,$res) == 1) {
                // de query is gelukt en we hebben 1 resultaat
                $row = mysqli_fetch_assoc($res);
                $_SESSION['id'] = $row['id'];
                $_SESSION['logged_in'] = true;
            }

            else {
                to_login ();
            }
        }

        else {
            to_login ();
        }
    }

    // eerst maar eens kijken of $_SESSION['logged_in'] bestaat
    if (!isset ($_SESSION['logged_in'])) {
        // nog niet eerder ingelogd, maar misschien heeft iemand net het loginformulier ingevuld?
        if (isset ($_POST['username'], $_POST['password'])) {
            check_login ($_POST['username'], $_POST['password']);
            
        }

        else {
            to_login ();
        }
    }

?>


nu stuurt hij mij altijd naar de header...
Gewijzigd op 15/11/2015 16:24:45 door Chris Bosmans
 
PHP hulp

PHP hulp

19/01/2021 00:17:46
 
- Ariën -
Beheerder

- Ariën -

15/11/2015 16:27:04
Quote Anchor link
Vanuit welke voorwaarde gebeurt dat? Zet er eens tijdelijk een verschillende echo in.
Dan weet je welke route het script doorloopt.
Gewijzigd op 15/11/2015 16:32:47 door - Ariën -
 
Chris Bosmans

chris Bosmans

15/11/2015 16:37:42
Quote Anchor link
hoe bedoel je ?

deze pagina wordt aangestuurd van een form waar user en paswoord ingevuld wordt

de to_login wordt aangesproken als er geen goede combinatie wordt gegeven in het formulier.

ik heb niks aan de code veranderd buiten de msqli functies.
 
- Ariën -
Beheerder

- Ariën -

15/11/2015 16:46:14
Quote Anchor link
Ik zie drie plekken in je code waar je to_login() aanroept. Ook als je query mislukt doe je dat? Waarom toon je dan niet een foutmelding uit mysqli_error($res)?

Verder zou ik ook een melding tonen als de voorwaarde van mysqli_num_rows geen 1 is. je kan bijvoorbeeld een foutmelding meegeven in die functie, zodat je foutmeldingen kan tonen op je formulier, met de reden waarom het inloggen niet gelukt is.
Gewijzigd op 15/11/2015 16:53:57 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

15/11/2015 17:08:43
Quote Anchor link
$link is niet gedefinieerd binnen je functies...

Zet (nogmaals) het melden + weergeven van fouten eens aan.

Ook zou je een "wrapper" voor je database-functies kunnen schrijven en/of (zoals tevens eerder voorgesteld) de object georienteerde schrijfwijze kunnen toepassen zodat je niet elke keer $link hoeft toe te voegen.

Bezint eer gij begint.

Enne: een header('Location: ...') zonder navolgend exit; statement... Dat is vragen om ongelukken/veiligheidsgaten.

header('Location: ...') transporteert je niet direct automagisch naar de nieuwe locatie, maar dat gebeurt pas aan het einde van het script. Alle code volgend op header('Location: ...') zal dus gewoon uitgevoerd worden en na afloop zul je doorgestuurd worden naar de nieuwe locatie.
 
Ivo P

Ivo P

15/11/2015 19:50:07
Quote Anchor link
mysqli_num_rows() heeft geen $link nodig, maar alleen een resultste

http://php.net/manual/en/mysqli-result.num-rows.php
 
Thomas van den Heuvel

Thomas van den Heuvel

15/11/2015 21:25:19
Quote Anchor link
En dan is to_login() een nogal "ad hoc" functie, maak er zoiets van zodat deze herbruikbaar is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function redirect($link) {
    header('HTTP/1.1 303 See Other');
    header('Location: '.$link);
    exit; // zodat je het NOOIT meer vergeet
}
?>
Gewijzigd op 15/11/2015 21:26:05 door Thomas van den Heuvel
 



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.