2013-03-01 5 views
1

У меня есть приведенный ниже код, который позволяет члену восстановить свой пароль. Однако я не могу определить ошибку, которая была сделана, и мои условия не выполняются. Когда вы посещаете recover.php, вы перенаправляетесь на index.php, поэтому выполняется инструкция else else (это должно произойти только при входе пользователя в систему - это означает, что они не могут восстановить пароль, если они вошли в систему).Условия, которые не выполняются в моем заявлении IF

<?php 
include 'storescripts/init.php'; 
$msg = ""; 
if(isset($_GET['success']) === true && empty($_GET['success']) === true) 
{ 
    $msg = "Thanks, we've emailed you."; 
} 
else 
{ 
    $mode_allowed = array('mem_password'); 
    if (isset($_GET['mode']) === true && in_array($_GET['mode'], $mode_allowed) === true) 
    { 
     if(isset($_POST['mem_email']) === true && empty($_POST['mem_email']) === false) 
     { 
      if (email_exists($_POST['mem_email']) === true) 
      { 
       recover($_GET['mode'], $_POST['mem_email']); 
       header('Location: recover.php?success'); 
       exit(); 
      } 
      else 
      { 
       $msg = "<p>Oops, we couldn\'t find that email in the system</p>"; 
      } 
     } 
    } 
else 
    { 
     header('Location: index.php'); 
     exit(); 
    } 
} 
logged_in_redirect(); 
include 'includes/overall/head.php'; 
include 'includes/overall/template_header.php'; 
?> 
<div id="mainDivShort"> 
    <h1>Recover</h1> 
    <div id="divBreak"></div> 
    <?php include ("includes/overall/column_left.php");?> 
    <div id="middleContent"> 
     <?php echo $msg; ?> 
     <form action="" method="post"> 
      <ul> 
       <li>Please enter your email address:<br> <input type="text" name="mem_email"></li> 
       <li><input type="submit" value="Recover"></li> 
      </ul> 
     </form> 
    </div> 
    <?php include ("includes/overall/column_right.php");?> 
</div> 
<?php include ("includes/overall/template_footer.php");?> 

Как я посещаю recover.php, когда я вошел, я не могу разобраться, что условие является неправильным, чтобы выполнить последнее еще заявление.

+0

'$ _GET ['mode']' был передан в URL-адресе? 'recover.php? mode = mem_password' –

+1

Это не ваша ошибка здесь, но вам не нужны явные сравнения на' true'. просто используйте что-то вроде 'if (isset ($ foo) &&! empty ($ foo))' – scones

+0

nope. Я ссылаюсь на index.php на recover.php? Mode = password, и как только нажимается ссылка, я перенаправляюсь обратно в index.php – jhetheringt7

ответ

0

Прежде всего:

Это не будет работать:

if(isset($_GET['success']) === true && empty($_GET['success']) === true) 

Оно должно быть:

if(isset($_GET['success']) === true && empty($_GET['success']) === false) 

И

header('Location: recover.php?success'); 

должно быть (еще $ _GET ['success'] не будет установлен):

header('Location: recover.php?success=1'); 

И:

<form action="" method="post"> 

должно быть:

<form action="recover.php?mode=mem_password" method="post"> 

Для остальных, вы код правильно.

Смежные вопросы