Skewled Posted August 2, 2010 Share Posted August 2, 2010 Everything appears to work, I've added alert's to each section and got the required answers in the browser, but for some reason when my PHP script checks the username to see if it's been taken it will return taken no matter what. I posted my PHP code into the php forum here http://www.phpfreaks.com/forums/index.php/topic,306140.0.html , and everything checks out with that. So I'm moving onto my next step to see if the code I compiled below is functioning properly. window.onload = initPage; function initPage() { // Tell the browser what element we need to work with and what function to call document.getElementById("username").onblur = checkUsername; document.getElementById("register").disabled = true; } // Function to actually check the username and what to do with it function checkUsername() { document.getElementById("username").className = "thinking"; request = createRequest(); if (request == null) alert("Unable to create request"); else { var theName = document.getElementById("username").value; var username = escape(theName); var url= "signup.php?username=" + username; // Ever time the ready state of the response changes it will update the browswer request.onreadystatechange = showUsernameStatus; request.open("GET", url, true); request.send(null); } } // Update the page after the browser gets a response from the server function showUsernameStatus() { if (request.readyState == 4) { if (request.status == 200) { if (request.responseText == "okay") { document.getElementById("username").className = "approved"; document.getElementById("register").disabled = false; } else { document.getElementById("username").className = "denied"; document.getElementById("username").focus(); document.getElementById("username").select(); document.getElementById("register").disabled = true; } } } } I have the browser check called from another script, this is called before the script above is loaded. function createRequest() { try { request = new XMLHttpRequest(); } catch (tryMS) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (otherMS) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (failed) { request = null; } } } return request; } Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/ Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 remove this: if (request.responseText == "okay") { document.getElementById("username").className = "approved"; document.getElementById("register").disabled = false; } else { document.getElementById("username").className = "denied"; document.getElementById("username").focus(); document.getElementById("username").select(); document.getElementById("register").disabled = true; } and replace it temporarily with alert(request.responstText); and see what it displays. Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094242 Share on other sites More sharing options...
Skewled Posted August 2, 2010 Author Share Posted August 2, 2010 nothing happens when I put the alert there but if I put it there with the rest of the code it comes back 'undefined' Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094247 Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 so changing: // Update the page after the browser gets a response from the server function showUsernameStatus() { if (request.readyState == 4) { if (request.status == 200) { if (request.responseText == "okay") { document.getElementById("username").className = "approved"; document.getElementById("register").disabled = false; } else { document.getElementById("username").className = "denied"; document.getElementById("username").focus(); document.getElementById("username").select(); document.getElementById("register").disabled = true; } } } }[/code] to function showUsernameStatus() { if(request.readyState == 4) { if(request.status == 200) { alert(request.responseText); } } } does nothing? Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094254 Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 also change your one function to this: function createRequest() { var req; // The variable that makes Ajax possible! try{ // Opera 8.0+, Firefox, Safari req = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers try{ req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ // Something went wrong alert("Your browser broke!"); return false; } } } return req; } then if (request == null) to if(request) { // stuff here } else { // errors here } Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094257 Share on other sites More sharing options...
Skewled Posted August 2, 2010 Author Share Posted August 2, 2010 Made those changes and now get "unable to create request" here's what I have now for my utility scritp: function createRequest() { var req; // The variable that makes Ajax possible! try{ // Opera 8.0+, Firefox, Safari req = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers try{ req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ // Something went wrong alert("Your browser broke!"); return false; } } } return req; } And now the new validation script: window.onload = initPage; function initPage() { // Tell the browser what element we need to work with and what function to call document.getElementById("username").onblur = checkUsername; document.getElementById("register").disabled = true; } // Function to actually check the username and what to do with it function checkUsername() { document.getElementById("username").className = "thinking"; request = createRequest(); if (request) alert("Unable to create request"); else { var theName = document.getElementById("username").value; var username = escape(theName); var url= "signup.php?username=" + username; // Every time the ready state of the response changes it will update the browswer request.onreadystatechange = showUsernameStatus; request.open("GET", url, true); request.send(null); } } // Update the page after the browser gets a response from the server function showUsernameStatus() { if (request.readyState == 4) { if (request.status == 200) { if (request.responseText == "okay") { document.getElementById("username").className = "approved"; document.getElementById("register").disabled = false; } else { document.getElementById("username").className = "denied"; document.getElementById("username").focus(); document.getElementById("username").select(); document.getElementById("register").disabled = true; } } } } Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094259 Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 // Function to actually check the username and what to do with it function checkUsername() { request=createRequest(); if (request) { var theName = document.getElementById("username").value; var username = escape(theName); var url= "signup.php?username=" + username; // Every time the ready state of the response changes it will update the browswer request.onreadystatechange = showUsernameStatus; request.open("GET", url, true); request.send(); } else { alert("Unable to create request"); } } // Update the page after the browser gets a response from the server function showUsernameStatus() { if (request.readyState == 4) { if (request.status == 200) { if (request.responseText == "okay") { document.getElementById("username").className = "approved"; document.getElementById("register").disabled = false; } else { document.getElementById("username").className = "denied"; document.getElementById("username").focus(); document.getElementById("username").select(); document.getElementById("register").disabled = true; } } } } Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094274 Share on other sites More sharing options...
Skewled Posted August 2, 2010 Author Share Posted August 2, 2010 That got rid of the nasty error and I see what I did wrong, ty for pointing out the new code. I removed the delay from the php file so it updates instantly now, the issue is still in the showUsernameStatus function. For some reason it's not getting back an "okay" or "denied" from the server, that's why I posted my PHP code first. Any suggestions? ty again for all your help thus far Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094282 Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 okay since it's not gettin an okay in the responseText, lets see what exactly we're getting... visit the .php page that is to be generating this result, and see what type of a result it has. also are you using both echo and return? Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094285 Share on other sites More sharing options...
Skewled Posted August 2, 2010 Author Share Posted August 2, 2010 The php page when accessed directly with signup.php?username=taken taken is already a username that's used it returns denied like it should Also if it name is available it returns okay I'm using echo and return as well Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094295 Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 what that means, the SQL isnt really parsing... so what i would do is this: $sql = "SELECT whatever"; echo $sql; $data = mysqli_query($sql); then see what the output is of the echo on $sql, that'll tell you what the issue is with the query. once you get that working right, the whole script will work right. -- okay so it runs denied... how bout if you put in signup.php?username=ucntkilme how are you handling the usage of username in the php file? Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094296 Share on other sites More sharing options...
Skewled Posted August 2, 2010 Author Share Posted August 2, 2010 I modified my above post because I had an error in the query that I just fixed. So that seems to be working fine, but the issue is the ajax isn't getting the server response back for some reason. var url= "signup.php?username=" +username; this passes the variable that's entered so the php page would see signup.php?username=enteredname when I do it manually it comes back okay or denied with the echo output. Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094299 Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 do you have the formfield 'username' with the id="username" in it? also through 3 alerts up.. one for document.getelementbyID('username').value one for theName and one for username and lets see what shows up in all 3. Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094300 Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 if nothing shows up in username, issue is the document.getElementByID so we'd then do something like this instead var theName = window.document.formname.username.value; you could also use: var theName=$('username').value; Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094304 Share on other sites More sharing options...
Skewled Posted August 2, 2010 Author Share Posted August 2, 2010 I did the alerts here they are: 1st - Original value: Taken That's the name I entered into the username box 2nd - Escaped value: Taken 3rd - Url - ../signup?username=Taken 4th - Sorry, that username is taken. That username isn't registered and shouldn't have put up the last error. Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094307 Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 how is your query setup? Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094309 Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 I just went to the other post and reviewed your php code, just for shits and giggles change your $_GET to $_REQUEST and echo out $query and see what returns. oh and Taken == taken if you want usernames to be case sensitive you need to use WHERE username LIKE BINARY $_REQUEST['passname'] instead of WHERE username = Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094313 Share on other sites More sharing options...
Skewled Posted August 2, 2010 Author Share Posted August 2, 2010 ok I changed it to $_REQUEST and nothing seemed to change I then echo'd out the $query and nothing seemed to change I didn't see the small page 2 at the bottom my apologies lol The query is setup so that $_REQUEST['username'] is passed to a new variable if it's set. if (isset($_REQUEST['username'])) { then I escape and trim the new variable and throw it into the query for the WHERE clause ( username = '$passname'"; $passname = mysqli_real_escape_string($dbc, trim($_GET['username'])); $query = "SELECT username FROM information WHERE username = '$passname'"; $data = mysqli_query($dbc, $query); $ok = 'okay'; $den = 'denied'; if (mysqli_num_rows($data) == 0) { // if the returned value is 0 then the username is unique echo 'okay'; return $ok; } else { // that username is taken so let's deny it echo 'denied'; return $den; } Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094315 Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 k change that to this temporarily.. $pass = isset($_REQUEST['username']) ? $_REQUEST['username'] : ''; if($pass != '') { $passname = mysqli_real_escape_string($dbc, trim($_REQUEST['username'])); $query = "SELECT COUNT(username) FROM information WHERE username = '".$passname."'"; echo $query; $data = mysqli_query($dbc, $query); $data = mysqli_result($data, 0); $ok = 'okay'; $den = 'denied'; if($data != '' && $data >= 1) { echo $ok; return $ok; } else { echo $den; return $den; } } } and see what that does. Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094321 Share on other sites More sharing options...
Skewled Posted August 2, 2010 Author Share Posted August 2, 2010 Same as before. All the usernames come back denied so far Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094325 Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 ive altered the code a little bit.. so rechange it to whats above. Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094326 Share on other sites More sharing options...
Skewled Posted August 2, 2010 Author Share Posted August 2, 2010 same as before Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094327 Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 okay, lets look at some HTML now if you can post that. Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094328 Share on other sites More sharing options...
Skewled Posted August 2, 2010 Author Share Posted August 2, 2010 <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <label for="username">Username:</label> <input type="text" id="username" name="username value="<?php if (!empty($username)) echo $username; ?>" MAXLENGTH = 7 /><br /> <label for"register"></label> <input id="register" type="submit" value="Sign Up" name="register" class="signsub" /> </form> This is what I'm currently working with, I'll be adding password, e-mail and other stuff after this. Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094330 Share on other sites More sharing options...
radar Posted August 2, 2010 Share Posted August 2, 2010 <input type="text" id="username" name="username value="<?php if (!empty($username)) echo $username; ?>" MAXLENGTH = 7 /><br /> to <input type="text" id="username" name="username" value="<?php if (!empty($username)) echo $username; ?>" MAXLENGTH = 7 /><br /> Link to comment https://forums.phpfreaks.com/topic/209600-id-like-someone-to-verify-my-code/#findComment-1094331 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.