이 질문에 많은 시간이 걸렸지 만 답변은 게시 된 스크립트에만 국한된 것으로 알고 있으며 현재 지식으로는 수정 된 스크립트에서 내 스크립트로 이행하는 것.PHP가 아래에 표시된 echo와 같은 페이지에 양식을 제출하십시오.
이 모두가 정상적으로 작동합니다. 동일한 페이지에서 제출되어 오류에 대한 피드백을 제공하지만 양식 아래에 오류가 표시되기 때문에 사용자가 잘못 입력 한 내용을 변경하고 다시 입력하는 것이 편리합니다. 제출하십시오.
jQuery/Ajax를 사용하는 경우에만 게시 할 수있는 질문부터 수집 할 수 있습니다.
내 스크립트 :
<?php
if(isset($_POST['submit'])){
require "connection.php";
$username = $_POST["username"];
$password = $_POST["password"];
$email = $_POST["email"];
$repeat_password = $_POST["repeat_password"];
$username_query = mysql_query("SELECT id FROM users WHERE username = '$username'");
$email_query = mysql_query("SELECT id FROM users WHERE email = '$email'");
if($username == "" || $password == "" || $repeat_password == "" || $email == ""){
die("All boxes must be filled out!");
}//^Checking if all boxes have been filled out
else {
if (!ctype_alnum($username)){
die("Username can only contain letters and numbers");
}//^Checking if username is alphanumeric
else {
if (strlen($username) < 6 || strlen($username) > 15){
die("Username must be between 6-15 characters.");
}//^Checking if username is between 6-15 characters
else {
if (mysql_num_rows($username_query) != 0){
die("Username is taken, please choose another.");
}//^Checking if username exists in database
else {
if (!preg_match("/[0-9]/",$password)){
echo "password doesnt contain a number";
}
else {
if ($password != $repeat_password){
die("Passwords do not match");
}//^Checking if password and repeat_password match
else {
if (strlen($password) < 6){
die("Password must be atleast 6 characters long.");
}//^Checking if password is longer than 6 characters
else {
if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
die("E-mail address is not vaild.");
}//^Checking if e-mail address is valid
else {
if (mysql_num_rows($email_query) != 0){
die("This e-mail address has already been used to create a different account.");
}//^Checking if e-mail address has already been used
else {
mysql_query("INSERT INTO users (username, password, email, signup_date) VALUES ('$username', '$password', '$email', CURDATE())") or die(mysql_error());
echo "Account succesfully created, welcome ".$username."!";
}
}
}
}
}
}
}
}
}
exit;
}
//
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table>
<tr>
<td>
Username:
</td>
<td>
<input type="text" name="username">
</td>
</tr>
<tr>
<td>
Password:
</td>
<td>
<input type="password" name="password">
</td>
</tr>
<tr>
<td>
Repeat password:
</td>
<td>
<input type="password" name="repeat_password">
</td>
</tr>
<tr>
<td>
E-mail:
</td>
<td>
<input type="email" name="email">
</td>
</tr>
<tr>
<td colspan="2">
<center><input type="submit" name="submit"></center>
</td>
</tr>
</table>
</form>
나는 그것에 대해 실제로 생각하지 않았습니다. 개선 할 수있는 방법을 제안 할 수 있습니까? – Daniel
@ user3570991 정확히 무엇입니까? 오류를 출력하는 방법? –
나는 내 대답을 편집하고 충고를 연장했다. –