2010-11-08 6 views
0

J'ai le code suivant qui vérifie le poste pour un "non" et si elle existe imprime et erreur ou sinon il redirige. Il redirige actuellement chaque fois quel que soit le fait que le tableau de la publication ait la valeur 'NON'.PHP Post & Redirect

if($_POST["minRequirementsForm"] == '1') { 
    foreach($_POST as $key => $value) { 
     if ($value == 'no') { 
      $error = 1; 
     } else { 
      header('Location: mysite.com/app-stage1.php'); 
     } 
    } 
//print_r($_POST); 
} 

Répondre

5

Il suffit d'utiliser le header appel après la boucle, et vérifier $error:

$error = false; 

if($_POST["minRequirementsForm"] == '1') { 
    foreach($_POST as $key => $value) { 
     if ($value == 'no') { 
      $error = true; 
     } 
    } 
} 

if (! $error) { 
    header('Location: mysite.com/app-stage1.php'); 
} 

Notez que celui-ci utilise le type boolean au lieu d'un nombre entier pour la $error variable, ce qui est plus approprié .

+0

il ne veut pas rediriger en cas d'erreur. Donc déclarez "l'erreur" dans l'autre sens.;) – Stewie

+0

THanks guys! Dès que j'ai posté cela, j'ai réalisé à quel point j'étais idiot :) – Andy

+0

Bien sûr, s'ils choisissaient oui alors le IF retourne vrai et il redirigerait quand même! Merci encore! – Andy

0

Il redirige en raison des valeurs suivantes des chaînes non "non". Il résonne l'erreur, mais en raison de la valeur suivante, il redirige. Essayez de quitter dans la condition if (non) et vous verrez l'erreur.

2

Ne l'utilisez pas comme vous l'avez fait. Il suffit d'écrire:

if (in_array('no', $_POST)) { $error = true; } 
if (!$error) { header('Location: mysite.com/app-stage1.php'); } 

Il est préférable d'utiliser une fonction déjà existante dans PHP que de réinventer la roue. Ou utilisez ce qui suit, ce qui est plus approprié:

if (!array_search('no', $_POST)) { header('Location: mysite.com/app-stage1.php'); }