Hoeder van het Noord-Meierijse dialect
1
2
3
4
| $array['test'] = 'mijn naam is $naam'; $naam = "McLatey"; $array['test'] = str_replace('$naam',$naam,$array['test']); echo $array['test']; |
edit:
alleen zo is het wat handiger te lezen vind ik zelf, zeker als je perongeluk dubbele quotes " gebruikt
1
2
3
4
| $array['test'] = 'mijn naam is {naam}'; $naam = "McLatey"; $array['test'] = str_replace('{naam}',$naam,$array['test']); echo $array['test']; |
[ Voor 75% gewijzigd door Erkens op 12-01-2004 22:15 ]
- Welke versie van php gebruik je, dit is geen correct gedrag, en op mijn versieverzameling (4.0.1, 4.2.?, 4.3, 5.0b) is het niet te reproduceren.
- Waarom quote je je arrayindex niet? ($array['test'] of $array["test"])
- Waarom heb je error_reporting(E_ALL) niet aan staan?
Localhost, sweet localhost
PHP 4.3.3 Win32Notice: Use of undefined constant test - assumed 'test' in c:\webroot\_dev\classes\0.php on line 2
Notice: Undefined variable: naam in c:\webroot\_dev\classes\0.php on line 2
Notice: Use of undefined constant test - assumed 'test' in c:\webroot\_dev\classes\0.php on line 4
mijn naam is
ik weet het niet precies heb hosting gekocht bij priorweb.bekvdveer schreef op 12 januari 2004 @ 22:14:Zoveel vragen, zo weinig antwoorden...
- Welke versie van php gebruik je, dit is geen correct gedrag, en op mijn versieverzameling (4.0.1, 4.2.?, 4.3, 5.0b) is het niet te reproduceren.
- Waarom quote je je arrayindex niet? ($array['test'] of $array["test"])
- Waarom heb je error_reporting(E_ALL) niet aan staan?
Hoeder van het Noord-Meierijse dialect
Lees de post nog eens...Erkens schreef op 12 januari 2004 @ 22:12:
iets offtopic
maak es een bestandjeMcLatey schreef op 12 januari 2004 @ 22:16:
[...]
ik weet het niet precies heb hosting gekocht bij priorweb.be
1
| phpinfo(); |
Dat is een antwoord op vraag 1, (het juiste antwoord luidt trouwens Apache/1.3.27 (Unix) PHP/4.3.1, volgens netcraft)McLatey schreef op 12 januari 2004 @ 22:16:
[...]
ik weet het niet precies heb hosting gekocht bij priorweb.be
Vraag 2 en 3 gaan in op (structurele) fouten in je programmeerstijl)
[ Voor 22% gewijzigd door kvdveer op 12-01-2004 22:19 . Reden: netcraft toegevoegd ]
Localhost, sweet localhost
ik heb een bestand.php
daarin staat
$text[bla] = "bla";
$text[blaat] = "tekst enzo";
$text[welkom] = "hallo $username";
vervolgens ga ik naar een_ander_bestand.php
daarin doe ik
include "bestand.php";
$username = "test";
echo $text[welkom];
hij geeft keurig als output:
hallo test
geen errors!
Hoeder van het Noord-Meierijse dialect
heb ik gelezen, en wat maakt mijn post dan offtopic
als je het niet eens bent met een post ofzo, dan doe je dat via SM/TR/EMAIL/ICQ/SMS maar niet door offtopic te blaten.
Ik poste mijn post enkel om andere te helpen, want dit soort "fouten" krijg je juist door zo fout te proggen en dus geef ik een voorbeeld hoe het wel moet, niet zozeer voor de TS alswel voor andere die toevallig dit topic lezen...
Hoeder van het Noord-Meierijse dialect
Daar geloof ik geen snars van. Je noemt hier niet de volledige php-bestanden.McLatey schreef op 12 januari 2004 @ 22:18:
preciese uitleg:
ik heb een bestand.php
daarin staat
$text[bla] = "bla";
$text[blaat] = "tekst enzo";
$text[welkom] = "hallo $username";
vervolgens ga ik naar een_ander_bestand.php
daarin doe ik
include "bestand.php";
$username = "test";
echo $text[welkom];
hij geeft keurig als output:
hallo test
geen errors!
zet eens error_reporting(E_ALL) bovenaan je code.
Localhost, sweet localhost
1. ik prog goed hoorErkens schreef op 12 januari 2004 @ 22:20:
[...]
heb ik gelezen, en wat maakt mijn post dan offtopic
als je het niet eens bent met een post ofzo, dan doe je dat via SM/TR/EMAIL/ICQ/SMS maar niet door offtopic te blaten.
Ik poste mijn post enkel om andere te helpen, want dit soort "fouten" krijg je juist door zo fout te proggen en dus geef ik een voorbeeld hoe het wel moet, niet zozeer voor de TS alswel voor andere die toevallig dit topic lezen...
2. ik ben haastig en daarom typ ik hier zonder " (sorry)
Hoeder van het Noord-Meierijse dialect
gedaan geeft nietskvdveer schreef op 12 januari 2004 @ 22:21:
[...]
Daar geloof ik geen snars van. Je noemt hier niet de volledige php-bestanden.
zet eens error_reporting(E_ALL) bovenaan je code.
en je mag het niet geloven hoor maar hij doet het wel ik stond er zelf ook behooorlijk van te kijken
Hoeder van het Noord-Meierijse dialect
Wat jij (TS) nu wilt doen is iets gebruiken voordat het gedefinieerd is.
Voorbeeldje deze formule : a = 5 * b;
Geef jij het antwoord, dan geef ik daarna aan wat b moet zijn. kijken of jouw antwoord klopt ( ik gok van niet
De manier op dit op te lossen is dus met een template-achtig iets te gaan werken.
Ik heb hier trouwens lokaal een oudere php draaien en daar werkt het dus niet op. ( resultaat: "mijn naam is" )
[ Voor 106% gewijzigd door dusty op 12-01-2004 22:33 ]
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
Je code bevat fouten (het niet quoten van je array indexen bijvoorbeeld, maar ook het referen aan $username voordat 'ie is ingevuld), dus die error_reporting zou een fout moeten geven.McLatey schreef op 12 januari 2004 @ 22:22:
[...]
gedaan geeft niets
en je mag het niet geloven hoor maar hij doet het wel ik stond er zelf ook behooorlijk van te kijken
Weet je zeker dat wat je ons laat zien ook op de server staat?
Localhost, sweet localhost
1. dat weet ik honderd procent zekerkvdveer schreef op 12 januari 2004 @ 22:26:
[...]
Je code bevat fouten (het niet quoten van je array indexen bijvoorbeeld, maar ook het referen aan $username voordat 'ie is ingevuld), dus die error_reporting zou een fout moeten geven.
Weet je zeker dat wat je ons laat zien ook op de server staat?
2. hij geeft geen fouten
3. hoe is het in hemelsnaam te verklaren dat hij een gewone output weergeeft?
Hoeder van het Noord-Meierijse dialect
ja maar wat ik nu duidelijk probeer te maken isdusty schreef op 12 januari 2004 @ 22:26:
Titel aangepast.
Wat jij (TS) nu wilt doen is iets gebruiken voordat het gedefinieerd is.
Voorbeeldje deze formule : a = 5 * b;
Geef jij het antwoord, dan geef ik daarna aan wat b moet zijn. kijken of jouw antwoord klopt ( ik gok van niet)
De manier op dit op te lossen is dus met een template-achtig iets te gaan werken.
1. ik begrijp dat dit niet werkt (of iig niet hoort te werken)
2. op mijn server werkt het om de een of andere vage reden wel
3. ik snap niet hoe dat kan?
Hoeder van het Noord-Meierijse dialect
Kan je een test bestandje maken? Met minimale code, dus bv.:McLatey schreef op 12 januari 2004 @ 22:30:
[...]
ja maar wat ik nu duidelijk probeer te maken is
1. ik begrijp dat dit niet werkt (of iig niet hoort te werken)
2. op mijn server werkt het om de een of andere vage reden wel
3. ik snap niet hoe dat kan?
1
2
3
4
5
| $array['test'] = "mijn naam is $naam"; $naam = "McLatey"; echo $array['test']; echo "<HR>"; show_source(__FILE__); |
Dan moet je een resultaat krijgen dat ongeveer gelijk is aan http://www.lucard.to/got/test.php
Programmer - an organism that turns coffee into software.
Maar om te testen of er echt wat raar gebeurd of dat je gewoon wat over het hoofd gezien hebt moet je natuurlijk weten wat er je array in gaat. Wat levert het echo 'en van $naam helemaal bovenaan de pagina bijvoorbeeld op.
[ Voor 46% gewijzigd door Bluestorm op 13-01-2004 00:06 ]
Tenminste... dat [ denk / zie / weet ] ik... | Javascript obfuscator | foto's en video's uploaden
Verwijderd
Ik denk dat je voor jezelf een aantal dingetjes moet testen om daar achter te komen, en de dingen zijn stuk voor stuk genoemd in de reacties:
- Zet helemaal bovenaan je script een echo van $naam
- Controleer voordat je $array['test'] echo't of $naam bepaald is
- Gebruik juist geprogrammeerde code
Als je deze dingetjes test weet ik zeker dat je tegen je fout aanloopt. Zoniet dan zal er wel van alles mis zijn met je PHP / localhost instellingen, maar daar heb ik geen verstand van..
Als ik jou was zou ik de code die LuCarD gepost heeft in een testbestandje zetten (test.php) en deze aanroepen. En dan 'schoon' aanroepen, zonder includes of dergelijke etc. Dus puur dat bestandje: www.jouwserver.com/test.php.
Ik ben er dan van overtuigd dat je de reden cq oorzaak vindt waardoor dit 'rare gedrag van PHP' veroorzaakt wordt..!
Zoals reeds opgemerkt, zet je error reporting eens op E_ALL.McLatey schreef op 12 januari 2004 @ 22:10:
sorry voor de brakke titel maar ik kon het anders niet omschrijven
ik heb het volgende stuk code
PHP:
1 2 3 $array[test] = "mijn naam is $naam"; $naam = "McLatey"; echo $array[test];
als output krijg ik dan:
mijn naam is McLatey
maar hoe is dit in hemelsnaam mogelijk? zoals ik php heb geleerd zou dat eigenlijk niet moeten kunnen
fout 1: geen quotes om array keys
fout 2: $naam is niet geinitialiseerd
Omdat $naam niet geinitialiseerd is en de PHP compiler dus maar moet gissen wat je bedoeld zal deze de niet geinitialiseerde $naam op regel 1 waarschijnlijk interpreterenen als een reference naar $naam (regel 2).
Blijkbaar doet php compileren dus in 2 stappen waarbij de 2e stap dient om programmeer fouten op te lossen.
Dus m.a.w., onvoorspelbaarheid van het script is inherent aan slordig programmeren.