Советы по регистрации сценариев - PullRequest
2 голосов
/ 01 августа 2009

register.php

if (isset($_POST['submit'])) {

$username = mysql_real_escape_string(trim($_POST['username']));    
$email = mysql_real_escape_string(trim($_POST['email']));
$passwd = mysql_real_escape_string(trim($_POST['passwd']));

if (empty($username)) {
   die ('You need to enter a username.');
}...... else insert



}

?>

Хорошо ли использовать mysql_real_escape_string и обрезать, как это? Или это лучший способ убедиться, что никто не может зарегистрировать пустые имена пользователей и т. Д.

Спасибо

Ответы [ 4 ]

2 голосов
/ 01 августа 2009

Я не вижу проблем с этим кодом. Обычно я сначала выполняю trim (), затем выполняю все необходимые проверки, а затем mysql_escape () (сохраняю mysql_escape до последнего возможного момента. Если единственная проверка, которую вы собираетесь выполнить, - это проверить пустые строки, то я не вижу проблем.

1 голос
/ 01 августа 2009

Да и нет.

Часть "да"

Хорошо санировать пользовательский ввод для SQL-инъекций. И поскольку это не повлияет на пустую строку, вы не будете создавать ложные срабатывания или другие побочные эффекты с помощью этого метода.

Часть "нет"

Технически говоря, вы не хотите фильтровать данные слишком рано. Сначала я обрезал бы значение, проверил бы значение и ТО, чтобы избежать запроса, когда вы знаете, что данные верны.

if ( isset( $_POST['submit'] ) )
{
  $username = trim( $_POST['username'] );

  if ( '' == $username )
  {
    die ( 'You need to enter a username.' );
  } else {
    mysql_query( sprintf(
        "INSERT INTO table (username) VALUES('%s')"
      , mysql_real_escape_string( $username )
    ) );
  }
}
0 голосов
/ 01 августа 2009

Вы должны использовать оба. Я также рекомендую использовать filter_var , потому что это также очистит данные. Есть также много других вещей, чтобы рассмотреть.

  • Имена пользователей, вероятно, должны состоять только из букв и цифр
  • Письма должны быть в правильном формате
  • Вы должны обрезать () все
0 голосов
/ 01 августа 2009

Используйте strlen () вместо empty () при проверке строки длиной 0 с функцией empty ...

Следующие вещи считаются быть пустым:

* "" (an empty string)
* 0 (0 as an integer)
* "0" (0 as a string)
* NULL
* FALSE
* array() (an empty array)
* var $var; (a variable declared, but without a value in a class)

Как видите, не все эти значения являются пустой строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...