Ошибка при отправке данных в форму PHP - PullRequest
0 голосов
/ 18 февраля 2012

Я пытаюсь отправить электронное письмо из моего приложения с помощью контактной формы PHP, но детали по какой-то причине не могут быть отправлены из приложения. Пожалуйста, скажите мне, в чем проблема ... В конце я приложил форму php, которую я использую.

когда я пытаюсь отправить электронное письмо с помощью веб-браузера и написать: http://www.bergerz.co.il/wp-content/themes/ecobiz/sendemailfromapp.php/?name=MYNAME&subject=SUBJECT&email=yositsa@gmail.com&message=MESSAGE, это работает отлично.

-(IBAction)send:(id)sender
{
    NSMutableURLRequest * request = [[NSMutableURLRequest alloc] init];

    NSString * urlString = [NSString stringWithFormat:@"http://www.bergerz.co.il/wp-content/themes/ecobiz/sendemailfromapp.php"];

    [request setURL:[NSURL URLWithString:urlString]];
    [request setHTTPMethod:@"REQUEST"];

    NSString * paramDataString = [NSString stringWithFormat:@"name=%@&subject=%@&email=%@&message=%@",[txtName.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],[txtSubject.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],[txtEmail.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],[txtMessage.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    NSData*paramData = [paramDataString dataUsingEncoding:NSUTF8StringEncoding];
    [request setHTTPBody:paramData];

    NSURLResponse * response;
    NSError * error;

    NSData * aData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];//excute of data to the internet 
    NSString * requestData = [[NSString alloc] initWithData:aData encoding:NSUTF8StringEncoding];
    if ([requestData isEqualToString:[NSString stringWithFormat:@"sent"]])
    {
        lblStatus.hidden = NO;
        lblStatus.text = @"Message Sent..";
    }
    else if ([requestData isEqualToString:[NSString stringWithFormat:@"NO_NAME_ERROR"]])
    {
        lblStatus.hidden = NO;
        lblStatus.text = @"Name is too short";
    }
    else if ([requestData isEqualToString:[NSString stringWithFormat:@"NO_EMAIL_ERROR"]])
    {
        lblStatus.hidden = NO;
        lblStatus.text = @"Email is too short";
    }
    else if ([requestData isEqualToString:[NSString stringWithFormat:@"EMAIL_WRONG_ERROR"]])
    {
        lblStatus.hidden = NO;
        lblStatus.text = @"Email wrong error";
    }
    else if ([requestData isEqualToString:[NSString stringWithFormat:@"NO_MESSAGE_ERROR"]])
    {
        lblStatus.hidden = NO;
        lblStatus.text = @"Message is too short";
    }
    else if ([requestData isEqualToString:@"NULL"])
    {
        lblStatus.hidden = NO;
        lblStatus.text = @"EMPTY";
    }
    NSLog(@"request: %@",request);
    NSLog(@"requestData: %@",requestData);
    NSLog(@"aData: %@",aData);
}

вот файл php: http://www.pastebin.com/BvaiMs04

Я отредактировал сообщение в своем последнем коде, но он все еще не работает.

1 Ответ

3 голосов
/ 18 февраля 2012

ParamDataString должно быть name=%@&subject=%@... без /?.

И: Вы должны экранировать входные строки: [txtName.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],[txtSubject.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ...

или заполните все в NSDictionary и используйте urlEncodedString:

NSDictionary *postParams = [[NSDictionary alloc] initWithObjectsAndKeys: txtName.text, @"foo", txtSubject.text, @"bar", nil];
//...
NSString *sPostParams = [postParams urlEncodedString];
[request setHTTPBody:[NSData dataWithBytes:[sPostParams UTF8String] length:[sPostParams length]]];

Найдена еще одна ошибка: метод HTTP должен быть POST, "_REQUEST" не существует ... [request setHTTPMethod:@"POST"];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...