Onverwachte (sluiten) accolade, terwijl ik er genoeg open en sluit
Ik heb een klein scriptje gemaakt(heel wat voor mij). Ik heb alleen een foutode die ik niet echt kan plaatsen.
Dit is mijn script:
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
40
41
42
43
44
45
46
47
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
<?php
$sqlcorrect =
"INSERT INTO hosting_besteld
(
user,
pakket
)
VALUES
(
'".mysql_real_escape_string($_POST['user'])."',
'".mysql_real_escape_string($_POST['pakket'])."'
);
";
error_reporting(0);
$nospam = '9090';
session_start();
include ('global.php');
define('USERNAME_REQUIRED', TRUE);
define('ACCOUNT_REQUIRED', TRUE);
define("THIS_SCRIPT", 'hosting');
?>
<html>
<head>
<title>Holland Host</title>
</head>
<form method='POST'>
<input type='hidden' value='<?php echo $_SESSION['username']; ?>' name='user'>
<em>Pakket:</em><br>
<input type='text' value='Pakket: ' name='pakket'><br>
<em>Schrijf deze cijfers over: <b>9090</b></em><br>
<input type='text' name='nospam'><br>
<input type='submit' value='Bestel'><input type='reset' value='Herstel alle velden'>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' AND isset($_POST['submit'])) {
if ($_POST['pakket'] != "Pakket: 1" OR "Pakket: 2" OR "Pakket: 3"); {
echo 'Je hebt helaas een verkeerd pakket nummer ingevuld, vul de velden zo in:Pakket: 1" OF "Pakket: 2" OF "Pakket: 3';
}
if ($_POST['nospam'] != $nospam) {
echo "<font color=\"red\">Vul wel de juiste anti-spam code in.</font>";
}
if ($_POST['nospam'] == $nospam AND $_POST['pakket'] == "Pakket: 1" OR "Pakket: 2" OR "Pakket: 3" AND $_POST['user'] ==$_SESSION['username'] OR $_COOKIE['username']{
mysql_query($sqlcorrect) or die('Er is een fout opgetreden!')
}
}
?>
$sqlcorrect =
"INSERT INTO hosting_besteld
(
user,
pakket
)
VALUES
(
'".mysql_real_escape_string($_POST['user'])."',
'".mysql_real_escape_string($_POST['pakket'])."'
);
";
error_reporting(0);
$nospam = '9090';
session_start();
include ('global.php');
define('USERNAME_REQUIRED', TRUE);
define('ACCOUNT_REQUIRED', TRUE);
define("THIS_SCRIPT", 'hosting');
?>
<html>
<head>
<title>Holland Host</title>
</head>
<form method='POST'>
<input type='hidden' value='<?php echo $_SESSION['username']; ?>' name='user'>
<em>Pakket:</em><br>
<input type='text' value='Pakket: ' name='pakket'><br>
<em>Schrijf deze cijfers over: <b>9090</b></em><br>
<input type='text' name='nospam'><br>
<input type='submit' value='Bestel'><input type='reset' value='Herstel alle velden'>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' AND isset($_POST['submit'])) {
if ($_POST['pakket'] != "Pakket: 1" OR "Pakket: 2" OR "Pakket: 3"); {
echo 'Je hebt helaas een verkeerd pakket nummer ingevuld, vul de velden zo in:Pakket: 1" OF "Pakket: 2" OF "Pakket: 3';
}
if ($_POST['nospam'] != $nospam) {
echo "<font color=\"red\">Vul wel de juiste anti-spam code in.</font>";
}
if ($_POST['nospam'] == $nospam AND $_POST['pakket'] == "Pakket: 1" OR "Pakket: 2" OR "Pakket: 3" AND $_POST['user'] ==$_SESSION['username'] OR $_COOKIE['username']{
mysql_query($sqlcorrect) or die('Er is een fout opgetreden!')
}
}
?>
Dit is de foutcode:
Quote:
Parse error: syntax error, unexpected '}' in D:\xampp\htdocs\hosting.php on line 46
Het rare is, in lijn 46 sluit ik een if af. Ik heb de geopende en gesloten accolades al getelt. Die zijn gewoon gelijk.
mysql_query($sqlcorrect) or die('Er is een fout opgetreden!'))
je vergeet een haakje volgens mij
De ; op regel 12 hoort daar niet.
Koen Hollander op 30/10/2012 13:30:38:
... in lijn 46 sluit ik een if af. Ik heb de geopende en gesloten accolades al getelt. Die zijn gewoon gelijk.
Wel ja ... Apache zegt jou niet dat de accolade te veel of te weinig is, maar dat ie iets anders verwacht dan een accolade.
Met name een puntkomma op lijn 44
Gewijzigd op 30/10/2012 13:37:06 door Kris Peeters
Kris Peeters op 30/10/2012 13:34:49:
Wel ja ... Apache zegt jou niet dat de accolade te veel of te weinig is, maar dat ie iets anders verwacht dan een accolade.
Met name een puntkomma op lijn 44
Koen Hollander op 30/10/2012 13:30:38:
... in lijn 46 sluit ik een if af. Ik heb de geopende en gesloten accolades al getelt. Die zijn gewoon gelijk.
Wel ja ... Apache zegt jou niet dat de accolade te veel of te weinig is, maar dat ie iets anders verwacht dan een accolade.
Met name een puntkomma op lijn 44
Maar als ik een puntkomma op 44 zet resulteert hij in deze fout
Quote:
Parse error: syntax error, unexpected ';' in D:\xampp\htdocs\hosting.php on line 44
Gewijzigd op 30/10/2012 13:38:16 door Koen Hollander
En die $var = 'iets' OR 'iets anders', dat werkt zo niet.
- ; teveel op regel 36.
- ) vergeten op regel 43
- ; vergeten op regel 44
1. Probeer eens wat beter in te springen.
2. $nospam = '9090'; moet $nospam = 9090; zijn. Er horen geen quotes om getallen te staan.
3. Je hoeft geen () te gebruiken bij include, het is namelijk geen functie.
4. or die is geen mooie fout afhandeling.
5. Als je enkele quotes gebruikt dan hoef je niet te escapen. echo '<font color="red">Vul wel de juiste anti-spam code in.</font>';
6. Probeer je php en html wat meer te scheiden. Je hebt nu veels te veel door elkaar staan.
7. Ik zie geen enkel commmentaar in je script.
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
40
41
42
43
44
45
46
47
48
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
<?php
$sqlcorrect =
"INSERT INTO hosting_besteld
(
user,
pakket
)
VALUES
(
'".mysql_real_escape_string($_POST['user'])."',
'".mysql_real_escape_string($_POST['pakket'])."'
)
";
error_reporting(0);
$nospam = '9090';
session_start();
include ('global.php');
define('USERNAME_REQUIRED', TRUE);
define('ACCOUNT_REQUIRED', TRUE);
define("THIS_SCRIPT", 'hosting');
?>
<html>
<head>
<title>Holland Host</title>
</head>
<form method='POST'>
<input type='hidden' value='<?php echo $_SESSION['username']; ?>' name='user'>
<em>Pakket:</em><br>
<input type='text' value='Pakket: ' name='pakket'><br>
<em>Schrijf deze cijfers over: <b>9090</b></em><br>
<input type='text' name='nospam'><br>
<input type='submit' value='Bestel'><input type='reset' value='Herstel alle velden'>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' AND isset($_POST['submit'])) {
if ($_POST['pakket'] != "Pakket: 1" OR "Pakket: 2" OR "Pakket: 3") {
echo 'Je hebt helaas een verkeerd pakket nummer ingevuld, vul de velden zo in:Pakket: 1" OF "Pakket: 2" OF "Pakket: 3';
}
if ($_POST['nospam'] != $nospam) {
echo "<font color=\"red\">Vul wel de juiste anti-spam code in.</font>";
}
if ($_POST['nospam'] == $nospam AND $_POST['pakket'] == "Pakket: 1" OR "Pakket: 2" OR "Pakket: 3" AND $_POST['user'] == $_SESSION['username'] OR $_COOKIE['username']){
mysql_query($sqlcorrect) or die('Er is een fout opgetreden!');
}
}
?>
$sqlcorrect =
"INSERT INTO hosting_besteld
(
user,
pakket
)
VALUES
(
'".mysql_real_escape_string($_POST['user'])."',
'".mysql_real_escape_string($_POST['pakket'])."'
)
";
error_reporting(0);
$nospam = '9090';
session_start();
include ('global.php');
define('USERNAME_REQUIRED', TRUE);
define('ACCOUNT_REQUIRED', TRUE);
define("THIS_SCRIPT", 'hosting');
?>
<html>
<head>
<title>Holland Host</title>
</head>
<form method='POST'>
<input type='hidden' value='<?php echo $_SESSION['username']; ?>' name='user'>
<em>Pakket:</em><br>
<input type='text' value='Pakket: ' name='pakket'><br>
<em>Schrijf deze cijfers over: <b>9090</b></em><br>
<input type='text' name='nospam'><br>
<input type='submit' value='Bestel'><input type='reset' value='Herstel alle velden'>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' AND isset($_POST['submit'])) {
if ($_POST['pakket'] != "Pakket: 1" OR "Pakket: 2" OR "Pakket: 3") {
echo 'Je hebt helaas een verkeerd pakket nummer ingevuld, vul de velden zo in:Pakket: 1" OF "Pakket: 2" OF "Pakket: 3';
}
if ($_POST['nospam'] != $nospam) {
echo "<font color=\"red\">Vul wel de juiste anti-spam code in.</font>";
}
if ($_POST['nospam'] == $nospam AND $_POST['pakket'] == "Pakket: 1" OR "Pakket: 2" OR "Pakket: 3" AND $_POST['user'] == $_SESSION['username'] OR $_COOKIE['username']){
mysql_query($sqlcorrect) or die('Er is een fout opgetreden!');
}
}
?>
Gewijzigd op 30/10/2012 13:52:42 door Koen Hollander
Verdere aanvulling,
- Waar is de hidden field goed voor? ziet er niet echt veilig uit en hij heeft geen nut voor zover ik kan zien.
- Waarom gebruik je geen select menu inplaats van een input field? veel gebruiksvriendelijker.
- Je captcha is nutteloos, botjes komen daar met gemak door heen. Ze hoeven namelijk alleen maar de bron code door te lezen.
- Mark - op 30/10/2012 14:02:04:
En wat voor foutmelding krijg je nu?
Verdere aanvulling,
- Waar is de hidden field goed voor? ziet er niet echt veilig uit en hij heeft geen nut voor zover ik kan zien.
- Waarom gebruik je geen select menu inplaats van een input field? veel gebruiksvriendelijker.
- Je captcha is nutteloos, botjes komen daar met gemak door heen. Ze hoeven namelijk alleen maar de bron code door te lezen.
Verdere aanvulling,
- Waar is de hidden field goed voor? ziet er niet echt veilig uit en hij heeft geen nut voor zover ik kan zien.
- Waarom gebruik je geen select menu inplaats van een input field? veel gebruiksvriendelijker.
- Je captcha is nutteloos, botjes komen daar met gemak door heen. Ze hoeven namelijk alleen maar de bron code door te lezen.
1: Dat hidden field is inderdaad niet veilig. Daar ben ik me bewust van, maar dit is een klein beginnetje. Ik ga later wat meer aan de beveiliging schroeven
2: Ik gebruik geen select menu omdat ik daar geen ervaring mee heb. Ik moet dat nog beter leren.
3: Ik weet dat die code nutteloos is, ik probeerde dat allen ven om te kijken of het werkt. Ik weet dat ze er simpel door kunnen(die botjes)
Ik heb nu geen foutmelding, maar nu doet het script niks. Hij controleert niks en verstuurt ze ook niet.
Gewijzigd op 30/10/2012 14:31:04 door Koen Hollander
Ozzie PHP op 30/10/2012 13:39:30:
En die $var = 'iets' OR 'iets anders', dat werkt zo niet.
if ($_POST['pakket'] != "Pakket: 1" OR "Pakket: 2" OR "Pakket: 3")
if ($_POST['nospam'] == $nospam AND $_POST['pakket'] == "Pakket: 1" OR "Pakket: 2" OR "Pakket: 3" AND $_POST['user'] == $_SESSION['username'] OR $_COOKIE['username'])
Wat kan ik in plaats van ... OR ... gebruiken?
Code (php)
Waarom maak je van de pakketkeuze trouwens geen selectbox, dan hoef je die hele check niet uit te voeren
Gewijzigd op 30/10/2012 15:44:52 door Q S
@ QS je zult die check altijd moeten uitvoeren. Het is heel gemakkelijk om de waarde van een select menu aan te passen.
@ Mark, ik doelde eigenlijk meer op gebruiksvriendelijkheid, hierbij geen rekening houdende met veiligheid.
Ik zal wel even kijken of ik een select menu kan fabriceren
Als je het goed aanpakt dan kun je het menu vullen met de gegevens uit de array $pakketten. Je hoeft dan niet op twee plaatsen de code aan te passen maar alleen de array inkorten of aanvullen als je het menu wilt veranderen.
Ook HTML-code kan je gewoon netjes laten inspringen.
Dan is die select ook geen enkel probleem.
En wat betreft die anti-bot: haal dat er gewoon uit. Want het houdt niets tegen. Zeker niet als het niet dynamisch is (en als het altijd 9090 is, is het dat niet)
Toevoeging op 31/10/2012 22:52:50:
bedankt(2 voorgaande) ik zal er naar kijken en hij hier en daar wat netter maken.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$query = mysql_query("...");
if ($query == false) {
echo 'Er ging iets mis.';
} else {
// Doe je ding
}
?>
$query = mysql_query("...");
if ($query == false) {
echo 'Er ging iets mis.';
} else {
// Doe je ding
}
?>
Gewijzigd op 31/10/2012 23:00:11 door - Raoul -
Ik weet dat "or die" nie de beste is. heel erg bedankt voor het zetje.(code van boven)