Try the following: Remove "return 1" from connect hook. As you said, the code will be ran before you get the php response; so no matter if it is banned you are returning 1 (true).
I would delete is_banned function and move that logic into connect hook, making a IF to return 0 or 1 for the connect hook based on the php-response. Also you may move the logic user-setProperty into the if (the side that returns 1) On 01/23/2012 10:44 AM, utan wrote: > Thanks for your help, > > I end up doing all the work at php side, send the ip with http and > then checking it at php level return either true or false and work > with it. > There is a problem , in the moment the http does its job the other > code had run and even if true it doesn't return because I think > because anonymous function or because it doesn't have a response yet > from php server side.. > which then tests as false and keep running the code.. this is what I > am doing.. > > I have a function in name.js, > > function isbanned(ip){ > var request = new Http('http://anyplace/sql/banned_ips.php'); > request.set('method', 'POST'); > request.writeData('password', 'any'); > request.writeData('ip', ip); > > request.getContent(function (result){ > Ape.log(ip); > return result; > }); > } > > and > > Ape.registerHookCmd("connect", function(params, cmd) { > if (!$defined(params) || !$defined(params.name)) return 0; > if (userlist.has(params.name.toLowerCase())) return ["007", > "NICK_USED"]; > if (params.name.length > 9 || params.name.test('[^a-zA-Z0-9]', 'i')) > return ["006", "BAD_NICK"]; > > if(isbanned(cmd.ip))return 0;// if true would return 0 and the code > should stop > > cmd.user.setProperty('name', params.name); > cmd.user.setProperty('ip', cmd.ip); > > return 1; > }); > > If I put the code directly in Ape.registerHookCmd I have the same > result, doesnt matter if is true or false the code continued to the > next code , but if I test putting a return 1 before > request.getContent the code stops and do what I want.. > maybe I still dont know much but why is this? if I do with json you > think I will have better luck? > > On Jan 23, 6:24 am, Erick Romero <err...@gmail.com> wrote: >> You should add JSON to the server. >> I made it in this way: >> >> 1. Download the JSON file from the below link. >> 2. Add the file inside the server under "framework" directory >> 3. Modify "main.ape.js" in the server and add the line >> "include("framework/JSON.js");" >> 3. That's all. >> >> http://www.json.org/js.html >> github:https://github.com/douglascrockford/JSON-js >> >> Now in php you do >> >> var data = array('name'=>'naruto', 'age'=>'15' ); >> /echo json_encode(/data); >> >> And in the server: >> / >> var request = new Http(URL); >> request.getContent(function(result) { //call the PHP file >> if ( ! result) { >> cmd.sendResponse('ERR', {'code': 1001, 'value': >> 'error_codes._1001'}); >> Ape.log('USER_NOT_LOGGED_IN'); >> return 0; >> } >> var data_user = JSON.parse(result) >> Ape.log(data_user.name); >> // Ape.log(data_user.age >> return 1; >> //}/ >> >> On 01/22/2012 08:04 PM, utan wrote: >> >> >> >> >> >> >> >>> Hi, >>> Sorry to highjack this tread, I've done the same I get the response >>> from the php db array json encoded , but when I try to use it in the >>> serverside of Ape and try something like this: >>> request.getContent(function (result){ >>> Ape.log(result.ID); >>> }); >>> where result has the json from the test.php, if I try to access say >>> result.ID I get JavaScript : undefined , how can I access it properly, >>> tried JSON.decode(); but is not a function and I think core doesnt >>> have loaded.. >>> need to convert it to object so I can use.. can find if Ape has json >>> decode to work with.. >>> thanks for any help. >>> On Jan 17, 2:19 pm, Erick Romero <err...@gmail.com> wrote: >>>> This works for me: >>>> 1. On APE Server use Http to fetch test.php (included into >>>> APE_server/framework). Define a call back for that Http >>>> 2. Test.php handles mysql functions and sends back the data (a simple >>>> echo works). For convenience I send the data JSON encoded >>>> 3. The http-call-back on APE server handles the raw with the data >>>> retrieved. >>>> On 01/17/2012 03:54 PM, Micael Ribeiros wrote: >>>>> Is there a better way to do this besides this one: >>>>> 1: On APE Server use mootools Request method to send a XMLHttpRequest >>>>> to a test.php file >>>>> 2: On the test.php file retrieve the mysql data and send it back using >>>>> file_get_contents or curl to send a Raw to the APE Server >>>>> 3: On APE Server process the raw with the mysql data received from the >>>>> php script >>>>> ? >>>>> Thank you in advance for any response -- You received this message because you are subscribed to the Google Groups "APE Project" group. To post to this group, send email to ape-project@googlegroups.com To unsubscribe from this group, send email to ape-project+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/ape-project?hl=en --- APE Project (Ajax Push Engine) Official website : http://www.ape-project.org/ Git Hub : http://github.com/APE-Project/