PHP从单独的文件中检查空值

时间:2011-12-03 05:58:36

标签: php mysql redirect error-handling

我有一个注册页面,我将检查javascript和PHP中每个字段的值。问题是我在单独的文件中有注册码。我把它放在一个单独的文件中,因为我正在查询数据库等等,所以我排除了自我发布。然后我想到重定向到一个单独的错误页面将是矫枉过正。

所以我想做的是重定向到注册页面,顶部有错误消息或类似的东西,就像我将表单发布给自己一样。我怎么能这样做呢?

3 个答案:

答案 0 :(得分:1)

将注册码放在单独的文件中即可 但是,此文件必须是注册页面本身 虽然表单存储在另一个文件中,但只是包含在内。

以下是注册码的草图

<?  
include 'config.php';
if ($_SERVER['REQUEST_METHOD']=='POST') {  

  $err = array();
  //performing all validations and raising corresponding errors
  if (empty($_POST['name']) $err[] = "Username field is required";  
  if (empty($_POST['text']) $err[] = "Comments field is required";  

  if (!$err) {  
    // if no errors - saving data 
    // and then redirect:
    header("Location: ".$_SERVER['PHP_SELF']);
    exit;
  }  else {
    // all field values should be escaped according to HTML standard
    foreach ($_POST as $key => $val) {
      $form[$key] = htmlspecialchars($val);
    }
} else {
  $form['name'] = $form['comments'] = '';  
}
include 'form.tpl.php';
?>  

模板包含表单和错误消息

<? if ($err): ?>
  <? foreach($err as $e): ?>
<div class="err"><?=$e?></div>
  <? endforeach ?>
<? endif ?>
<form>
  <input type="text" name="name" value="<?=$form['name']?>">
  <textarea name="comments"><?=$form['comments']?></textarea>
  <input type="submit">
</form>

这是最常见的表单处理方式POST/Redirect/GET

答案 1 :(得分:0)

你为什么不发帖给自己?所有你必须做的是构建PHP,以便一旦验证它插入数据等...

 if( isset($_POST[ 'submit' ]) ){
 //Do checks
 // if all checks pass do your thing.
 //      redirect.... header();
 exit;
 }
 // you could then do if( isset($_POST['name']) ){ echo 'name'; } to repopulate the fields so you don't irritate the user.

如果您仍然坚持这样做仍然使用header()来重定向您的用户。 (在我看来,用户体验不是很好......用户必须重新填写所有数据。)

答案 2 :(得分:-1)

您可以发布到您的身份验证页面,检查他们是否有空白字段或其他内容,然后通过

重定向
header(Location:<your url here>?error=1);

返回原始页面并让该页面检查GET变量$_GET['error']。如果该变量为1,则显示一些错误。

这是你在找什么?