0

これが私のPHPコードです。問題は$_POST[...]?

PHP:

<?php
require('connect.php');
$name = $_POST['name'];
$comment = $_POST['comment'];
$submit = $_POST['submit'];
if($submit)
{
    if($name&&$comment)
    {
    $query=mysql_query("INSERT INTO comment (id,name,comment) VALUES ('','$name','$comment')");
    header("Location: success.php");
    }
    else
    {
        echo "Lūdzu aizpildi visus logus.";
    }
}
?>

フィールドとテキストエリアのフォーム。

HTML:

<form action="help-add-comment.php" method="POST">
  <label>Jūsu vārds:  </label><br /><input type="text" name="name" size="25" value="<?php echo "$name" ?>" /><br /><br />
  <label>Ziņojums:  </label><br /><textarea name="comment" cols="25" rows="7"></textarea><br /><br />
  <input type="submit" class="button button-red" name="submit" value="Pievienot" /><br/>
</form>

これは私の結果です: 未定義のインデックス

4

3 に答える 3

2

配列内に存在しないフィールドにアクセスしようとしていますが$_POST、警告は正しいです。これらのフィールドが実際に存在する場合にのみ処理する必要があるため、実際にフォームのポストバックに応答している場合は、リクエスト メソッドを確認してください。

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
  $name = $_POST['name'];
  $comment = $_POST['comment'];
  $submit = $_POST['submit'];
  // Handle rest of postback
}

これにより、悪意のあるユーザーがリクエストを偽装して警告をトリガーし、アプリケーションの内部情報を取得できることに注意してください。これは、POST 値を安全に取得することで修正できます。

function getPostValue($name, $default = null)
{
  return isset($_POST[$name]) ? $_POST[$name] : $default;
}
$name = getPostValue('name');

エラー抑制演算子 ( ) を使用して同じ効果を得ることができますが@、パフォーマンスが悪く、このような単純なケースでは不適切なスタイルと見なされます。

于 2014-01-04T20:48:51.150 に答える