2013-08-13 2 views
1

Я новичок в PHP, у меня была проблема с регистрацией пользователя в базе данных. Я хочу сначала проверить форму, используя javascript, а затем выполнить действие формы, которое перенаправит его на другую страницу, содержащую PHP-код и SQL-запросы. Но проблема в том, что он проверяет только имя пользователя и электронную почту. Javascript не проверяет никакое другое поле. register.phpУ меня проблемы с проверкой в ​​javascript

<script type = "text/javascript"> 
function initthis() { 
    document.getElementById("signup").disabled = true; 
} 

function dis_enable_submit() { 
    if (document.getElementById("t&d").checked == 1) { 
     document.getElementById("signup").disabled = false; 
     document.getElementById("signup").className = "enabled"; 
    } else { 
     document.getElementById("signup").disabled = true; 
     document.getElementById("signup").className = "disabled"; 

    } 
} 
window.onload = initthis; 

function validateForm() { 
    var a = document.forms["register"]["duser"].value; 
    var b = document.forms["register"]["demail"].value; 
    var c = document.forms["register"]["dcemail"].value; 
    var d = document.forms["register"]["dpwd"].value; 
    var e = document.forms["register"]["dcpwd"].value; 

    if (a == null || a == "") { 
     document.getElementById("duser").style.background = "#FDFCDC"; 
     return false; 
    } 

    var atpos = b.indexOf("@"); 
    var dotpos = b.lastIndexOf("."); 
    if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= b.length) { 
     document.getElementById("demail").style.background = "#FDFCDC"; 
     return false; 
    } else { 
     document.getElementById("tick").src = "images/tick.gif"; 
    } 
    if (c == null || c == "") { 
     document.getElementById("dcemail").style.background = "#FDFCDC"; 
     alert("Email doesn't match"); 
     return false; 
    } 

    if (c != b) { 
     alert("Email doesn't match"); 
     return false; 
    } 

    if (d == null || d == "") { 
     document.getElementById("dpwd").style.background = "#FDFCDC"; 
     return false; 
    } 

    if (e == null || e == "") { 
     document.getElementById("dcpwd").style.background = "#FDFCDC"; 
     alert("Password doesn't match"); 
     return false; 
    } 


    if (e != d) { 
     alert("Password doesn't match"); 
     return false; 
    } 


} 

Это форма, которая должна быть подтвердить

<form name="register" onsubmit="return validateForm();" method="post" action="getdata.php"> 
    <table border="0"> 
     <tr> 
      <td colspan="2" style="background:url('images/register.jpg') no-repeat; height:50px; width: 350px;"></td> 
     </tr> 
     <tr> 
      <td> 
       <label>*Username:</label> 
      </td> 
      <td> 
       <input name="duser" id="duser" value="" type="text" spellcheck="false" size="20" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <label>*Email:</label> 
      </td> 
      <td> 
       <input name="demail" id="demail" value="" type="text" size="20" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <label>*Confirm Email:</label> 
      </td> 
      <td> 
       <input name="dcemail" id="dcemail" value="" type="text" size="20" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <label>*Password:</label> 
      </td> 
      <td> 
       <input name="dpwd" id="dpwd" value="" type="password" size="20" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <label>*Confirm Password:</label> 
      </td> 
      <td> 
       <input name="dcpwd" id="dcpwd" value="" type="password" size="20" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <label>*Gender:</label> 
      </td> 
      <td> 
       <input type="radio" name="gender" id="gender" value="1">Male 
       <input type="radio" name="gender" value="0">Female</td> 
     </tr> 
     <tr> 
      <td> 
       <label>Birthday:</label> 
      </td> 
      <td> 
       <input name="bday" id="bday" type="date" size="20" /> 
      </td> 
     </tr> 
     <tr> 
      <td align="middle"> 
       <input id="signup" class="button" type="submit" value="Sign Up" style="font-size:15px;" /> 
      </td> 
     </tr> 
    </table> 
</form> 

getdata.php

<?php 
$_POST[duser]; 
$_POST[demail]; 
$_POST[dpwd]; 
$_POST[gender]; 

$con=mysqli_connect("localhost","root","root","MyDB"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

mysqli_query($con,"INSERT INTO Users (UserName, Email, Password, Gender) 
VALUES ('$_POST[duser]', '$_POST[demail]','$_POST[dpwd]',$_POST[gender])"); 

mysqli_close($con); 


header("Location: successful.php"); 
exit(); 

?> 
+3

Вам будет намного лучше проверять форму на стороне сервера с помощью PHP. Проверка Javascript может быть легко обойдена кем угодно, отключив Javascript в своем браузере. –

+0

Я хочу, чтобы процесс валидации выполнялся точно так же, как google, где проверка выполняется в то время, когда мы покидаем поле ввода. Можете ли вы предложить что-то для этого? – RDX

+1

@ChrisWhite проверка на стороне сервера всегда должна быть выполнена, но это не значит, что вы также не должны проверять на стороне клиента, в большинстве случаев это уменьшит количество запросов на сервер. –

ответ

1

FYI: Будьте более описательный, когда просят о помощи или просто объяснить что вы хотите сделать, вы получите быстрый ответ, а не копирование кода из Интернета и удивление, почему оно не работает. Я вижу, что у вас есть функция dis_enable_submit(), но я не вижу, как вы ее называете. Вы также можете использовать jsfiddle.net/, если у вас такие длинные файлы.

+0

Здесь я вызова dis_enable_submit функция() ' <вход ID = тип "T & d"= значение "флажок"= "0" TabIndex = "3" OnClick = "dis_enable_submit();"/> Я согласен всеTerms & Conditions ' – RDX

0

Вот пример кода.

<head> 
     <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
      <script> 
      $.validator.setDefaults({ 
      submitHandler: function() { alert("submitted!"); } 
     }); 

     $().ready(function() { 
      // validate the comment form when it is submitted 
      $("#commentForm").validate(); 

     }); 
     </script> 

    </head> 



    <form id="commentForm" class="formular" method="post" action="" style="width:600px"> 
       <p class="name"> 
        <input value="" class="text-input" type="text" name="fullname" id="fullname" required /> 
        <label for="fullname">Name</label> 
       </p> 
       <p class="email"> 
        <input value="" class="text-input" type="text" name="email" id="email" required /> 
        <label for="email">E-mail</label> 
       </p> 
       <p class="web"> 
        <input type="text" name="web" id="web" /> 
        <label for="web">Website</label> 
       </p> 
       <p class="text"> 
        <textarea name="text" class="text-input" id="comment" required></textarea> 
       </p> 
       <p class="submit"> 
        <input type="submit" id="submit" value="Send" /> 
       </p> 
      </form> 
+0

Я хочу использовать javascript, поскольку я не знаю о JQuery. – RDX

+0

JQuery - это библиотека JavaScript, и вы можете делать с ней много всего. Есть много примеров онлайн, и вот где я нашел это – AdRock

0

Он не запущен validateForm() функции, потому что вы не вызвали эту функцию в любом месте.

Предложение на основе существующего кода:

<input onclick="return validateform()" id="signup" class="button" type="submit" value="Sign Up" style="font-size:15px;" /> 

Это должно запустить проверку при нажатии на кнопку, и только завершить ПРЕДСТАВИТЬ, если эта функция возвращает TRUE.

Таким образом, вы также должны добавить return true; до конца функции так, если она проходит все тесты, то есть не делать return false; это будет return true, который не является значением по умолчанию.

+0

Я назвал функцию valdateForm() здесь '

' – RDX

+0

Входы, я пропустил это. Сожалею. – RiggsFolly

+0

@RiggsFolly Большинство из нас это делало, оно изначально не появилось из-за проблем с форматированием кода кода :) – Harry

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