ugrás a tartalomhoz

jQuery + PHP real-time ellenőrzés

Creative · 2011. Nov. 1. (K), 13.58
Üdv,

Egy korábbi bejegyzésem folytatásaként (http://weblabor.hu/forumok/temak/110205) merült fel probléma. Szeretném elérni, hogy a regisztrációra szolgáló űrlap jelezze nekem, ha a beírt e-mail cím már szerepelne az adatbázisban. Ezt úgy próbáltam megoldani, hogy az e-mail bevitelére szolgáló e-mail mező mellé egy divet helyeztem el, s mikor user begépeli e-mail címét, ajax POST-al egy fájl megkapja a beírt értéket. egy php fájl ezzel az értékkel LIKE -os sql-lekérést hajt végre, s attól függően van-e eredmény, egy bizonyos értéket ad vissza a regelős űrlapot tartalmazó fájlomnak.

Íme az űrlapos forráskód:
  1. <form method="post" action="" enctype="multipart/form-data" name="reg_form" id="reg_form">  
  2.   <span>E-mail</span><input type="text" name="email" id="rmail" autocomplete="off" /><div id="status"></div><br />  
  3.   <span>Jelszó</span><input type="password" name="passcode" id="rpasscode" autocomplete="off" /><br/>  
  4.   <span>Jelszó ismét</span><input type="password" name="passcode2" id="rpasscode2" autocomplete="off" /><br/>  
  5.   <input class="submit" type="submit" id="send_register" value="Regisztráció" />  
  6. </form>  
  7. ...  
  8. <script type="text/javascript">  
  9.   $(document).ready(function() {  
  10.    pic1 = new Image(16, 16);  
  11.    pic1.src = "../images/loader.gif";  
  12.    $("#rmail").change(function() {  
  13.     var usr = $("#rmail").val();  
  14.     if(usr.length >= 4) {  
  15.      $("#status").html('<img src="../images/loader.gif">');  
  16.      $.ajax({  
  17.       type: "POST",  
  18.       url: "../includes/check.php",  
  19.       data: "email="+ usr,  
  20.       success: function(msg){  
  21.        $("#status").ajaxComplete(function(event, request, settings){  
  22.         if(msg == 'OK'){  
  23.          $("#rmail").removeClass('object_error');  
  24.         } else {  
  25.          $("#rmail").addClass("object_error");  
  26.          $(this).html(msg);  
  27.         }  
  28.        });  
  29.       }  
  30.      });  
  31.     } else {  
  32.      $("#rmail").addClass("object_error");  
  33.     }  
  34.    });  
  35.   });  
  36. </script>  
Az .object_error annyit tesz, hogy egy 1px -es keretet átszínez az input mezőn.
A check.php pedig az alábbi:
  1. if(isset($_POST['mail'])){  
  2.   $email = $_POST['mail'];  
  3.   $sql_check = mysql_query("SELECT * FROM reserved WHERE id like '%" . $email . "%'");  
  4.   if(mysql_num_rows($sql_check)){  
  5.     echo 'BAD';  
  6.   } else {  
  7.     echo 'OK';  
  8.   }  
  9. }  
A gondom, (valószínű hogy ismét belekeveredtem a dolgokba...) hogy se hibát nem kapok, se válasz nem jön mikor elmegy a postom. Míg ha egy könyvtáron belül tartom a szükséges fájlokat, működik a móka. Próbáltam már a hivatkozásokat módosítani, de hiába játszom a relatív és abszolút megoldással, nem akar összeállni a dolog :(
Természetesen nyugodtan hordjatok le, ha más hibát követtem el, ami kardinális és nem látom a fától az erdőt :$

C.
 
1

Nezd meg az atadott

vrnagy · 2011. Nov. 1. (K), 14.17
Nezd meg az atadott parameterek nevet a kuldo oldalon, es azt ,hogy mit var a feldolgozo script. Szerintem igy megtalalod a hibat :)
2

..

Greg · 2011. Nov. 1. (K), 14.23
a hiba okat mar elottem megirtak. viszont azonkivul szerintem kezd el megismerkedni a PDO-val,mert SQL Inject ellen vedtelen a scripted.
3

NE

Poetro · 2011. Nov. 1. (K), 14.36
Ezt NE csináld. Eleve LIKE-kal ellenőrizni egy email címet nem szerencsés. Másodsorban nem hiszem, hogy ez adatvédelmi szempontból megállná a helyét. Harmadsorban a jQuery-s posztolás nem jó, mivel a változók nincsenek megfelelően escape-elve. Ezen esetben a data tulajdonságnak érdemesebb objektumot megadni, lehetőleg minden string adat esetén.
A ../includes/check.php hol helyezkedik el az aktuális URL-hez képest?
Miért használsz <span> elemeket a címkékhez <label> helyett?
A HTTP forgalom mit mutat Firebug / Developer Tools / Web Inspector stb. Net paneljén?