Onverwachte (sluiten) accolade, terwijl ik er genoeg open en sluit

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Koen Hollander

Koen Hollander

30/10/2012 13:30:38
Quote Anchor link
Goedenmiddag,

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)
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
<?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!')
}
}

?>


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.
 
PHP hulp

PHP hulp

28/11/2024 10:42:22
 
Francoi gckx

Francoi gckx

30/10/2012 13:33:55
Quote Anchor link
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!'))

je vergeet een haakje volgens mij
 
- Mark -

- Mark -

30/10/2012 13:33:57
Quote Anchor link
De ; op regel 12 hoort daar niet.
 
Kris Peeters

Kris Peeters

30/10/2012 13:34:49
Quote Anchor link
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
 
Koen Hollander

Koen Hollander

30/10/2012 13:37:36
Quote Anchor link
Kris Peeters op 30/10/2012 13:34:49:
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
 
Ozzie PHP

Ozzie PHP

30/10/2012 13:39:30
Quote Anchor link
Gewoon alles goed nalopen. Op regel 43 ontbreekt aan het eind van je if een haakje.
En die $var = 'iets' OR 'iets anders', dat werkt zo niet.
 
- Mark -

- Mark -

30/10/2012 13:43:18
Quote Anchor link
- ; teveel op regel 12.
- ; 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.
 
Koen Hollander

Koen Hollander

30/10/2012 13:52:09
Quote Anchor link
Door jullie hulp is dit de code op dit moment:
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
<?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!');
}
}


?>
Gewijzigd op 30/10/2012 13:52:42 door Koen Hollander
 
- Mark -

- Mark -

30/10/2012 14:02:04
Quote Anchor link
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.
 
Koen Hollander

Koen Hollander

30/10/2012 14:30:09
Quote Anchor link
- 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.


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
 
- SanThe -

- SanThe -

30/10/2012 15:22:43
Quote Anchor link
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'])
 
Koen Hollander

Koen Hollander

30/10/2012 15:34:19
Quote Anchor link
Wat kan ik in plaats van ... OR ... gebruiken?
 
Q S

Q S

30/10/2012 15:44:12
Quote Anchor link
Je kunt dat volgens mij beter met een array doen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$pakketten
= array("pakket: 1", "pakket: 2", "pakket: 3");
if(in_array($_POST["pakket"], $pakketten)){
    //ok
}else{
    //niet ok
}
?>


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
 
- Mark -

- Mark -

30/10/2012 15:49:52
Quote Anchor link
@ QS je zult die check altijd moeten uitvoeren. Het is heel gemakkelijk om de waarde van een select menu aan te passen.
 
Q S

Q S

30/10/2012 15:58:33
Quote Anchor link
@ Mark, ik doelde eigenlijk meer op gebruiksvriendelijkheid, hierbij geen rekening houdende met veiligheid.
 
Koen Hollander

Koen Hollander

30/10/2012 18:56:35
Quote Anchor link
Ik zal wel even kijken of ik een select menu kan fabriceren
 
- Mark -

- Mark -

30/10/2012 19:03:54
Quote Anchor link
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.
 
Eddy E

Eddy E

30/10/2012 21:12:09
Quote Anchor link
En wat betreft het inspringen: dat kan ook veel netter.
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)
 
Koen Hollander

Koen Hollander

31/10/2012 22:50:56
Quote Anchor link
bedankt (2 voorgaande). ik zal even wat experimenterén met dat menu en die anti spam werkt inderdaad niet dus weg er mee

Toevoeging op 31/10/2012 22:52:50:

bedankt(2 voorgaande) ik zal er naar kijken en hij hier en daar wat netter maken.
 
- Raoul -

- Raoul -

31/10/2012 22:58:33
Quote Anchor link
Je gebruikt geen correcte foutafhandeling. Om je op weg te helpen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}

?>
Gewijzigd op 31/10/2012 23:00:11 door - Raoul -
 
Koen Hollander

Koen Hollander

31/10/2012 23:13:17
Quote Anchor link
Ik weet dat "or die" nie de beste is. heel erg bedankt voor het zetje.(code van boven)
 



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.