0

フォームからの PHP 変数の検証について少し問題があります。

例: 変数をフォームから PHP ファイルに投稿します。

$event_name = mysql_real_escape_string($_POST['event-name']);
if ($event_name=='' || $event_name==null)
{
    /* send error message */
}

上記のコードを使用したところ、$_POST['event-name'] が空の場合は常にエラーが発生しました。次のように使用した場合、問題/結果はありますか:

$event_name = $_POST['event-name'];
if (mysql_real_escape_string($event_name)=='' || mysql_real_escape_string($event_name)==null)
 {
    /* send error message */
 }

それとも私はそれを間違っていますか?

ありがとう

4

3 に答える 3

1

PHPのissetメソッドは、POSTに何かがあるかどうかを確認するために使用されます。次の方法を使用することをお勧めします。

if (!isset($_POST['event-name']) || $_POST['event-name'] == "")
{
    /* send error message */
}
else
    $event_name = $_POST['event-name'];

mysql_real_escape_stringmysqlクエリを発行する時点でのみ使用してください。

于 2012-05-26T14:34:55.407 に答える
0

私はこれを行うためのより良い方法だと思います:

$clean = array();

if(isset($_POST['event-name']) && ctype_alpha($_POST['event-name']) && trim($_POST['event-name']) != "")
{
  $clean['event-name'] = mysql_real_escape_string($_POST['event-name']);
}
else
{
  // process error message
}
于 2012-05-26T16:13:26.073 に答える
0

E_STRICTエラー報告が有効になっている場合、エラー「undefinedindexevent -name 」が発生した可能性があります。

したがって、変数が空でないかどうかを確認することをお勧めします

 if (!empty($_POST['event-name'])) { 
     $event_name = mysql_real_escape_string ($_POST['event-name']); //espace variables after validation.
 }
于 2012-05-26T14:36:03.457 に答える