0

我的代码是这样的,我想删除以下通知:

1. Notice: Undefined index: name 
2. Notice: Undefined index: website 
3. Notice: Undefined index: description

另外,这个代码在我刷新网页时自动添加数据如何摆脱?

<?php
{    
     // Instructions if $ _POST [ 'name'] exists    
    }
    $wpdb->query("insert into ".PRO_TABLE_PREFIX."tutorial ( name, website, description )
    values('{$_POST['name']}','{$_POST['website']}','{$_POST['description']}')");
    ?>
4

3 回答 3

1

您需要做的是在尝试使用它们之前检查您需要的索引是否确实存在并且不为空。

if ( isset ( $_POST['name'] ) && ! empty ( $_POST['name'] ) &&
     isset ( $_POST['website'] ) && ! empty ( $_POST['website'] ) &&
     isset ( $_POST['description'] ) && ! empty ( $_POST['description'] ))
{
    $wpdb->query("insert into ".PRO_TABLE_PREFIX."tutorial ( name, website, description )
    values('{$_POST['name']}','{$_POST['website']}','{$_POST['description']}')");
}

要摆脱刷新后再次添加的帖子,您可以在发布后重定向到相同的 URL。这样它会从 URI 中删除 POST。

header ( 'location : http://myDomain.com/myUrl.php' );

这个重定向当然只会在我们之前创建的 if 语句中被调用,并且是您对 POST 执行的最后一件事。

于 2012-12-10T06:43:54.703 回答
1

你应该使用isset()

例如

if (isset($_POST['name']){
  echo $_POST['name'];
}

作为旁注,请阅读有关$wpdb 类的这篇文章,看起来您的代码没有遵循那里的指南。

于 2012-12-10T06:42:15.473 回答
0

您应该使用isset变量检查这些变量是否正确分配。

现在您的第二个问题是,如果您刷新页面,则会将相同的值添加到数据库中。提交表单浏览器后将这些值保留在内存中,因此如果您尝试忽略此问题,请执行以下操作:

  <?php
 {    
 // Instructions if $ _POST [ 'name'] exists    
}
$wpdb->query("insert into ".PRO_TABLE_PREFIX."tutorial ( name, website, description )
values('{$_POST['name']}','{$_POST['website']}','{$_POST['description']}')");
header('Location:/path/to/your/file.php');
?>

在将值添加到数据库之后,您将被重定向到所有提交的变量都消失的同一页面。

于 2012-12-10T07:52:17.417 回答