перенаправить на страницу php, если поля пусты - PullRequest
0 голосов
/ 07 августа 2011

Я хочу перенаправить на страницу, которая имеет форму, когда пользователь отправляет форму без каких-либо параметров, а также я хочу вернуть сообщение об ошибке, как я могу перенаправить с контроллера на форму?

<form action="controllers/Customer.controller.php" method="post">

    <label for="cellPhoneNo">cell phone number</label>
    <input type="text" name="cellPhoneNo" class="textField"/>

    <label for="telephone">telephone number</label>
    <input type="text" name="telephone" class="textField"/>

    <input type="submit" name="searchCustomer" value="بحث"/>
</form>

и вот страница Customer.controller.php

  if(trim($_POST['cellPhoneNo']) == "" && trim($_POST['telephone']) ==""){

  //include('Location:index.php'); //what I supposed to write here?
   echo "empty";
}

Ответы [ 2 ]

2 голосов
/ 07 августа 2011
<?php
session_start();

if(isset($_POST)){
    $cont=true;
    //cellPhoneNo
    if(!isset($_POST['cellPhoneNo']) || strlen($_POST['cellPhoneNo'])< 13){ //13 being the telephone count
        $cont=false;
        $_SESSION['error']['cellPhoneNo']='Cell phone is required & must be 13 in length';
        header('Location: ./index.php');
        die();
    }
    //telephone
    if(!isset($_POST['telephone']) || strlen($_POST['telephone'])< 13){ //13 being the telephone count
        $cont=false;
        $_SESSION['error']['telephone']='Telephone is required & must be 13 in length';
        header('Location: ./index.php');
        die();
    }

    if($cont===true){
        //continue to submit user form

    }else{
        header('Location: ./index.php');
        die();
    }
}else{
    header('Location: ./index.php');
}
?>
1 голос
/ 07 августа 2011

Не зная структуры вашего фреймворка, вы можете использовать php's header

if(trim($_POST['cellPhoneNo']) == "" && trim($_POST['telephone']) ==""){

   $_SESSION['error'] = 'Fields cannot be empty!';
   header('Location: myformlocation.php');
   exit(); 
}

И чуть выше вашей формы:

<?php if(isset($_SESSION['error'] )) : ?>

<div class="error"><?php echo $_SESSION['error'];?></div>

<?php 
unset($_SESSION['error']); 
endif; ?>


<form action="controllers/Customer.controller.php" method="post">

Таким образом, при отправке формы, если поля пусты, страница формы перезагружается и, поскольку теперь установлена ​​ошибка $ _SESSION, она будет отображаться. Возможно, вы захотите сделать функцию из отображения $ _SESSION ['error'], чтобы не писать весь этот код в каждой форме.

РЕДАКТИРОВАТЬ после комментария:
Хм, я не совсем понимаю ваш вопрос, вы можете использовать либо $ _GET:

header("Location: ../index.php?page=customerSearch"); 

и вы получаете его в индексе с $pageToInclude = $_GET['page']; // правильно обработано

или используйте

$_SESSION['pageToInclude'] = 'CustomerSearch'; 
$_SESSION['error'] = 'Fields cannot be empty!';
header('Location: myformlocation.php');
....

и в индексе вы используете

$pageToInclude = isset($_SESSION['pageToInclude']) ? $_SESSION['pageToInclude'] : 'someotherdefaultpage';
...