在php中注册表格,只需重新加载同一页面

时间:2019-07-16 08:36:49

标签: php html sql

我有一个注册页面,供可以使用电子邮件进行注册,激活电子邮件和Google验证码的用户使用。我的注册代码如下:

<?php
require_once('connect.php');
include('config.php');
include('recaptchalib.php');
$response = null;
$reCaptcha = new ReCaptcha($secret);
if(isset($_POST) & !empty($_POST)){

	if($_POST['g-recaptcha-response']){
		$response = $reCaptcha->verifyResponse(
				$_SERVER['REMOTE_ADDR'],
				$_POST['g-recaptcha-response']
			);

	}

	if($response != null && $response->success){
		$username = mysqli_real_escape_string($connection, $_POST['username']);
		$verification_key = md5($username);
		$email = mysqli_real_escape_string($connection, $_POST['email']);
		$password = md5($_POST['password']);
		$passwordagain = md5($_POST['passwordagain']);
		if($password == $passwordagain){
			$fmsg = "";

			$usernamesql = "SELECT * FROM `usermanagement` WHERE username='$username'";
			$usernameres = mysqli_query($connection, $usernamesql);
			$count = mysqli_num_rows($usernameres);
			if($count == 1){
				$fmsg .= "Username exists in Database, please try different user name";
			}

			$emailsql = "SELECT * FROM `usermanagement` WHERE email='$email'";
			$emailres = mysqli_query($connection, $emailsql);
			$emailcount = mysqli_num_rows($emailres);
			if($emailcount == 1){
				$fmsg .= "Email exists in Database, please reset your password";
			}


			echo $sql = "INSERT INTO `usermanagement` (username, email, password, verification_key) VALUES ('$username', '$email', '$password', '$verification_key')";
			$result = mysqli_query($connection, $sql);
			if($result){
				$smsg = "User Registered succesfully";
				$id = mysqli_insert_id($connection);
					require 'PHPMailer/PHPMailerAutoload.php';

					$mail = new PHPMailer;

					$mail->isSMTP();
					$mail->Host = $smtphost;
					$mail->SMTPAuth = true;
					$mail->Username = $smtpuser;
					$mail->Password = $smtppass;
					$mail->SMTPSecure = 'ssl';
					$mail->Port = 465;

					$mail->setFrom('admin@teia.website', 'BookTheParty');
					$mail->addAddress('zubairoliyatofficial@gmail.com', 'Zubair Nazer');

					$mail->Subject = 'Verify Your Email';
					$mail->Body    = "http://localhost/user-management/verify.php?key=$verification_key&id=$id";
					$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

					if(!$mail->send()) {
					    echo 'Message could not be sent.';
					    echo 'Mailer Error: ' . $mail->ErrorInfo;
					} else {
					    echo 'Message has been sent';
					}

			}else{
				$fmsg .= "Failed to register user";
			}
		}else{
			$fmsg = "Password not matching";
		}
	}
}
?>
<html>
<head>
<title>User Registration Script in PHP & MySQL</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" >

<link rel="stylesheet" href="styles.css" >
<script   src="https://code.jquery.com/jquery-3.1.1.js" ></script>
<script src='https://www.google.com/recaptcha/api.js'></script>
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script type="text/javascript">

$(document).ready(function() {
	$('#usernameLoading').hide();
	$('#username').keyup(function(){
	  $('#usernameLoading').show();
      $.post("check.php", {
        username: $('#username').val()
      }, function(response){
        $('#usernameResult').fadeOut();
        setTimeout("finishAjax('usernameResult', '"+escape(response)+"')", 400);
      });
    	return false;
	});
});

function finishAjax(id, response) {
  $('#usernameLoading').hide();
  $('#'+id).html(unescape(response));
  $('#'+id).fadeIn();
} //finishAjax
</script>

</head>
<body>
	<div class="container">
      <?php if(isset($smsg)){ ?><div class="alert alert-success" role="alert"> <?php echo $smsg; ?> </div><?php } ?>
      <?php if(isset($fmsg)){ ?><div class="alert alert-danger" role="alert"> <?php echo $fmsg; ?> </div><?php } ?>
      <form class="form-signin" method="POST">
        <h2 class="form-signin-heading">Please Register</h2>
        <div class="input-group">
		  <span class="input-group-addon" id="basic-addon1">@</span>
		  <input type="text" name="username" id="username" class="form-control" placeholder="Username" value="<?php if(isset($username) & !empty($username)){ echo $username; } ?>" required>
			<span id="usernameLoading" class="input-group-addon"><img src="loading.gif" height="30px" alt="Ajax Indicator" /></span>
		</div>
		<span id="usernameResult"></span>
        <label for="inputEmail" class="sr-only">Email address</label>
        <input type="email" name="email" id="inputEmail" class="form-control" placeholder="Email address" value="<?php if(isset($email) & !empty($username)){ echo $email; } ?>" required autofocus>
        <label for="inputPassword" class="sr-only">Password</label>
        <input type="password" name="password" id="inputPassword" class="form-control" placeholder="Password" required>
        <label for="inputPassword" class="sr-only">Password Again</label>
        <input type="password" name="passwordagain" id="inputPassword" class="form-control" placeholder="Password Again" required>
        <div class="g-recaptcha" data-sitekey="6LeQ3K0UAAAAAM4QHKFXmNL_6xrCqa6qlSS1NdXi"></div>
        <button class="btn btn-lg btn-primary btn-block" type="submit">Register</button>
        <a class="btn btn-lg btn-primary btn-block" href="login.php">Login</a>
      </form>
</div>
<?php require_once('credits.php'); ?>
</body>
</html>

现在,当用户尝试注册时,没有错误显示,并且值未添加到数据库中。另外,它只是重新加载页面。谁能告诉我我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:1)

我设法发现的唯一一件事是,当您执行插入操作时,您正在尝试在回显中定义一个变量。尝试像下面这样单独使用'$ sql'...希望这会有所帮助:)

<?php 
$sql = "INSERT INTO `usermanagement` (username, email, password, verification_key) VALUES ('$username', '$email', '$password', '$verification_key')";

$result = mysqli_query($connection, $sql);
	?>