PHP ha due stili di notazione per se() blocchi (e blocchi in generale).
In primo luogo, si dispone della notazione wordy, che prevede esplicitamente endif;
alla fine del blocco if(). Ecco come si presenta:
if(whatever):
do something
else:
do something else
endif;
i due punti alla fine delle linee if
e else
sono importanti, perché altrimenti PHP pensa che si sta utilizzando l'altra notazione di (sotto).
In secondo luogo, si ha la notazione parentesi graffe, che è simile al C o Perl codice di stile, e si presenta così:
if(whatever) {
do something
} else {
do something else.
}
Con questa notazione stile, si è permesso di lasciare le coppie di ricci -Staffa se il tuo blocco sarà lungo una sola riga. (Personalmente ritengo che sia una cattiva pratica lasciarli fuori in questo modo, ma molta gente lo giustifica, ed è una sintassi perfettamente valida. Ma ho visto PHP confondersi con i blocchi a linea singola quando si passa da un codice PHP all'altro e HTML: questo è il motivo per cui preferisco sempre usare le parentesi graffe anche se sto scrivendo solo una riga).
Il problema nel tuo caso è che hai mescolato le due notazioni. Ci stai provando con la notazione verbale, ma non hai i due punti sulle linee, quindi PHP pensa che tu intenda la notazione delle parentesi graffe. Ma poiché la notazione delle parentesi graffe consente di non rilevare le parentesi, PHP sta vedendo il tuo codice come sintassi valida, anche se non funzionerà esattamente come pianificato.
La soluzione è quella di riordinarlo in modo da utilizzare sicuramente una sintassi o l'altra. Aggiungere parentesi graffe ({
e }
} all'inizio e alla fine di ciascun blocco come illustrato nell'esempio, oppure aggiungere due punti e una riga endif;
.
Quindi il codice dovrebbe essere simile a uno di questi due esempi:
<?php if(check if user is logged in): ?>
<display users profile in html>
<?php else: ?>
<display an error>
<?php endif; ?>
o ...
<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } ?>
Speranza che aiuta.
+1: preferisco questa sintassi per la leggibilità. – RedFilter
+1 per usare i metodi 'end *'/':' per fare condizionali in HTML. – RobertPitt
eurk. Odio la sintassi "endif". Dammi belle bretelle ricci amichevoli ogni giorno. ;) – Spudley