как устранить пробел в формах в php - PullRequest
1 голос
/ 14 октября 2009

как я могу запретить отправку формы, если она содержит только пробел? например, пользователь нажимает пробел на поле, пробел будет рассматриваться как символ, поэтому формы отправляются. как я могу предотвратить это в php?

Ответы [ 4 ]

6 голосов
/ 14 октября 2009

Для PHP - проверка на стороне сервера (после отправки формы)

Комбинация trim () и empty () вернет true, если передана строка с пробелом.

$a = ' ';
$a = trim($a);
if (empty($a)) print 'Empty!'; // Empty!

Sidenote: В нормальных условиях всегда неплохо обрезать () пользовательский ввод.

Для Javascript - проверка на стороне клиента (перед отправкой формы)

Используйте событие onSubmit для запуска функции проверки:

<form onSubmit="validate()">
  <input type="text" id="myInput" />
  <input type="submit" value="submit" />
</form>

<script type="text/javascript">
function validate() {
  myInput = document.getElementById('myInput');
  if (myInput.value.match(/^s+$/) || myInput.value == '') {
    alert('No Empty Values!');
    return false;
  }
}
</script>
2 голосов
/ 14 октября 2009

Используйте trim(), а затем проверьте нулевые значения.

Майк Б представляет хороший момент. Вы можете предотвратить отправку формы с помощью Javascript. Если вы используете PHP, форма будет отправлена, но вы можете представить эту же форму пользователю с сообщением об ошибке.

0 голосов
/ 14 октября 2009

Как только ваши формы становятся более сложными, в Jquery есть замечательный плагин для этого, называемый validate , который обеспечивает расширенную проверку форм.

+ 1 к плану B. Всегда проверяйте тот же самый ввод еще раз в php, поскольку ничто не мешает пользователю просто создать свою собственную форму и отправить ее на свою страницу.

0 голосов
/ 14 октября 2009

HTML:

<form onsubmit="return validate(this);">

Javascript:

function validate(form) {
    ok = true;
    for (var i = 0, il = form.elements.length; i < il; ++i) {
        form.elements[i].value = form.elements[i].value
                                    .replace(/^\s\s*/, '')
                                    .replace(/\s\s*$/, '');
        ok &= !!form.elements[i].value;
    }
    if (!ok) alert("Oh hey - type something in these boxes, k?");
    return ok;
}

PHP:

$myVar = trim($_POST['myFormVariable']);
if (!$myVar) {
    echo "Oh hey, you should type something.";
} else {
    doStuff();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...