Cette partie ne fonctionnera pas comme vous (probablement) voulez:
$_SERVER['REQUEST_URI'] != "login" || "thankyou" || "confirm"
Tout d'abord, REQUEST_URI
ne sera jamais égale à une de ces valeurs - il aura au moins un /
supplémentaire. Si votre script est nommé test.php
, REQUEST_URI contiendra au moins /test.php
(voir ci-dessous les autres informations qu'il pourrait contenir). Jetez un oeil à la variable REQUEST_URI
pour voir comment elle est structurée.
En outre, REQUEST_URI
est traître ici: il contiendra toutes les chaînes de requête supplémentaires de sorte qu'il sera possible de confondre la comparaison en ajoutant un ?name=value
arbitraire à l'URL.
Effectuez un phpinfo()
pour trouver quelque chose de plus approprié que REQUEST_URI, par ex. SCRIPT_NAME
. Deuxièmement, les opérations "ou" que vous effectuez seront appliquées aux valeurs avant que la comparaison ne soit effectuée.
Vous voulez probablement quelque chose comme ceci:
!in_array($_SERVER['SCRIPT_NAME'],
array("/login.php", "/thankyou.php", "/confirm.php"))
$ name = nom de base ($ _ SERVER ['REQUEST_URI']); $ name_array = explode ('.', $ Name); est mon code pour cela. Ah, attendez donc que ce soit plutôt $ name_array [0]. Que je suis bête. – Sam
@Sam Je suppose que c'est aussi bien. Cependant, la comparaison '||' ne fonctionnera pas dans les deux cas, la méthode 'in_array()' montrée le sera. Alternativement, vous devriez faire une comparaison '! =' Sur chaque connexion, merci, et confirmez. –
Ahh je vois. Merci pour la réponse rapide, cela a fonctionné :). – Sam