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:
<form method="post" action="" enctype="multipart/form-data" name="reg_form" id="reg_form">
  <span>E-mail</span><input type="text" name="email" id="rmail" autocomplete="off" /><div id="status"></div><br />
  <span>Jelszó</span><input type="password" name="passcode" id="rpasscode" autocomplete="off" /><br/>
  <span>Jelszó ismét</span><input type="password" name="passcode2" id="rpasscode2" autocomplete="off" /><br/>
  <input class="submit" type="submit" id="send_register" value="Regisztráció" />
</form>
...
<script type="text/javascript">
  $(document).ready(function() {
   pic1 = new Image(16, 16);
   pic1.src = "../images/loader.gif";
   $("#rmail").change(function() {
    var usr = $("#rmail").val();
    if(usr.length >= 4) {
     $("#status").html('<img src="../images/loader.gif">');
     $.ajax({
      type: "POST",
      url: "../includes/check.php",
      data: "email="+ usr,
      success: function(msg){
       $("#status").ajaxComplete(function(event, request, settings){
        if(msg == 'OK'){
         $("#rmail").removeClass('object_error');
        } else {
         $("#rmail").addClass("object_error");
         $(this).html(msg);
        }
       });
      }
     });
    } else {
     $("#rmail").addClass("object_error");
    }
   });
  });
</script>
Az .object_error annyit tesz, hogy egy 1px -es keretet átszínez az input mezőn.
A check.php pedig az alábbi:

if(isset($_POST['mail'])){
  $email = $_POST['mail'];
  $sql_check = mysql_query("SELECT * FROM reserved WHERE id like '%" . $email . "%'");
  if(mysql_num_rows($sql_check)){
    echo 'BAD';
  } else {
    echo 'OK';
  }
}
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?