0

私のコードはこれで、次の通知を削除したいと思います。

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

また、このコードは、Webページを更新するときにデータを自動的に追加します。

<?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

isset()を使用する必要があります

例えば

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

補足として、 $wpdb クラスに関するこの記事を読んでください。あなたのコードはそこのガイドラインに従っていないようです。

于 2012-12-10T06:42:15.473 に答える
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 に答える
0

issetこれらの変数が正しく割り当てられているかどうかを変数チェックに使用する必要があります。

そして今、ページを更新すると同じ値がデータベースに追加されるという2番目の問題。フォーム ブラウザを送信した後、これらの値はメモリに保持されるため、この問題を無視しようとする場合は、次のようにします。

  <?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 に答える