Parse error: parse error, unexpected $ in /cust/ec/ec/httpd.www/articles_php/admin/login.php on line 31
Jag har fetmarkerat rad 31 och det är ju inget fel på den raden. Jag tycker att mina villkorssatser ser korrekta ut. Är det nåt med att jag skickar header-data när jag egentligen inte får det?
Den kortare varianten <? fungerar endast om man i php.ini satt variabeln short_open_tag till On. Även om detta är standardinställningen är det relativt vanligt att man stänger av det. Den korta varianten kan dessutom ställa till med problem då man i sin kod har en XML-deklaration överst i dokumentet. XML-deklarationen börjar nämligen med <?xml och om short_open_tag då är påslaget kommer PHP avsluta skriptet med ett parse error. Alltså, använd alltid <?php.
Use of $_SESSION (or $HTTP_SESSION_VARS with PHP 4.0.6 or less) is recommended for improved security and code readability. With $_SESSION, there is no need to use the session_register(), session_unregister(), session_is_registered() functions. Session variables are accessible like any other variables.
Annars ser jag inget direkt fel, du kan testa att använda enkelfnuttar/dubbelfnuttar rakt igenom i din if-sats, kan vara någon inställning i php.ini som spökar.
if ($_POST['usr'] == 'admin' && $_POST['psw'] == 'test')
Melea: Är det fler villkor i en sats skall alltid villkoren omslutas i separata paranteser. Precis som i alla andra språk som använder villkorstyrning, dvs i stort sätt alla.
Och förövrigt så behöver du inte använda paranteser när du använder echo.
echo är ingen funktion och ska därför inte användas på det sättet.
Saxat direkt från manualen:
// Because echo is not a function, following code is invalid.
($some_var) ? echo('true'): echo('false');
// However, the following examples will work:
($some_var) ? print('true'): print('false'); // print is a function
echo $some_var ? 'true': 'false'; // changing the statement around