Я новичок в 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();
?>
Вам будет намного лучше проверять форму на стороне сервера с помощью PHP. Проверка Javascript может быть легко обойдена кем угодно, отключив Javascript в своем браузере. –
Я хочу, чтобы процесс валидации выполнялся точно так же, как google, где проверка выполняется в то время, когда мы покидаем поле ввода. Можете ли вы предложить что-то для этого? – RDX
@ChrisWhite проверка на стороне сервера всегда должна быть выполнена, но это не значит, что вы также не должны проверять на стороне клиента, в большинстве случаев это уменьшит количество запросов на сервер. –