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?