![]() |
[webserver] PHP geeft fout bij gebruik van variabelen
Ik heb vandaag een beetje zitten experimenteren met het installeren en gebruiken van een webserver (apache 2.0.39) en php (laatste versie 4 geloof ik).
Ik heb hier voor mn neus ook een beginnershandleiding php liggen met de volgende twee scripts: HTML- formulier Code:
<html> PHP-code:
Notice: Undefined variable: Voornaam in C:\Apache2\htdocs\HandleForm.php on line 8 Uw voornaam is . Notice: Undefined variable: Achternaam in C:\Apache2\htdocs\HandleForm.php on line 9 Uw achternaam is . Notice: Undefined variable: Email in C:\Apache2\htdocs\HandleForm.php on line 10 Uw e-mailadres is . Notice: Undefined variable: Commentaar in C:\Apache2\htdocs\HandleForm.php on line 11 U had dit te zeggen: Ik denk dat het iets te maken heeft met mn php configuratie, maar ik kan niet bedenken wat het zou kunnen zijn. Kan iemand mij helpen aub. Want voor zover ik weet hoef je in php variabelen niet de definiiëren. |
Citaat:
|
Bij nieuwere versies van PHP staat auto_globals uit..
|
Citaat:
|
Bedoel je niet register_globals? :p
|
Kan ik dat ook gewoon aanzetten?
Edit: Dit werkt trouwens niet: Citaat:
PHP-code:
|
Citaat:
|
Bedankt allemaal, nu werkt dat in ieder geval wel, maar er zijn nog twee problemen.
Het eerste is dat als ik meerdere regels typ in de textarea, dit wordt weergegeven op één regel. Kan daar iets aan gedaan worden? Het tweede is dat het volgende script: PHP-code:
Notice: Undefined variable: waarde in C:\Apache2\htdocs\test2.php on line 2 Is dit ook weer een irritante wijziging in php? En kan ik dit ook weer terugzetten naar de oude instellingen? |
In een textarea zijn de enters dus een \n,
een enter in html is <br /> nl2br() will do the trick.. |
Citaat:
Edit: Ja, ik heb het al uitgevogeld. Nu dat tweede probleem nog. Pff, wat kunnen dit soort dingen toch irritant zijn af en toe! |
Citaat:
PHP-code:
|
Citaat:
Edit: het werkt op die manier idd wel. *boek uit het raam gooit* |
http://nl3.php.net/manual/en/function.isset.php
Returns TRUE if var exists; FALSE otherwise. Jouw manier zal FALSE teruggeven als de waarde 0 is, of boolean FALSE, dit terwijl de waarde wel toegewezen is, de variabele bestaat. Daarom kun je beter isset gebruiken. |
PHP-code:
|
|
Citaat:
Staat er niet !isset() ? Het uitroepteken geldt als een NOT operator, dus die draait het zaakje om. |
Citaat:
Citaat:
|
Citaat:
|
Ja dat is dus correct. Daarom dien je eigenlijk altijd isset te gebruiken, of $var === true in het geval van een boolean-check.
|
Citaat:
|
Het is waarschijnlijk een gigantische noob vraag, maar wat is een boolean-check?
|
Citaat:
|
Citaat:
Het wordt trouwens afgeraden deze aan te zetten. Ten eerste omdat het gewoon slordig programmeren is en ten tweede omdat je code hierdoor dus niet meer overal werkt, aangezien hosting providers het ook steeds vaker uitzetten. Zelf gebruik ik altijd de $HTTP_POST_VARS array. En als ik wil controleren of een waarde bestaat, gebruik ik de array_key_exists() functie. |
Citaat:
|
Citaat:
op naar de classes ;) |
Citaat:
Citaat:
|
Citaat:
Wat betreft regiter_globals aanzetten heb je wel gelijk. Het is gewoon fout, en je leert jezelf de verkeerde dingen aan. |
Citaat:
Wanneer je wilt weten of een array key bestaat, moet je array_key_exists() gebruiken; niet isset. De eerste is leesbaarder voor jezelf en anderen. Verder denk ik dat array_key_exists ook sneller is dan isset, maar dat is een gok van mijn kant. |
Er is wel wat voor te zeggen dat array_key_exists() correcter is, maar het is echt teveel typewerk om het ook daadwerklijk te gebruiken, IMHO. Het zou trouwens wel best kunnen dat array_key_exists() iets sneller is, hoewel isset() waarschijnlijk vrij hard geoptimaliseerd is.
|
teveel typewerk is een n00b argument; een beetje texteditor heeft shortcuts en code completion etc.
Verder vind ik de functie isset kompleet overbodig; waarom zou je moeten controleren of een variabele bestaat? Ga je conditioneel variabelen aanmaken ofzo :| Dit is, zoals ******** al zei, Quick-n-Dirty... |
Citaat:
Het is een kwestie van voorkeuren, "is gezet" of "bestaat" maakt niks uit, voordeel is dat je isset() consequent kan gebruiken, en array_key_exists natuurlijk alleen op arrays werkt. |
Citaat:
|
Citaat:
Citaat:
Voor jou controle heb je is_null() :) (en consorten) |
Citaat:
PHP-code:
isset is iets sneller dan array_key_existst. Op mijn computer dan. Citaat:
|
Citaat:
|
Citaat:
Citaat:
Citaat:
|
laten we ophouden met de discussie of we isset() nou wel of niet moeten gebruiken, en weer ontopic gaan :)
|
Citaat:
|
Wat mij betreft mogen jullie semi-offtopic gaan, ik ben daar niet zo heel strict in.
Voorwaarden:
|
Citaat:
Citaat:
Citaat:
Citaat:
|
Citaat:
(vind ik dan) |
Citaat:
Citaat:
Ik heb sterk het idee dat isset() in feite precies hetzelfde doet als is_null()... Zie hier wat null inhoudt in PHP. Overigens ben ik het wat betreft het offtopic-gaan met Enlightenment eensch. |
Citaat:
|
Citaat:
Citaat:
|
Citaat:
Citaat:
Ik ga trouwens ervan uit dat unset doet wat het zegt, dus toegekende waarde weghalen. Nu weet ik niet of PHP zo is gemaakt dat op het moment dat unset wordt uitgevoerd de variable als het ware wordt vrijgegeven of dat alleen de waarde naar NULL word gezet. Als het 2de gebeurd kan je isset() en array_key_exist() gewoon allebei gebruiken zonder dat je het mag uitschelden voor quick 'n dirty, imo. Maar echt zou heel de variable verwijderd worden dan zou isset() een verkeerde uitkomst geven. |
Citaat:
Zolang je er actief mee bezig bent weet je idd welke variabelen er zijn en wanneer. Stop je er een maand mee, dan weet je dat niet meer; net zomin een ander jouw code nog kan volgen. Dat PHP geen constructies kent zoals Code:
my ( $var1, $var2, $var3 ) = 0; om in één keer een rij variabelen te zetten... tja... Wanneer jij niet weet van welk type je variabelen moeten worden, klopt je script opbouw niet. Je kunt naar mijn idee altijd een waarde toewijzen aan een variabele -- een waarde die hoogts waarschijnlijk niet voorkomt tijdens het uitvoeren van het script zodat je hierop kunt controleren, ipv het gebruik van isset(). |
Zo een NERD INSIDE ben je niet :p
|
Citaat:
|
Citaat:
PHP-code:
Citaat:
PHP-code:
|
Citaat:
|
Alle tijden zijn GMT +1. Het is nu 10:11. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.