2015-08-12 4 views
0

У меня есть простая форма входа, которая позволяет пользователю войти в систему, хотя форма работает нормально, но есть одно условие, когда я хочу перенаправить его на другую страницу вместо обычной страницы индекса.страница, перенаправленная на неправильную страницу

кусок кода, где я столкнулся вопрос является

if($spid=="") 
    { 
     header('Location:index.php'); 
    } 
else 
    { 
     header('Location:new.php?id=$spid'); 
    } 

вопрос даже если $ спид имеет значение его перенаправляют на index.php страницу. может кто-нибудь пожалуйста, скажите, почему это происходит

весь код, из которого был извлечен выше код

<?php 
$spid=$_GET['spid']; 
$emailErr = $pswrdErr = $loginErr = ""; 
$email = $password = ""; 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
     if (empty($_POST["email"])) { 
       $emailErr = "Email is required"; 
      } 
     else { 
       $email = test_input($_POST["email"]); 
       if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
         $emailErr = "Invalid email format"; 
        } 
      } 

     if (empty($_POST["password"])) { 
       $pswrdErr = "password is required"; 
      } 
     else { 
       $password = test_input($_POST["password"]); 
      } 

     $sql = "SELECT * FROM usertable where email='".$email."' and password='".$password."' "; 
     $result = mysqli_query($con, $sql); 
     if (mysqli_num_rows($result) > 0) { 
       while($row = mysqli_fetch_assoc($result)) { 
         $_SESSION['loggedin'] = true; 
         $_SESSION['email'] = $email; 

         if($spid=="") 
          { 
           header('Location:index.php'); 
          } 
         else 
          { 
           header('Location:new.php?id=$spid'); 
          } 

        } 
      } 
     else { 
       $loginErr = "Invalid Credentials"; 
      } 
    } 

function test_input($data) { 
     $data = stripslashes($data); 
     $data = htmlspecialchars($data); 
     return $data; 
    } 
?> 

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST" role="form"> 
<input type="text" class="form-control" name="email"> 
<input type="password" class="form-control" name="password"> 
</form> 
+0

вы пробовали вторя значение $ ИСП, чтобы увидеть, что на самом деле хранится в нем? – James

+0

@James да, я сделал это, и он имеет значение – st001

+0

Вы пытались изменить 'if ($ spid ==" ")' to 'if (empty ($ spid)) вместо этого и посмотреть, работает ли он? – Epodax

ответ

1

Как вы сказали, что вы получаете значение в $spid=$_GET['spid']; Поэтому вместо того, чтобы следовать вышеуказанному методу, сделайте свой $spid скрытым текстом i/p внутри формы, а затем передайте его в своем коде как

$finalspid=$_POST["spid"]

, а затем положить ваши, если другое условие в соответствии с $finalspid

+0

спасибо, что это сработало – st001

0

Попробуйте это:

if(!isset($spid) && $spid==''){ 
    header('Location:index.php'); 
} else { 
    header("Location:new.php?id=".$spid); 
} 
+0

Я пробовал использовать код ur, но теперь он перенаправляется на new.php каждый раз, даже когда $ spid пуст – st001

+0

Вы передаете 'spid' с url? – Chintan7027

+0

Да и вместо того, чтобы выбирать значение spid, URL, который я получаю на странице nego.php, является www.example.com/new.php?id = $ spid – st001

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