-1

私はスタックオーバーフローからこのコードを誰かから入手しました。コピーして試してみましたが、データベースから既存の電子メールアドレスを入力すると、思い通りに動作しません。電子メールアドレスが既に使用されているというエラーが表示されます別のメールを選択してください。しかし、データベースにない電子メール アドレスを送信すると、同じエラーが表示されます。これを修正するにはどうすればよいですか

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(){ //newly added 
$('#submit').click(function() {alert("Email already exists. Please choose a different email");
var emailVal = $('#email').val(); // assuming this is a input text field

$.post('checkemail.php', {'email' : emailVal}, function(data) {
  if (data == 1)
  { 
     $("#registration").submit();
  }
 else
  {

      return false;
  }

 });
 });});
 </script>

  </head>
 <body>

 <form id="registration" name="registration" method="post" action="profile1.php">
 <p>email
 <input type="text" name="email" id="email" />
 </p>
 <p>
 <input type="button" name="submit" id="submit" value="submit" />
 </p>
 </form>
</body>
</html>

ここにphpコードがあります

<?php
include("con.php");

$sql = "SELECT email FROM registered_d WHERE email = " .$_POST['email'];
$select = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($select);

   if (mysqli_num_rows > 0) {
  echo "0"; // email exists
 }else{
  echo "1"; // email doesn't exists
 return;}
?>

誰かがこれを解決するのを手伝ってくれますか

4

5 に答える 5

1

mysqli_num_rowsは関数であるため、そのように使用する必要があります — myseli_num_rows($select).

また、エスケープされていないクエリを使用$_POST['email']することは、不適切で危険な行為であることにも注意してください。SQL

そして、mysqli_fetch_assoc()あなたが持っているかどうかわからないのはなぜですか?

于 2013-10-27T16:15:26.627 に答える
1

alert("Email already exists. Please choose a different email");問題は、送信ボタンが押されたときに呼び出していることです。これにより、何があっても毎回アラートが生成されます。

于 2013-10-27T16:17:22.923 に答える