jQuery + PHP real-time ellenőrzés
Ü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:Az .object_error annyit tesz, hogy egy 1px -es keretet átszínez az input mezőn.
A check.php pedig az alábbi: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.
■ 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>
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';
}
}
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.
Nezd meg az atadott
..
NE
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 adata
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?