Ik kan inloggen door spaties in te vullen?!
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)
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
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>';
}
}
}
?>
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>';
}
}
}
?>
Die session_start(); hoort bovenaan te staan, in ieder geval voor je echo's en output.
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.
Hoort helemaal bovenaan in je script te staan.
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.
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
Bouw je scripts als volgt op:
eerst een gedeelte met PHP logische code en zonder echo's:
Code (php)
dan een gedeelte met html en echo's:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
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>
<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
Bedankt! Alles is opgelost! Jullie tips zijn geweldig!