ASIHTTPRequest和PHP状态代码始终返回200或500

时间:2013-08-28 21:05:58

标签: php ios xcode

我的问题是php responseStatusCodes没有出现在iOS上。无论我在sendResponse()中返回什么状态代码,当在iOS中读取responseStatusCode时,我得到输出500.为什么这样,我该如何解决?我假设这是PHP的错误,与ASIHTTPRequest无关。但是,为了好的衡量,我已经包含了iOS端使用的代码。

如果他们是您需要帮助我的任何其他代码,请告诉我。

提前致谢!

以下是我用来启动与服务器连接的代码。

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
request.shouldAttemptPersistentConnection = NO;
[request setPostValue:name forKey:@"name"];
[request setPostValue:email forKey:@"email"];
[request setPostValue:phash forKey:@"phash"];
[request setDelegate:self];
[request startAsynchronous];

这是我在收到请求完成消息时运行的代码。

/
- (void)requestFinished:(ASIHTTPRequest *)request
{
    NSLog(@"Request Finished");
    int statusCode = [request responseStatusCode];
    if (statusCode == 150) {
        NSLog(@"User Already Registered.");
    } else if (statusCode == 155){
        NSLog(@"User Not Registered");
    } else if (statusCode == 403) {
        NSLog(@"Tester 2");
    } else if (statusCode == 200) {
        if (registering == true){
        [UIView animateWithDuration:1.0 animations:^{
            _wheel.alpha = 0.0;
        }];
        [UIView animateWithDuration:1.0 delay:1.0 options:0 animations:^{
            _clickToRegister.alpha=1.0;
        }completion:nil];
        } else {
            [UIView animateWithDuration:1.0 animations:^{
                _wheel.alpha = 0.0;
            }];
            [UIView animateWithDuration:1.0 delay:1.0 options:0 animations:^{
                _clickToLogin.alpha=1.0;
            }completion:nil];
        }
        NSLog(@"Tester 3");
    } else if (statusCode > 1 && statusCode < 1000){
        NSLog(@"Test Worked");
        NSLog(@"%d",statusCode);
    } else {
        NSLog(@"%d",statusCode);
        NSLog(@"Tester 4");
    }
}

这是应该发送responseStatusCode的PHP代码。

function sendResponse($status, $body = '', $content_type = 'text/html')
{
    $status_header = 'HTTP/1.1 ' . $status . ' ' . 'error';
    header($status_header);
    header('Content-type: ' . $content_type);
    echo $body;
}

以下是调用此函数的代码。

sendResponse(503, 'User not Registered');
return false;

以下是包含sendResponse调用的整个文件的代码。

<?php
require_once 'includes/main.php';
class dumb {
function dumber(){
    echo "Hello, PHP!";
/*--------------------------------------------------
    Handle visits with a login token. If it is
    valid, log the person in.
---------------------------------------------------*/


if(isset($_GET['tkn'])){

    // Is this a valid login token?
    $user = User::findByToken($_GET['tkn']);

    if($user){

        // Yes! Login the user and redirect to the protected page.

        $user->login();
        redirect('panic://success');
    }

    // Invalid token. Redirect back to the login form.
    redirect('panic://fail');
}



/*--------------------------------------------------
    Handle logging out of the system. The logout
    link in protected.php leads here.
---------------------------------------------------*/


if(isset($_GET['logout'])){

    $user = new User();

    if($user->loggedIn()){
        $user->logout();
    }

    redirect('index.php');
}


/*--------------------------------------------------
    Don't show the login page to already 
    logged-in users.
---------------------------------------------------*/


$user = new User();

if($user->loggedIn()){
    redirect('protected.php');
}



/*--------------------------------------------------
    Handle submitting the login form via AJAX
---------------------------------------------------*/

        if (isset($_POST["name"]) && isset($_POST["email"]) && isset($_POST["phash"])){
            rate_limit($_SERVER['REMOTE_ADDR']);

            rate_limit_tick($_SERVER['REMOTE_ADDR'], $_POST['email']);

            $message = '';
            $name = $_POST["name"];
            $email = $_POST["email"];
            $phash = $_POST["phash"];
            $subject = 'Your Login Link';

            if(!User::exists($email)){
                $subject = "Thank You for Registering!";
                $message = "Thank you for registering at our site!\n\n";
                // Attempt to login or register the person
            $user = User::loginOrRegister($email, $name, $phash);


            $message.= "You can login from this URL:\n";
            $message.= get_page_url()."?tkn=".$user->generateToken()."\n\n";

            $message.= "The link is going expire automatically after 10 minutes.";

            $result = send_email($fromEmail, $_POST['email'], $subject, $message);

            if(!$result){
            sendResponse(403, 'Error Sending Email');
            return false;
            }
            }
            else{
                sendResponse(150, 'User Already Registered');
                return false;
            }
        }
        else if(isset($_POST["email"]) && isset($_POST["phash"])){
            rate_limit($_SERVER['REMOTE_ADDR']);

            rate_limit_tick($_SERVER['REMOTE_ADDR'], $_POST['email']);

            $message = '';
            $name = '';
            $email = $_POST["email"];
            $phash = $_POST["phash"];
            $subject = 'Your Login Link';

            if(!User::exists($email)){
                sendResponse(155, 'User Not Registered');
                return false;
            }
            else{
            // Attempt to login or register the person
            $user = User::loginOrRegister($email, $name, $phash);


            $message.= "You can login from this URL:\n";
            $message.= get_page_url()."?tkn=".$user->generateToken()."\n\n";

            $message.= "The link is going expire automatically after 10 minutes.";

            $result = send_email($fromEmail, $_POST['email'], $subject, $message);

            if(!$result){
            sendResponse(403, 'Error Sending Email');
            return false;
            }
        }
        }

        die(json_encode(array(
            'message' => 'Thank you! We\'ve sent a link to your inbox. Check your spam folder as well.'
        )));

/*--------------------------------------------------
    Output the login form
---------------------------------------------------*/
}
}
$api = new dumb;
$api->dumber();
?>

1 个答案:

答案 0 :(得分:0)

我遇到语法错误。关闭php标签后的一个/:O。遗憾