3 に答える
if
次のように、ステートメントを囲む括弧を追加するのを忘れました。
if(isset($_POST['user_input']) && isset($_POST['search_for'])
&& isset($_POST['replace_with']) && !empty($_POST['user_input'])
&& !empty($_POST['search_for']) && !empty($_POST['replace_with'])) {
echo $user_input = $_POST['user_input'];
echo $search_for = $_POST['search_for'];
echo $replace_with = $_POST['replace_with'];
}
上記のコードは、あなたが望むことをするはずです。
$ _POST
またはを使用$ _GET
してフォームから変数を取得すると、次のエラーが発生する場合があります。
Notice: 行 '現在の行' の '実行中の php ファイルのパス' の未定義のインデックス 'テーブルのフィールド'
このエラーは、PHP エラー レポート設定が原因で表示されます。通常、変数が適切に設定されていない場合に表示されます。この問題を処理するには、次の 2 つの方法があります。
1.$_POST['action']
または$GET['action']
が設定されていることを確認してから使用してください。例えば:
if (!isset($_POST['action'])) {//your pure stuff }
if (!isset($_GET['action'])) {//your pure stuff }
2.通知警告を抑制する
PHP.ini の error_reporting 変数を変更すると、警告が抑制されることに注意してください。error_reporting は、通知とコーディング標準の警告以外のすべてのエラーを表示するように設定できます: error_reporting = E_ALL & ~E_NOTICE
<?php error_reporting (E_ALL ^ E_NOTICE); ?>
しかし、私の個人的な提案は、2つの方法を使用する代わりに警告を解決することです
更新された質問の答え
囲み括弧を追加していない{}
ため、if の後の 1 行だけが if 本体と見なされ、if の結果が true か false かに関係なく、2 番目と 3 番目のエコーが実行されます。
そのはず
if(isset($_POST['user_input']) && isset($_POST['search_for'])
&& isset($_POST['replace_with']) && !empty($_POST['user_input'])
&& !empty($_POST['search_for']) && !empty($_POST['replace_with'])) {
echo $user_input = $_POST['user_input'];
echo $search_for = $_POST['search_for'];
echo $replace_with = $_POST['replace_with'];
}
フォームが投稿される前に変数を使用している場合、たとえば$var = $_POST['var'];
、エラーが返されます。
送信ボタンが押されたかどうかを確認することをお勧めします。
例:
if(isset($_POST['submit'])){
//form has been posted
}
次に、エラーをスローしない場合は、使用するすべての投稿変数が設定されていることを確認します。
例:
$error = false;
//['submit'] is the button used to post the form.
if(isset($_POST['submit'])){
$testVar = (isset($_POST['testVar']) && strlen($_POST['testVar']) > 0 ? $_POST : $error[] = 'Please enter something.');
if(!$error){
//Submit for
}
else{
foreach($error as $e){
echo $e;
}
}
}