[php] foutje met < >

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb iets vaags wat ik niet helemaal begrijp, op een nieuwe server gaat er iets mis als ik de < en > tekens gebruik. Bijvoorbeeld bij het volgende voorbeeldje (getall is een functie die de data uit een db in een array ramt, deze werkt prima).


PHP:
1
2
3
4
5
6
7
8
<?
$sql = "SELECT * FROM paginas";
$result = $db->getAll($sql);
            
for($i=0;$i<count($result);$i++){
 echo($result[$i]['naam']);
}
?>


Je verwacht hier een lijst met namen, echter krijg ik het volgende te zien op de website als ik de php laadt.

getAll($sql); for($i=0;$i"); } ?>

Het lijkt erop dat er iets misgaat met de < > tekens, heeft iemand hier ervaring mee?

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 19:48

Cyphax

Moderator LNX
Net of je <? niet wordt gezien als start van je PHP-blok (moet je ook eens kijken wat voor karakter er precies voor die getAll-aanroep staat). ;)
Zet er eens <?php neer (op regel 1 dus) en probeer het dan nog eens.

[ Voor 24% gewijzigd door Cyphax op 24-02-2009 17:58 ]

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
gebruik je <? of <?php bovenaan je bestand? Want short-open-tags kan uitstaan namelijk.

Acties:
  • 0 Henk 'm!

  • Joen
  • Registratie: Juli 2003
  • Laatst online: 09-08 18:34
Een configuratie optie met "allow asp syntax" zal waarschijnlijk uit staan. Gaat het wel goed als je van <? een <?php maakt?

Edit:
Zoals hier boven wordt gezegd gaat het inderdaad om "short_open_tag". In php.ini staan ze direct onder elkaar, vandaar mijn verwarring denk ik:
code:
1
2
3
4
5
6
7
8
9
10
; Allow the <? tag.  Otherwise, only <?php and <script> tags are recognized.
; NOTE: Using short tags should be avoided when developing applications or
; libraries that are meant for redistribution, or deployment on PHP
; servers which are not under your control, because short tags may not
; be supported on the target server. For portable, redistributable code,
; be sure not to use short tags.
short_open_tag = On

; Allow ASP-style <% %> tags.
asp_tags = Off

[ Voor 72% gewijzigd door Joen op 24-02-2009 18:02 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
<?php werkt ook niet

Acties:
  • 0 Henk 'm!

  • Joen
  • Registratie: Juli 2003
  • Laatst online: 09-08 18:34
Dan is je PHP nier goed geïnstalleerd of helemaal niet geïnstalleerd gok ik.

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 19:48

Cyphax

Moderator LNX
Inderdaad iets mis met de PHP-installatie, of het is een vreemde configuratie en je bestand wordt niet als PHP geparst wegens de extensie ofzo maar dat is niet zo heel waarschijnlijk.

Je bestand is wel .php en niet .html ofzo he?

[ Voor 19% gewijzigd door Cyphax op 24-02-2009 18:05 ]

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is zeker een php en niet html

PHP Version 5.2.8
short_open_tag On
asp_tags Off

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 19:48

Cyphax

Moderator LNX
Waar komt die informatie vandaan?

Kan je wat meer info geven, bestandsnamen, waar je de configuratie terugvindt, dat soort dingen, anders moeten we meer gokken en aannemen dan wellicht nodig.

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
phpinfo()

[ Voor 76% gewijzigd door Verwijderd op 25-02-2009 08:27 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Heb je het bestand wel de extensie .php gegeven? Zo nee, dan is het logisch dat het boeltje niet werkt: het wordt immers niet geparsed door PHP.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 24 februari 2009 @ 18:42:
Heb je het bestand wel de extensie .php gegeven? Zo nee, dan is het logisch dat het boeltje niet werkt: het wordt immers niet geparsed door PHP.
Het is zeker een .php file

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 17:19

Onbekend

...

En waar komt $db vandaan?

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Niet 'toevallig' een ?> in je getAll() functie? Dan zou die op dat punt stoppen met parsen van PHP en het als html outputten.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijzing naar de class db
Cartman! schreef op dinsdag 24 februari 2009 @ 18:49:
Niet 'toevallig' een ?> in je getAll() functie? Dan zou die op dat punt stoppen met parsen van PHP en het als html outputten.
Nope, niet het geval.


Is het toch de configuratie? beetje raar sinds de server in beheer is van een grote webhoster. Kzal ze eens mailen

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op dinsdag 24 februari 2009 @ 18:56:

[...]

Verwijzing naar de class db


[...]


Nope, niet het geval.


Is het toch de configuratie? beetje raar sinds de server in beheer is van een grote webhoster. Kzal ze eens mailen
Ik zie in je code nergens $db geinstantieerd worden, waar zou dat moeten gebeuren? Het ligt overigens niet aan je server, anders zou phpinfo.php het ook niet doen.

Begin anders eerst met lege haakjes en een echo en voeg gaandeweg dingen toe, dan kun je zien waar het misgaat. Ik heb het net even gecopypaste naar mijn eigen server en daar parste hij hem wel gewoon, dus ik vind het heel raar.

Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 18:54
Heb je in Apache ook een verwijzing gemaakt naar PHP?

of werkt phpinfo(); dan ook niet?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bovenaan staat nog ergens

PHP:
1
2
3
    require_once('config.php');
    require_once('db.php');
    $db = new db(DB_HOST,DB_USER,DB_PASS,DB_DB,DB_DEBUG);


Deze files zijn een aantal standaard DB functies ik vaker gebruik en directe kopieen zijn van werkende websites.

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
En als je nu eens helemaal bovenaan zet:

error_reporting(E_ALL);

En dan de error post :)

Acties:
  • 0 Henk 'm!

  • Joen
  • Registratie: Juli 2003
  • Laatst online: 09-08 18:34
En wat is de inhoud van config.php (eventueel wachtwoorden e.d. gecensureerd) en db.php?

Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
De output die het oplevert komt niet overeen met de code die je post. Het kan dus niet uit dit voorbeeld stukje komen. Ik gok dat het in db.php zit.

You don't have to be crazy to do this job, but it helps ....


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
Als ik je eerste stukje code in een tekstfile zet en die de extensie .html geef en vervolgens opvraag via Apache in Firefox dan krijg ik precies hetzelfde als jij dus:

code:
1
getAll($sql); for($i=0;$i


Hoeveel PHP code zie je als je 'view source' doet?

Het lijkt me duidelijk dat je PHP code niet door PHP wordt verwerkt. Ik zou vanaf de eerste regel gaan debuggen, bv door echo statements ofzo, totdat je de fout vindt. Het kan aan de installatie op die server liggen, iets in je account, in je eigen code.

Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
Daar had ik niet aan gedacht, ik bekijk altijd de source als ik de output niet vertrouw. Maar je hebt helemaal gelijk.

You don't have to be crazy to do this job, but it helps ....


Acties:
  • 0 Henk 'm!

  • Cousin Boneless
  • Registratie: Juni 2008
  • Laatst online: 28-02 12:55
Hmm.. hoofdletters gebruikt in de extensie misschien?
Of een verkeerde editor gebruikt en is je source nu in unicode?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het lag waarschijnlijk aan wat rutgerw aankaarte. De file was ooit een .html bestand en hoewel hij al lang gerenamed was naar .php werkte hij niet als php. De oplossing was een nieuw bestandje maken, deze vanaf het begin .php noemen en de hele code werkte.

Bedankt voor de hulp allen

Acties:
  • 0 Henk 'm!

  • Cousin Boneless
  • Registratie: Juni 2008
  • Laatst online: 28-02 12:55
Dan zal het wellicht toch unicode zijn geweest ;)

[ Voor 11% gewijzigd door Cousin Boneless op 25-02-2009 09:53 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Dat vind ik dan eerder een fout bij de host :? PHP kan toch prima overweg met unicode files zolang ze maar geen BOM hebben?

Acties:
  • 0 Henk 'm!

  • Cousin Boneless
  • Registratie: Juni 2008
  • Laatst online: 28-02 12:55
Bij mij niet.. had dit even getest door wat in wordpad te tikken en als Unicode Text Document op te slaan. De HTML wordt leuk weergegeven (met UTF-16 BOM in de HTTP data), maar de php interpreter doet er niets mee. (op m'n lokale Apache webserver). Zonder BOM weet ik niet.. kan unicode wel zonder BOM?

[ Voor 16% gewijzigd door Cousin Boneless op 25-02-2009 10:20 ]


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Ja, maar wie werkt er dan ook in utf-16? Waarschijnlijk herkent php de <?php niet door de tussenliggende NUL-bytes. utf-8 werkt prima (tenminste, zolang je geen BOM hebt: dan krijg je problemen met headers).

Het lijkt me waarschijnlijker dat de ts de .html-file hernoemd naar .php.html en dat de server dacht 'slim' te zijn door de .php.html te tonen ipv een 404 te geven.

Acties:
  • 0 Henk 'm!

Verwijderd

ValHallASW schreef op woensdag 25 februari 2009 @ 15:29:
Ja, maar wie werkt er dan ook in utf-16? Waarschijnlijk herkent php de <?php niet door de tussenliggende NUL-bytes. utf-8 werkt prima (tenminste, zolang je geen BOM hebt: dan krijg je problemen met headers).

Het lijkt me waarschijnlijker dat de ts de .html-file hernoemd naar .php.html en dat de server dacht 'slim' te zijn door de .php.html te tonen ipv een 404 te geven.
Eens met het eerste, maar het lijkt me toch sowieso wenselijk gedrag dat de server .html bestanden parsed als html, ook al is de tekst ervoor .php. Een 404 geven voor een bestand dat gewoon bestaat is een beetje raar toch? :)
Pagina: 1