Seems you have issues on client-side too.
Anyhow try Pablo's suggestions and please post your results.

On 01/23/2012 02:14 PM, utan wrote:
> Ok,
> Not a go partially ,
>
> 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;
>       //Ape.log(isbanned(cmd.ip));
>       var request = new Http('http://someplace/sql/banned_ips.php');
>       request.set('method', 'POST');
>       request.writeData('password', 'pass');
>       request.writeData('ip', cmd.ip);
>
>       request.getContent(function(result){
>       if(result != ""){
>               cmd.sendResponse('ERR', {'code': 1001, 'value':'User BANNED'});
>                       return 0;
>                       }else{
>               cmd.user.setProperty('name', params.name);
>               cmd.user.setProperty('ip', cmd.ip);
>
>               return 1;
>                       }
>       }).bind(this);
>
>
>       /*cmd.user.setProperty('name', params.name);
>       cmd.user.setProperty('ip', cmd.ip);
>
>       return 1;*/
> });
>
> it let me go to the page and wont show up the login form again, gives
> me javascript errors..
> if I dont use bin(this) then it goes fine to the page with no
> javascript properties..  so bin(this) is doing and helping return
> something, but doesnt really work well.
>
> On Jan 23, 11:45 am, Erick Romero <[email protected]> wrote:
>> Thanks Pablo.
>> Technically you are right hence getContent is another function that is
>> out of the scope of hook-connect.
>>
>> The "trick" is to send the next command inside such function when the
>> result is "false" or "zero".
>> Well, it works fine for me. Also http gets the content sent by the php
>> output with not issues. (I am using latest github APED compiled by myself)
>>
>>     cmd.sendResponse('ERR', {'code': 1001, 'value': 'User does not
>>     logged in'});
>>
>> Utan, about "non-defined-variables", try to bind getContent to the hook
>> function.
>> I am using mootools on the server. I am copying my code below so you get
>> an idea.
>>
>> If this does not help you, then I have not more ideas  ;-)
>>
>>     var Users = new Class({
>>
>>         initialize: function() {
>>             Ape.registerHookCmd('connect', this.on_connect.bind(this));
>>         },
>>
>>         on_connect: function(params, cmd) {
>>
>>             if ( ! params || ! params.session_id) return 0;
>>
>>             var request = new Http(local_urls.IS_USER_LOGGED +
>>     params.session_id);
>>
>>             request.getContent(function(result) { //call the PHP file
>>
>>                 if (result == 0) {
>>                     *cmd.sendResponse('ERR', {'code': 1001, 'value':
>>     error_codes._1001});*
>>                     log('USER_NOT_LOGGED_IN');
>>                     return 0;
>>                 }
>>
>>                 else {
>>
>>                     var data_user = JSON.parse(result);
>>
>>                     //set private properties
>>                     cmd.user.code = data_user.code;
>>                     cmd.user.uid = data_user.uid;
>>
>>                     //send to user its identification code
>>                     cmd.sendResponse('userCode', {'code': data_user.code});
>>                     return 1;
>>                 }
>>
>>             }*.bind(this));*
>>         }
>>     });
>>
>>     var global_users;
>>     Ape.addEvent('init', function(){
>>         global_users = new Users();
>>     });
>>
>> On 01/23/2012 01:12 PM, Pablo Tejada wrote:
>>
>>
>>
>>
>>
>>
>>
>>> Erik,
>>> Returning 0 inside the getContent callback does not returns it to the
>>> parent function which is the hook. The problem is in the Http class
>>> itself.
>>> I skim through the Http.js file and quickly spotted a fix but I'm
>>> currently mobile so I don't know if I'll be able do anything. If I'm
>>> able to do the edits that I think could solve this I will share the
>>> file with you guys in an attachment.
>>> On Jan 23, 2012 2:02 PM, "Erick Romero" <[email protected]
>>> <mailto:[email protected]>> wrote:
>>>> No sure if I understand what you mean.
>>>> I am understanding that your problem is on the server side.  If you have
>>>> troubles into the client-side you should add more information.
>>>> By the way, is the flow-logic entering into the if (result == '')?
>>>> If it is the case, then the hook is returning zero and the code should
>>>> stop there (returning zero into the hook-connect server makes
>>>> client-users to be dropped)
>>>> If the flow-logic is not entering into the "if" quoted above, in that
>>>> case make the PHP-file outputs ZERO when there are not match instead of
>>>> a empty char and change the IF to if (result === 0)
>>>> On 01/23/2012 12:44 PM, utan wrote:
>>>>> Hi,
>>>>> I 've tried your suggestion too I get this nickname.js:40:TypeError:
>>>>> user.getProperty("name") is undefined
>>>>> and the code runs after the else, but when logged in, the
>>>>> user.properties is undefined.. so somehow it stops the code but the
>>>>> wrong way..
>>>>> My brain is about to explode.. ROLF
>>>>> On Jan 23, 10:25 am, Erick Romero <[email protected]
>>> <mailto:[email protected]>> wrote:
>>>>>> What about this:
>>>>>>     Ape.registerHookCmd("connect", function(params, cmd) {
>>>>>>         if ( ! params || ! params.session_id) return 0;
>>>>>>         var request = new Http("your_php_file");
>>>>>>         request.getContent(function(result) { //call the PHP file
>>>>>>             if (result == '') { //YOUR PHP is sending an EMPTY when
>>>>>>     there are not match (as you wrote)
>>>>>>                 cmd.sendResponse('ERR', {'code': 1001, 'value': 'User
>>>>>>     BANNED'});
>>>>>>                 return 0;
>>>>>>             } else {
>>>>>>                 cmd.user.setProperty('name', params.name
>>> <http://params.name>);
>>>>>>                 cmd.user.setProperty('ip', cmd.ip);
>>>>>>                 return 1;
>>>>>>             }
>>>>>>         });
>>>>>>     });
>>>>>> On 01/23/2012 11:34 AM, utan wrote:
>>>>>>> Ok, moved the function code to the hook , now I have the code like
>>>>>>> this:
>>>>>>> code before to call the php file
>>>>>>> request.getContent(function (result){
>>>>>>>    if(result){
>>>>>>>            return 0;
>>>>>>>    }
>>>>>>>    else{
>>>>>>>            cmd.user.setProperty('name', params.name
>>> <http://params.name>);
>>>>>>>            cmd.user.setProperty('ip', cmd.ip);
>>>>>>>    }
>>>>>>>    });
>>>>>>> but still the code runs after the return 0 , then the page opens but
>>>>>>> with error user.properites are undefined..
>>>>>>> and server side gets me this: TypeError: user.getProperty("name") is
>>>>>>> undefined
>>>>>>> since I am not working with a function when returning the code
>>> doesnt
>>>>>>> stop..
>>>>>>> any thoughts?
>>>>>>> On Jan 23, 9:08 am, Erick Romero <[email protected]
>>> <mailto:[email protected]>> wrote:
>>>>>>>> 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'
>>> <http://anyplace/sql/banned_ips.php%27>);
>>>>>>>>>    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
>>> <http://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 <http://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 <[email protected]
>>> <mailto:[email protected]>> 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 <http://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
>> ...
>>
>> read more ยป

-- 
You received this message because you are subscribed to the Google
Groups "APE Project" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
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/

Reply via email to