Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP4 site naar PHP5] De problemen

Pagina: 1
Acties:
  • 135 views sinds 30-01-2008

  • Sjoerd
  • Registratie: December 2003
  • Niet online
Heb ongeveer een anderhalf jaar geleden een 2tal sites gemaakt, eigen scripts die toen nog niet heel geweldig in elkaar zaten maar deden wat ze moesten doen ;)

Nu wil ik met mijn server graag de overstap maken naar PHP5 echter kom ik het volgende probleem tegen wanneer ik mijn oude sites test onder PHP5 lokaal met de standaard installatie van WAMP

de error:
code:
1
Parse error: syntax error, unexpected '}' in C:\Program Files\Wamp\www\ftp\site\beheer\beveiliging.php on line 123


De oorzaak zit hem dus voor 100% in dat bestand
het bestand: (ingekort)

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?
$gebruikers = array(
                    "loginnaam"=> "loginpass",
                   );


if (isset($_REQUEST['gn'])) {
 
    if (isset($_POST['gn'])) {
        $gebruikersnaam = $_POST['gn'];
    } elseif (isset($_COOKIE['gn'])) {
        $gebruikersnaam = $_COOKIE['gn'];
    } else {
        inloggen();
    }
    $gebruikersnaam = trim(strip_tags($gebruikersnaam));
    if (array_key_exists($gebruikersnaam, $gebruikers)) {
        if (isset($_POST['ww'])) {
            $wachtwoord = $_POST['ww'];
        } elseif (isset($_COOKIE['ww'])) {
            $wachtwoord = $_COOKIE['ww'];
        } else {
            inloggen($gebruikersnaam);
        }
        $wachtwoord = trim(strip_tags($wachtwoord));

        if ($gebruikers[$gebruikersnaam] == $wachtwoord) {
            
            $verloopt_op = time() + 2592000;
            
            setcookie("gn", $gebruikersnaam, $verloopt_op);
 
            if (isset($_POST['wo'])) {
                if ($_POST['wo'] == 1) {
                    setcookie("ww", $wachtwoord, $verloopt_op);
                }
            }
        } else {
            inloggen($gebruikersnaam);
        }
    } else {
        inloggen($gebruikersnaam);
    }
} else {
    inloggen();
}

// Webpagina met een formulier en instructies weergeven:
function inloggen($gebruikersnaam = '')
{
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Inloggen</title>
</head>
<body>

formulier met in voervelden en een submit knop

</body>
</html>
<?php
    exit;
}
?>


Waar ik ook aan heb gedacht is dat misschien mijn php.ini file verschillend is van mijn PHP4 ini file,
opentags setting of iets dergelijks... echter vind ik er niet veel over

Modelbouw - Alles over modelbouw, van RC tot diorama


  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Wat is regel 123?

[edit]
Er zitten een fout in je eerste regel al.
PHP:
1
2
3
$gebruikers = array(
                    "loginnaam"=> "loginpass",
                   );

Die komma na "loginpass" hoort daar niet.

[ Voor 85% gewijzigd door AtleX op 19-12-2007 09:38 ]

Sole survivor of the Chicxulub asteroid impact.


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Die komma is niet nodig, maar mag wel. Bij consistent gebruik is het zelfs een vrij leuke codestyle. :)

{signature}


  • Sjoerd
  • Registratie: December 2003
  • Niet online
AtleX schreef op woensdag 19 december 2007 @ 09:36:
Wat is regel 123?

[edit]
Er zitten een fout in je eerste regel al.
PHP:
1
2
3
$gebruikers = array(
                    "loginnaam"=> "loginpass",
                   );

Die komma na "loginpass" hoort daar niet.
Komma, ondertussen weg gehaald, maar zoals hierboven, zou normaal gewoon mogen...
123 is:

<?php
regel123: }
exit;
?>

de } dus :)

Modelbouw - Alles over modelbouw, van RC tot diorama


  • jan-marten
  • Registratie: September 2000
  • Laatst online: 29-11 14:48
Wat is regel 123.
Huidige script draait probleemloos, zelfs met error_reporting(E_ALL);

Opentags is volgens mij hoe je PHP-code begint; <?php ... ?> = standaard, <? ... ?> = short_open_tag.

Breek die functie eens niet en zet er print($formulier);

[ Voor 14% gewijzigd door jan-marten op 19-12-2007 09:57 ]


  • Sjoerd
  • Registratie: December 2003
  • Niet online
jan-marten schreef op woensdag 19 december 2007 @ 09:54:
Wat is regel 123.
Huidige script draait probleemloos, zelfs met error_reporting(E_ALL);

Opentags is volgens mij hoe je PHP-code begint; <?php ... ?> = standaard, <? ... ?> = short_open_tag.

Breek die functie eens niet en zet er print($formulier);
wanneer ik dus mijn form in ne var stop en deze van onder print krijg ik al mijn phpcode te zien van boven aan de pagina en werkt de beveiliging dus ook niet ;)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
"loginpass", ); if (isset($_REQUEST['gn'])) { if (isset($_POST['gn']))
 { $gebruikersnaam = $_POST['gn']; } elseif (isset($_COOKIE['gn'])) { 
$gebruikersnaam = $_COOKIE['gn']; } else { inloggen(); } 
$gebruikersnaam = trim(strip_tags($gebruikersnaam));
 if (array_key_exists($gebruikersnaam, $gebruikers)) {
 if (isset($_POST['ww'])) { $wachtwoord = $_POST['ww']; } 
elseif (isset($_COOKIE['ww'])) { $wachtwoord = $_COOKIE['ww'];
 } else { inloggen($gebruikersnaam);
 } $wachtwoord = trim(strip_tags($wachtwoord));
 if ($gebruikers[$gebruikersnaam] == $wachtwoord) { $verloopt_op = time() + 2592000; setcookie("gn", $gebruikersnaam, $verloopt_op);
 if (isset($_POST['wo'])) { if ($_POST['wo'] == 1) 
{ setcookie("ww", $wachtwoord, $verloopt_op); } } } else { inloggen($gebruikersnaam); } 
} else { inloggen($gebruikersnaam); } 
} else { inloggen(); } // Webpagina met een formulier en instructies weergeven: function inloggen($gebruikersnaam = ''){ $output='

Modelbouw - Alles over modelbouw, van RC tot diorama


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Maak er eens dit van:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/ Webpagina met een formulier en instructies weergeven:
function inloggen($gebruikersnaam = '') {
    print '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Inloggen</title>
</head>
<body>

formulier met in voervelden en een submit knop

</body>
</html>
';
    exit;
}
?>

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Krijg ik helaas ook weer gewoon van boven mijn php output te zien,
......n($gebruikersnaam = ''){ print '

en van onder

'; exit; } ?>

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Sjoerd schreef op woensdag 19 december 2007 @ 09:31:
De oorzaak zit hem dus voor 100% in dat bestand
het bestand: (ingekort)
Dit is nog veel te lang. Ga door met inkorten totdat je de error niet meer krijgt en kijk dan eens goed naar de laatste versie waarin je de error nog wel krijgt.

  • daniëlpunt
  • Registratie: Maart 2004
  • Niet online

daniëlpunt

monkey's gone to heaven

Heel raar, deze fout lijkt mij weinig met het verschil PHP4 <> PHP5 te maken hebben, het is gewoon een syntax error.

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 28-11 15:56

killercow

eth0

vervang op line 1 eens <?p
door <?php

openkat.nl al gezien?


  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Op het moment dat je PHP output ziet moet je controleren of je server wel PHP files door PHP laat parsen en of short_tags wel aanstaat.

Sole survivor of the Chicxulub asteroid impact.


  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

super-muffin schreef op woensdag 19 december 2007 @ 13:11:
Heel raar, deze fout lijkt mij weinig met het verschil PHP4 <> PHP5 te maken hebben, het is gewoon een syntax error.
Inderdaad, volgens mij worden je files niet opeens anders geparsed in PHP 5, er zijn alleen wat meer features beschikbaar en andere functies. Maar een accolade niet afsluiten... tsja... dat werkte in PHP 1 waarschijnlijk al niet.

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
super-muffin schreef op woensdag 19 december 2007 @ 13:11:
Heel raar, deze fout lijkt mij weinig met het verschil PHP4 <> PHP5 te maken hebben, het is gewoon een syntax error.
Nee, short open tags staat in (zijn) PHP 5 uit en in zijn PHP 4 aan.

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 28-11 21:46

--MeAngry--

aka Qonstrukt

short_open_tags stond in diverse PHP 4 versies standaard aan, terwijl het in PHP 5 standaard uit staat. Dus dat is wel zeker de oorzaak. :)

Tesla Model Y RWD (2024)


Verwijderd

PHP:
1
2
3
4
5
</html> 
<?php 
    exit; 
} 
?>


Accolade moet VOOR de exit;

http://www.php.net/exit

*edit* oops, het is een void :P

[ Voor 18% gewijzigd door Verwijderd op 19-12-2007 14:44 ]


  • Room42
  • Registratie: September 2001
  • Niet online
@Forau,

Dat is natuurlijk onzin! Hoe zou je exit anders in een function kunnen gebruiken? ;)

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Verwijderd

void dan :P

  • Muthas
  • Registratie: December 2005
  • Niet online

Muthas

O+

offtopic:
Wat is er zo fout aan short_open_tags dan? Lijkt mij met het oog op MVC programming juist veel netter om in je view file alleen dingen als <?=$data;?> te gebruiken.

  • hamsteg
  • Registratie: Mei 2003
  • Laatst online: 22:35

hamsteg

Species 5618

Niet zo brallen met zijn allen
Sjoerd schreef op woensdag 19 december 2007 @ 10:07:
[...]


Krijg ik helaas ook weer gewoon van boven mijn php output te zien,
......n($gebruikersnaam = ''){ print '

en van onder

'; exit; } ?>
Alles tussen de '-en wordt HTML geprocessed, de rest wordt gewoon weergegeven. DUS php parser is niet actief dus
  1. de PHP pagina wordt niet herkend aan de extentie .php (heb je deze pagina als HTML extentie staan? .htm .html)
  2. gebruik je de juiste tags voor start en stop activering van de PHP parser? Gebruik van short tags is eigenlijk so-wie-so verboden. gebruik: <?php

... gecensureerd ...


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Nofi, maar je blaat. :> Return type heeft er helemaal niets mee te maken.

Er zijn een aantal serieuze reacties gegeven. Als je niet zeker weet of iets foute syntax is, of niet weet wat het probleem met short open tags is, lees dan de documentatie ipv geblaat in dit topic te plempen.

{signature}


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Muthas schreef op woensdag 19 december 2007 @ 14:50:
[offtopic]Wat is er zo fout aan short_open_tags dan?
Je code werkt niet als ze uit staan...
Lijkt mij met het oog op MVC programming juist veel netter om in je view file alleen dingen als <?=$data;?> te gebruiken.[/offtopic]
Als je het netjes doet gebruik je templates.

  • Sjoerd
  • Registratie: December 2003
  • Niet online
de shortopentags toch weer de boosdoener, ;) tegenwoordig gebruik ik ze niet meer, maar had niet verwacht dat ze hier het probleem waren :)

goede tip: ban de shortopentags ;)

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:35

Creepy

Tactical Espionage Splatterer

No offence maar gaat hier hier nu echt om syntaxt errors en het wel of niet parsen van PHP code? Zo ja, Sjoerd: ga zelf eens kijken en debuggen want de foutmelding die je nu zelf geeft in je startpost is er één die je zelf zou moeten kunnen oplossen. Een syntax error is over het algemeen vrij duidelijk en door eens goed naar je code te kijken moet je dat echt zelf kunnen oplossen. Je foutmelding dumpen en hopen dat wij het voor je gaan fixen is absoluut niet de bedoeling.

Op het moment dat je PHP code ziet in je browser dan zou er bij elke PHP devver een lampje moeten gaan branden dat PHP de zaken dus niet parsed en dat aan je Webserver instellingen, php instellingen of de PHP tags kan liggen en ook dat zijn zaken die je prima zelf kan debuggen.

Edit: ja dus. Ok, volgende keer aub zelf zaken dubbelchecken en debuggen.

[ Voor 4% gewijzigd door Creepy op 19-12-2007 15:28 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.