On y va pas à pas.
if (isset($_POST['reponse']) && $_POST['reponse'] == 'labonnereponse')
Qu'est-ce que ça veut dire ?
Avant de tester la valeur d'une variable, il est naturel de savoir si elle est existe,
i.e. de savoir si elle est définie (
set en anglais), donc on utilise
is set, isset().
Le code veut donc dire : si ma variable est définie,
et (que l'on peut comprendre par un
et alors aussi, voir les propriétés du && pour ça, ça se comprend bien [1]) que sa valeur vaut 'labonnereponse', alors ...
Donc si tu veux qu'on exécute le block d'instructions du
if, il faut que la variable soit définie, et que sa valeur soit 'labonnereponse'. C'est donc la partie à modifier oui.
Si tu veux qu'il aille vers monformulaire.php, une des deux conditions doit être fausse.
À propos de ton header sur les en-têtes, va jeter un oeil dans
la documentation pour la fonction header. Une en-tête doit toujours être placée avant des sorties (echo, écriture d'HTML, ligne blanche etc.),
grosso modo en début de page. Pour contourner le problème, tu peux soit placer tes headers en début de page, soit utiliser les tampons (buffer). La documentation explique tout ça à l'exemple 6 du lien ci-précédent.
[1] : Le && (et logique) fonctionne comme ça : si la première condition vaut
true (vrai), alors on passe à la seconde condition et ainsi de suite. Donc on comprend facilement qu'il suffit d'un
false pour ne pas évaluer la suite de l'expression. Ainsi si la variable n'est pas définie, on ne testera pas sa valeur.