Ik kan inloggen door spaties in te vullen?!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hugo Bakker

Hugo Bakker

21/07/2014 18:57:48
Quote Anchor link
Hey,

ik was bezig met een klein scriptje dat ervoor zorgt dat je enkel op de site kan wanneer je een BETA code hebt maar op één of andere manier kan ik inloggen zonder code maar met spaties...

Heeft iemand hier een oplossing voor?

Dit is mijn code:

Quote:
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
<?php
    if(isset($_POST['submit'])) {
        if(empty($_POST['beta_access'])) {
            echo '<div class="beta-error">Please enter a BETA-key!</div>';
            echo '<script type="text/javascript">
                      $("document").ready(function() {
                           $(".beta-error").slideDown("slow");
                           setTimeout(function() {
                                $(".beta-error").toggle("explode", "slow");
                           },3000)
                      })
                  </script>'
;
        }
else {
            $beta   = $DB->real_escape_string(trim($_POST['beta_access']));
            $select = $DB->query('SELECT * FROM beta WHERE access_code = "'. $beta .'"');
            $fetch  = $select->fetch_assoc();
            
            if($fetch['access_code'] == $beta) {
                echo 'Success';
                
                session_start();
                $_SESSION['beta'] = $_POST['beta_access'];
                
                header('Location: index.php');
            }
else {
                
                echo '<div class="beta-error">BETA key is not valid!</div>';
                echo '<script type="text/javascript">
                          $("document").ready(function() {
                               $(".beta-error").slideDown("slow");
                               setTimeout(function() {
                                    $(".beta-error").toggle("explode", "slow");
                               },3000)
                          })
                      </script>'
;
            }
        }
    }

?>
 
PHP hulp

PHP hulp

20/04/2024 09:51:11
 
- Ariën  -
Beheerder

- Ariën -

21/07/2014 19:19:05
Quote Anchor link
Die session_start(); hoort bovenaan te staan, in ieder geval voor je echo's en output.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/07/2014 19:20:13
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(empty($_POST['beta_access'])) {
?>

Pas op met empty. Als de opgegeven variabele de waarde '0' heeft dan zegt empty() nog steeds dat ie leeg is.
Als alternatief zou je strlen() kunnen gebruiken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
session_start();
?>

Hoort helemaal bovenaan in je script te staan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
header('Location: index.php');
?>

zal niet werken als je daarvoor al output gegenereerd hebt (op regel 4,5 en 19).
Plaats achter een redirect ook altijd even exit; op te zorgen dat je script beëindigd wordt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
trim($_POST['beta_access'])
?>

Dit haalt de spaties weer weg en hou je dus een lege string over.
Heb je een record in je database met een lege access_code?

Je kunt ook een minimale lengte eisen voor de acces code. Bijvoorbeeld 4 karakters
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if(strlen($beta) >= 4)
{

    // $beta bestaat uit minimaal vier karakters :-)
}
?>


Bouw je scripts als volgt op:

eerst een gedeelte met PHP logische code en zonder echo's:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

$bericht
= '';

if(isset($_POST['submit']))
{

    // doe wat
    if(strlen($_POST['beta_access']) < 4)
    {

        $bericht = 'Wachtwoord ongeldig.';
    }
}

?>


dan een gedeelte met html en echo's:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Login</title>
    </head>

    <body>
        <?php echo $bericht; ?>
    </body>
</html>


Tot slot: ga NETJES inspringen zoals in bovenstaand voorbeeld
Gewijzigd op 21/07/2014 19:33:37 door Frank Nietbelangrijk
 
- Ariën  -
Beheerder

- Ariën -

21/07/2014 19:33:07
Quote Anchor link
Je kan natuurlijk ook spaties trimmen met trim() als je wilt kijken...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(trim($_POST['beta_access'])=='') {
    // leeg
} else {
    // wel een waarde
}
?>
Gewijzigd op 21/07/2014 19:33:20 door - Ariën -
 
Hugo Bakker

Hugo Bakker

21/07/2014 19:37:53
Quote Anchor link
Bedankt! Alles is opgelost! Jullie tips zijn geweldig!
 



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.