ホームページ > バックエンド開発 > PHPチュートリアル > 質問したいのですが、登録時にユーザー名が存在するかどうかを確認し、以下のようにユーザー名が存在していれば登録できます。

質問したいのですが、登録時にユーザー名が存在するかどうかを確認し、以下のようにユーザー名が存在していれば登録できます。

WBOY
リリース: 2016-06-20 12:42:47
オリジナル
1049 人が閲覧しました

<script>$(function(){	//检测用户名是否存在	 $("#name").blur(function(){	        //$parent=$("#user_name").parent();	       $.get("deal.php",{username:$("#name").val()},	    	function(data){		    	if(data.status==1){	    	   $("#namediv").html('<font color=red>用户名已存在</font>');	           //$parent.append('<span>'+data+'</span>');		    	}	      },'json');	 });	//提交注册	 	    $("#sub").click(function(){	   //var rule = /^[-\da-zA-Z!@#$%^&*_]*$/;	   var reg =/^[a-za-z0-9]+$/;	   var v = $.trim($("#password").val());	  	  if($("#name").val()=='' || $.trim($("#password").val())=='' || $("#confirmpassword").val()==''){ 	 	    if($.trim($("#name").val())==''){ 	    	     $("#namediv").html('<font color=red>用户名不能为空</font>');	    	     $("#name").focus();     	    	 }else{	    	     $("#namediv").html('');	    	 }	    	 if($.trim($("#password").val())==''){	    	     $("#pwddiv").html('<font color=red>密码不能为空</font>');	    	     $("#password").focus();     	    	 }else{	    	     $("#pwddiv").html('');	    	 }             if($("#confirmpassword").val()==''){            	 $("#confirmpwd").html('<font color=red>确认密码不能为空</font>');	    	     $("#confirmpassword").focus();             }else{            	 $("#confirmpwd").html('');             }    	              }else if($("#confirmpassword").val()!=$("#password").val()){    	    $("#confirmpwd").html('<font color=red>确认密码不正确</font>');    	    $("#namediv,#pwddiv").html('');       }else if(reg.test(v)){    	   $("#pwddiv").html('<font color=red>密码格式不正确</font>');    	   $("#namediv,#confirmpwd").html('');         	          }else{  		   $.post("deal.php",{name:$("#name").val(),password:$("#password").val(),code:$("#TextBox2").val()},	       function(data){		   if(data.status==1){	         alert('注册成功');	         $("#namediv,#pwddiv,#confirmpwd").html('');         		  		   }else{			 alert('验证码错误!');			 $("#namediv,#pwddiv,#confirmpwd").html('');		    }	      },'json');      }  }); });	</script>
ログイン後にコピー



に返信議論 (解決策)

コードは役に立ちません。
バックエンドも判断する必要があります。

この問題はすべてバイパスされます。これはサーバー側で行われ、フロントエンドの js はより良いエクスペリエンスを提供するためのものです。
最終的な提出手順にユーザーの存在判定を追加するだけです。

クライアント側の検証はすべてバイパスできます。これは、より良いエクスペリエンスを提供するためだけにサーバーに任せる必要があります。
最終的な提出手順にユーザーの存在判定を追加するだけです。

//判断是GET方式还是POSTif(($_SERVER['REQUEST_METHOD'] == 'GET')){	$name1=$_GET['username'];	$sql="select * from users where name='$name1'";	$result=mysql_query($sql);	$num=mysql_num_rows($result);	if($num==0){		echo '{"status": "2"}';	}	else{		//echo"<span style='color:red'>用户名存在</span>";		echo '{"status": "1"}';	} }else{	$name=trim($_POST['name']);	$password = trim(md5($_POST['password']));	$code=trim($_POST['code']);	if(strlen($code)>1 and $code!==$_SESSION['code']){		$sql = "insert into users (name,password) values ('{$name}','{$password}');"; 	$res = mysql_query($sql);	if($res){		echo '{"name": "'.$name.'","password": "'.$password.'","status": "1"}'; 	}	}else{		echo '{"status": "2"}'; 	}}
ログイン後にコピー
これはバックエンド処理プログラムですが、どのように判断しますか?

$.post() を実行するときに、$("#namediv").html() かどうかを判断しませんでした。は空です (ユーザー名が存在します)
つまり、ユーザー名が存在するかどうかに関係なく、$.post() が実行されます

$sql = "ユーザー (名前,パスワード) 値に挿入を実行しています('{$name }','{$password}');"; 、ユーザー名がすでに存在するかどうかもチェックしません
つまり、ユーザー名が存在するかどうかに関係なく、$.post()$res = mysql_query($sql); will Executed

これら 2 つの省略が、アカウント名が存在し、まだ登録できる理由です

$("#namediv" を判断しませんでした) ) $.post() を実行するとき、html() が空かどうか (ユーザー名が存在するかどうか)
つまり、ユーザー名が存在するかどうかに関係なく、$.post() が実行されます

$sql = "insert into users (name,password) )values ('{$name}','{$password}');"; また、ユーザー名が既に存在するかどうかもチェックしません
、ユーザー名が存在するかどうかに関係なく、$.post()$res = mysql_query($sql); が実行されます

これら 2 つの省略がユーザー名を登録できる理由です

私のコードは非常に無理があると思います。送信するときにユーザーを検出するためのクリックイベントを作成します。登録時にユーザー名が存在するかどうかがわからないように、書き方を変更する必要があると思います。 。

面倒だと思いませんか?
フロントデスクで JS を使用して簡単なフィールド検証を実行します。重複しない登録を実現したい場合は、バックグラウンドで実行します。例: Zhang San
まず、データベースに Zhang San が存在するかどうかを確認します。そうでない場合は、そのままにしておきます。存在する場合は、それが完了していることを示すメッセージが表示されます。

重要なのは、PHP 側の検証が簡単すぎるということです。 SQL インジェクションに問題がある可能性があります。 。 。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート