2014-12-03 2 views
0

У меня есть простая форма регистрации html с onsubmit = "return validateForm()", где validateForm() - это javascript, чтобы обеспечить правильность ввода данных, а поля по электронной почте и паролю соответствуют их полям подтверждения.Как не запускать скрипт php при неудачной проверке JavaScript?

Действие формы установлено в add.php. add.php добавляет ввод в базу данных mysql. Как javascript, так и php работают отлично, однако даже когда javascript предупреждает об ошибке, например, «слишком короткий пароль». скрипт php запускается в любом случае и новая запись, сделанная в базе данных.

Я хотел бы, чтобы PHP-скрипт работал только при успешной проверке javascript, и пользователь оставался на одной странице, если какая-либо проверка не прошла, как это делается?

Я могу добавить код, если необходимо, но я думаю, что ответ здесь будет общим.

EDIT:

, например, здесь код для проверки полей имени:

function checkName() 
{ 
    var fName = document.getElementById("firstName"); 
    var lName = document.getElementById("lastName"); 
    if (fName.value.length >= 2 && fName.value.match(/^[A-Za-z]+$/) && lName.value.length >= 2 && lName.value.match(/^[A-Za-z]+$/)) 
     { 
      return true; 
     } 
    else 
     { 
      return false; 
     } 
} 

function validateForm(){ 
if (checkName() == false) 
     { 
      alert("First and Last Name must be at least 2 characters long and contain only alphabetic characters"); 
     document.getElementById("fName").focus(); 
     document.getElementById("fName").select(); 
     return false; 
    } 

}

+0

имеют 'validateForm()' return false on error. Кроме того, вы должны проверить этот материал в php также перед тем, как сделать вставку, потому что это безумно легко обойти проверку JavaScript. –

+0

Это просто школьное задание, безопасность не вызывает беспокойства. Также мой validateForm() возвращает false при ошибке. Я отредактирую исходное сообщение с помощью примерной функции. – user2837791

+0

, если вы вызываете свою функцию, используя onclick = "return validateForm()", она должна остановить форму от отправки, как указал jKuhn – David

ответ

1

ли firstName или fName? Если идентификатор fName не существует, функция ударит ошибку и выйдет, не возвращая ничего, что приведет к появлению предупреждения, но форма для отправки.

+0

id is firstName Я просто назвал переменную fName. Это не имеет значения, не так ли? Я вижу, что мои focus() и select() используют неверный идентификатор, но я исправил их без успеха. – user2837791

+0

Аргумент 'getElementById' должен точно соответствовать идентификатору элемента, а не переменной. – ilikesleeping

+0

да, и идентификатор для элементов firstName и lastName. Однако я просто изменил каждый экземпляр, включая имена var, на firstName и lastName, и он, похоже, работал. Я не понимаю, почему, хотя я мог бы назвать var poopmonkey, если бы захотел? – user2837791

Смежные вопросы