[PHP]Bug in PHP? Ik zou het haast gaan denken...

Pagina: 1
Acties:
  • 116 views sinds 30-01-2008
  • Reageer

  • NaliXL
  • Registratie: Maart 2002
  • Laatst online: 30-07 19:19
Hallo!

Ik heb hier een stukje PHP-script, wat telkens een simpele parse-error produceert. Ik heb dit script steeds versimpeld tot ik niet veel verder kon, maar kon geen fouten ontdekken. Ook mijn 2 collega's konden niets vinden. |:( Om het nog erger te maken blijft de error ook nog bestaan als ik de fout-producerende lijn commentariseer, met /* en */ . De file op een andere plaats zetten helpt ook niet. Verder staat dit script in een simpele door Dreamweaver gegenereerde basis-HTML tussen de body-tags. De allereerste regel bevat het stukje script <?php session_start(); ?> om de sessie te starten. Mijn excuses dat de posting zo lang is, maar ik wilde met mijn commentaar zo goed mogelijk laten zien waarom ik denk dat dit niet mijn fout is. Hier is in ieder geval de code :
code:
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
<?php
    // Get the current path, and put it in the currentpath directory
    $CurrentPath = getcwd();
    
    // Replace windows-slashed by unix-slashes 
    $CurrentPath = str_replace("\", "/", $CurrentPath);
    
    // Separate all directory elements in an array  
    $CurrentPath = explode("/", $CurrentPath); 
    
    // Assign the number of elements of $CurrentPath to $Temp
    $Temp = count($CurrentPath);
     
    // Substract 1 from $Temp
    $Temp = $Temp - 1;
     
    // Assign the last value of Currentpath (count($CurrentPath) - 1) to $Pietje
    $Pietje = $CurrentPath[$Temp]; 
    
    // Check if the last element of CurrentPath ($Pietje) is an empty string. This
    // is where the parse-error is given every time...              
    if ($Pietje == ""){
        $PathBack = 2; // If the last element is empty, take the one before last element
    } else {
        $PathBack = 1; // Else just take the last element
    }
    
    // Use the number obtained above to take the right element of Currentpath, and put
    // that element in currentpath. I don't need the rest of the array anyway.
    $CurrentPath = $CurrentPath[count($CurrentPath) - $PathBack];
    
    // Register currentpath as a session-variable. Session_start has been done at the very beginning
    // of the file, in the form of <?php session_start(); ?>
    session_register("CurrentPath");
    
    // Print a piece of javascript that will transport us to another page.
    printf("\n<SCRIPT Language=\"JavaScript\">\n");
    printf("parent.location = '../index.php';\n");
    printf("</SCRIPT>\n");
?>

Heel hartelijk bedankt voor je hulp!! 8-)

Genoeg is meer dan veel, en tart den overvloed


  • wiho
  • Registratie: Februari 2000
  • Laatst online: 09:43

wiho

Certified Nerd

Vervang
code:
1
$CurrentPath = str_replace("\", "/", $CurrentPath);

door
code:
1
$CurrentPath = str_replace("\\", "/", $CurrentPath);

"Pas als het proces gecrashed is, dumpt men de core"


  • _DeWie_
  • Registratie: November 2001
  • Laatst online: 10-04 16:23
Welke error krijg je precies ??

  • NaliXL
  • Registratie: Maart 2002
  • Laatst online: 30-07 19:19
Hmm, die slashes had ik inderdaad over het hoofd gezien. Ik kreeg eerst een parse-error, maar nu dat met die slashes is aangepast, krijg ik geen error meer. Er gaat echter nog steeds wat fout, want alles onder de regel
code:
1
session_register("CurrentPath");

word gewoon in de HTML gezet, in plaats van door PHP ge-parsed. Ten eerste zou die fout met die dubbele slashes op een veel eerdere regel een fout hebben moeten geven. Ten tweede als dat de oorzaak van mijn probleem zou zijn, dan denk ik dat het nu had moeten werken. In ieder geval denk ik nog steeds dat het hiet om een PHP-bug gaat. ;(

Genoeg is meer dan veel, en tart den overvloed


  • Glabbeek
  • Registratie: Februari 2001
  • Laatst online: 04-09 14:30

Glabbeek

Dat dus.

Verander de commentaarregel erboven
code:
1
// of the file, in the form of <?php session_start(); ?>

eens zodat er geen <?php en ?> meer in voorkomen. Als het daarop misloopt is het zeker een grote bug. Het is een wilde gok, maar het enige wat ik nu kan bedenken.

En zo is het maar net.


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

PHP:
1
<?      // Get the current path, and put it in the currentpath directory      $CurrentPath = getcwd();            // Replace windows-slashed by unix-slashes       $CurrentPath = str_replace("\", "/", $CurrentPath);            // Separate all directory elements in an array        $CurrentPath = explode("/", $CurrentPath);             // Assign the number of elements of $CurrentPath to $Temp      $Temp = count($CurrentPath);             // Substract 1 from $Temp      $Temp = $Temp - 1;             // Assign the last value of Currentpath (count($CurrentPath) - 1) to $Pietje      $Pietje = $CurrentPath[$Temp];             // Check if the last element of CurrentPath ($Pietje) is an empty string. This      // is where the parse-error is given every time...                              if ($Pietje == ""){?>

Bekijk het nu nog eens... En ben nog steeds van mening dat het een php bug is????? |:(

de session_register fout komt door ?> in de commentaar...

?> is end php... ok in de commentaar regels!

Programmer - an organism that turns coffee into software.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

NaliXL:
Mijn excuses dat de posting zo lang is, maar ik wilde met mijn commentaar zo goed mogelijk laten zien waarom ik denk dat dit niet mijn fout is
Man, als iedereen 's zo duidelijk was ;)
Glabbeek:
Als het daarop misloopt is het zeker een grote bug.
Daar kan je volgens mij heel lang over discussieren, want daar ben ik het dus niet mee eens :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • NaliXL
  • Registratie: Maart 2002
  • Laatst online: 30-07 19:19
Ik dacht dat alles wat in commentaar staat genegeerd zou moeten worden door een compiler?

Genoeg is meer dan veel, en tart den overvloed


  • Fatamorgana
  • Registratie: Augustus 2001
  • Laatst online: 07-08 04:17

Fatamorgana

Fietsen is gezond.

Op vrijdag 24 mei 2002 10:40 schreef NaliXL het volgende:
Ik dacht dat alles wat in commentaar staat genegeerd zou moeten worden door een compiler?
Daar heb je gelijk in, dat ZOU die ook moeten doen. Selectief commentaar heb je weinig aan, je moet er gewoon alles in kunnen zetten.

  • NaliXL
  • Registratie: Maart 2002
  • Laatst online: 30-07 19:19
Hmm, in ieder geval bedankt voor het meedenken voor een oplossing, het script doet nu in ieder geval waar het voor bedoeld is. :Y) Dat een sluittag in commentaar word meegenomen vind ik eigenlijk wel een bug, of op z'n minst een zwak punt van PHP, maar goed, er valt mee te leven. :o Weten we dat ook weer...

Genoeg is meer dan veel, en tart den overvloed


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op vrijdag 24 mei 2002 10:48 schreef NaliXL het volgende:
Hmm, in ieder geval bedankt voor het meedenken voor een oplossing, het script doet nu in ieder geval waar het voor bedoeld is. :Y) Dat een sluittag in commentaar word meegenomen vind ik eigenlijk wel een bug, of op z'n minst een zwak punt van PHP, maar goed, er valt mee te leven. :o Weten we dat ook weer...
Meld hem aan....!

http://bugs.php.net
open-source is groot geworden door bijdrage van iedereen....

Programmer - an organism that turns coffee into software.


  • Glabbeek
  • Registratie: Februari 2001
  • Laatst online: 04-09 14:30

Glabbeek

Dat dus.

Op vrijdag 24 mei 2002 10:39 schreef drm het volgende:
Daar kan je volgens mij heel lang over discussieren, want daar ben ik het dus niet mee eens :)
Nu ik er nog eens over nadenk, is het inderdaad geen bug. Anders zou je ook nooit iets als
code:
1
Selected item: <?php echo $selected; //show selected ?> <BR>


kunnen gebruiken, al gaat mijn voorkeur dan uit naar
code:
1
Selected item: <?php echo $selected; /* show selected */ ?> <BR>

En zo is het maar net.


  • SJR
  • Registratie: Januari 2000
  • Laatst online: 15-02 13:58

SJR


  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

It's a bug, not a feature!

Deze is al verscheidene malen voorbij gekomen op de mailinglists van PHP en dergelijke, maar het is zo bedoeld. De PHP delimiters hebben zeg maar eerste precedence, zelfs boven commentaar.

Rustacean


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Nou, als je dat soort regels gaat commentaren, dan ben je volgens mij een beetje overdreven bezig.

plus dat php4 die prachtige asp ("prachtig" en "asp" in 1 zin :?) notatie heeft overgenomen. Is wel handig (moet je uiteraard wel ff configureren in je php.ini, maar daar komt men vast wel uit)
code:
1
Nutteloze var: <?=$nutteloos // Nutteloos commentaar?>

Maar dat was het punt natuurlijk niet ;)
</offtopic>

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Glabbeek
  • Registratie: Februari 2001
  • Laatst online: 04-09 14:30

Glabbeek

Dat dus.

Op vrijdag 24 mei 2002 11:23 schreef drm het volgende:
[...]
Maar dat was het punt natuurlijk niet ;)
</offtopic>
Parseerror: </offtopic> without opening tag >:)

En zo is het maar net.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Glabbeek:
Parseerror: </offtopic> without opening tag >:)
Update notes
in this version the following bug was updated:

</offtopic> previously generated a parse error when started with "Door drm". This bug is fixed. When "Door drm" is encountered, it is automatically replaced by a start-tag for <offtopic> by the precompiler
:+

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1