Vervanger van Base64

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Johan de wit

johan de wit

07/07/2015 02:08:23
Quote Anchor link
Dan wordt het zo iets als dit?

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php

session_start();
if(user_is_ingelogd()) {
  
  if($id = filter_input(INPUT_GET, 'id') && id_is_van_user($id, $_SESSION['user'])) {
     if($_SERVER['REQUEST_METHOD'] == 'POST') {
    header ("Location: index.php");
    exit; // NA HEADER EEN EXIT EN JE SCRIPT STOPT DAN OOK DAADWERKELIJK
         // doe update query's en zo.

// INITIALISATIE ID MET DEFAULTWAARDE 0

$id = 0;
if(isset($_GET['id'])) {
    $id = intval(base64_decode($_GET['id']));
}


// VALIDATIE VAN $id
if($id < 1) {
    echo 'Ongeldige GET parameter id';
    exit;
}


try {
    $dbc = new PDO('mysql:host=localhost; dbname=verborgen', 'verborgen', 'verborgen');
}
catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}


if(isset($_POST['submit_btn'])) { // HIER ZOU JE EERST NOG JE FORMULIER MOETEN VALIDEREN
    $query = "UPDATE tabelnaam SET iets=? WHERE id=?";
    $stmt = $dbc->prepare($query);
    $stmt->bindParam(6, $_POST['mid']);
    if($stmt->execute()) {
        echo "Geupdated";
    }
else {
        echo "Probeer nogmaals";
    }

    
    // EEN GOEDE GEWOONTE IS OM NA HET VERWERKEN VAN EEN 'POST' TE REDIRECTEN
    header ("Location: whatever.php"); // KIES ZELF MAAR NAAR WELKE PAGINA JE WILT
    exit;
    
}

try {
    $query = "SELECT * FROM tabelnaam WHERE id=?";
    $stmt = $dbc->prepare($query);
    $stmt->bindParam(1, $id);
    $stmt->execute();
    $row=$stmt->fetch(PDO::FETCH_ASSOC);
    $id = $row['id'];
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}



         if($ok) {
            header('Location: overzicht.php' );
            exit();
         }
     }

     else {
         // GET, dus tonen edit scherm
//HIER PLAATS IK HTML FORM!!!

     }

  

  }

  else {
      // foutmelding dat id niet gegeven is, of dat het niet een id is van deze user.
      // eventueel in het midden laten of het wel een bestaand id zou zijn.

echo "Het is niet toegestaan om andermanse pagina aan te passen!";
  }

}

?>
 
PHP hulp

PHP hulp

12/12/2024 00:35:25
 
Ivo P

Ivo P

07/07/2015 08:58:57
Quote Anchor link
dus als je op regel 7 ziet dat het een post-request is, dan stuur je de bezoeker weg naar index.php en stop je.

Verderop in je script ben je echter nog wel bezig met $_POST.....

niet heel logisch.
 
Johan de wit

johan de wit

07/07/2015 13:12:52
Quote Anchor link
Ik heb drie headers.

1 als je niet ingelogd bent dan wordt je doorverwezen naar index.php
2 na update wordt je terug naar overzicht verstuurt.
3 als id niet door ingelogde gebruiker is aangemaakt dan kan hij bewerk pagina niet zien.

Regel 14 en 15 zal ik dan weg halen.
Regel 31 tot en met 38 kan eigenlijk weg omdat onderin al een 0 waarde niet pakt.
Gewijzigd op 07/07/2015 13:16:51 door johan de wit
 
Ivo P

Ivo P

07/07/2015 13:15:27
Quote Anchor link
zorg eens dat je script netjes inspringt. (beetje editor heeft daar een toetscombinatie voor of je doet het mbv je muis)

want waar zit de } die hoort bij de { op regel 7? (ik heb geen zin om dat uit te tellen)
 
Johan de wit

johan de wit

07/07/2015 13:18:24
Quote Anchor link
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
61
62
<?php
    session_start();
    if(user_is_ingelogd()) {// BEGIN 1
        
        if($id = filter_input(INPUT_GET, 'id') && id_is_van_user($id, $_SESSION['user'])) {// BEGIN 2
            if($_SERVER['REQUEST_METHOD'] == 'POST') {// BEGIN 3
                
                // VALIDATIE VAN $id

                if($id < 1) {
                    echo 'Ongeldige GET parameter id';
                    exit;
                }

                
                try {
                    $dbc = new PDO('mysql:host=localhost; dbname=verborgen', 'verborgen', 'verborgen');
                    }
catch (PDOException $e) {
                    echo "Error: " . $e->getMessage();
                }

                
                if(isset($_POST['submit_btn'])) { // HIER ZOU JE EERST NOG JE FORMULIER MOETEN VALIDEREN
                    $query = "UPDATE tabelnaam SET iets=? WHERE id=?";
                    $stmt = $dbc->prepare($query);
                    $stmt->bindParam(6, $_POST['mid']);
                    if($stmt->execute()) {
                        echo "Geupdated";
                        }
else {
                        echo "Probeer nogmaals";
                    }

                    
                    // EEN GOEDE GEWOONTE IS OM NA HET VERWERKEN VAN EEN 'POST' TE REDIRECTEN
                    header ("Location: whatever.php"); // KIES ZELF MAAR NAAR WELKE PAGINA JE WILT
                    exit;
                }

                
                try {
                    $query = "SELECT * FROM tabelnaam WHERE id=?";
                    $stmt = $dbc->prepare($query);
                    $stmt->bindParam(1, $id);
                    $stmt->execute();
                    $row=$stmt->fetch(PDO::FETCH_ASSOC);
                    $id = $row['id'];
                    }
catch(PDOException $e) {
                    echo "Error: " . $e->getMessage();
                }

                
                if($ok) {
                    header('Location: overzicht.php' );
                    exit();
                }
            }
// EINDE 3
            else {
                // GET, dus tonen edit scherm
                //HIER PLAATS IK HTML FORM!!!

            }
        }
// EINDE 2
        else {
            // foutmelding dat id niet gegeven is, of dat het niet een id is van deze user.
            // eventueel in het midden laten of het wel een bestaand id zou zijn.

            echo "Het is niet toegestaan om andermanse pagina aan te passen!";
        }
    }
// EINDE 1
?>
Gewijzigd op 07/07/2015 23:33:17 door johan de wit
 
Johan de wit

johan de wit

10/07/2015 05:10:31
Quote Anchor link
Ontopic: UP!

Offtopic: met tip van Aar heb ik met 1 druk op de knop code overzichtelijker gekregen. Hiervoor wil ik je nogmaals bedanken!
 
Thomas van den Heuvel

Thomas van den Heuvel

10/07/2015 12:05:29
Quote Anchor link
Een aantal dingen:

Als user_is_ingelogd() true oplevert impliceert dit toch dat $_SESSION['user'] (niet echt een goede naam voor een id, maar goed) een waarde heeft?

Waarom zou je een simpele vergelijking dan in een aparte functie (id_is_van_user) stoppen?

Dit soort functies maken je code alleen maar onnodig wollig.

Dan de volgende observatie: als je ingelogd bent dan wéét je het user id al, deze zit in je sessie. Waarom zou je deze dan nog eens expliciet doorgeven via de URL? Dat is helemaal niet nodig.

En tot slot, je combineert hier de volgende (verschillende) acties in 1 script:
1. authorisatie controle
2. verbinding maken met je database
3. het verwerken van het formulier
4. het afdrukken van het formulier

Ook kan ik hier niet uit opmaken of dat elke keer dat je een soortement van pagina weergeeft, dit ook een volledig, kloppend HTML-document is.

Stap 1 en 2 zou je eigenlijk al in een eerder stadium moeten doen, bijvoorbeeld bij de bepaling welke pagina er geladen moet worden (en welke code hierbij uitgevoerd moet worden) en of je hier ook toegang tot hebt.

En dan zou je het afdrukken (stap 3) en verwerken (stap 4) van het formulier kunnen splitsen in twee verschillende, afzonderlijke acties.

Met deze "verdeel en heers" strategie creëer je veel meer overzicht, en kun je je op elk moment focussen op precies datgene waar je op dat moment mee bezig bent, en hoef je niet elke keer de hele pagina-generatie (met alle controles die daarbij horen) opnieuw uit te schrijven, dat is gewoon een hoop duplicatie van code, die alleen maar voor problemen zorgt als daar op een gegeven moment iets in verandert. Je moet dan namelijk al je code aan gaan passen...
 

Pagina: « vorige 1 2



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.