سؤال

مرحبا، أحاول تمرير المتغيرات إلى PHP من داخل التطبيق.

<?php
// get email address
$email = $_GET['email'];
// get character name
$character = $_GET['character'];
// get password
$charname = $_GET['charname'];
// set up variables
$id = 0;
$idtest="no";
// set up database connection
$link = mysql_connect("localhost", "xxx username xx","xxx password xxx") or die ("Unable to connect to database.");
mysql_select_db("xxx db xxx") or die ("Unable to select database.");
// contact and check if an email already exists
$sqlstatement= "SELECT id, ringtones FROM users WHERE email = '$email'";
$newquery = mysql_query($sqlstatement, $link);
while (list($id, $ringtones) = mysql_fetch_row($newquery)) {
    echo"&id=$id&ringtones=$ringtones";
    $ringtoneString=$ringtones;
    if ($id <> 0) { 
        $idtest="yes";
    }
}
// if idtest flag = no then add new user
if ($idtest == "no") {
    // add a space to the end of character and store in new string
    $character2 = $character . ' ';
    $sqlstatement= "INSERT INTO users (email, ringtones) VALUES ('$email', '$character2')";
    $newquery = mysql_query($sqlstatement, $link);
    echo ' registered new email address '; 
    echo $email;
// else update the ringtone field
} else {
    //$sqlstatement= "INSERT INTO users (email) VALUES ('$email') WHERE email = '$email'";
    //$newquery = mysql_query($sqlstatement, $link);
    echo ' Updated email address'; 
    echo $email;
    echo ' current ringtones = '; 
    echo $ringtoneString;
    // add new character to ringtone string
    $ringtoneString = $ringtoneString . $character . ' ';
    echo ' updated ringtone string = '; 
    echo $ringtoneString;
    // add new rintone string back in to user
    $query = "UPDATE users SET ringtones = '$ringtoneString' WHERE email = '$email'";
    $success=mysql_query($query);
    if ($success) echo "The insert query was successful. '$loadconnect'";
     else echo "Error: insert query failed. '$loadfailed'";
}
// email with attachment
// turn character 3 into a proper name
$character3 = $character;


// email with attachment script goes here

//create short variable names
$fromname = 'FROM';
$fromemail='FROM EMAIL';
$subject="SUBJECT";
$message="MESSAGE HERE";

$email=trim($email);
$subject=StripSlashes($subject);
$message=StripSlashes($message);

    mail($email,$subject,$message,"From: FROM EMAIL");
     //clear the variables
     $name='';
     $email='';
     $subject='';
     $message='';
     echo 'response=passed';


?>

وتطبيق رمز SDK:

-(IBAction)sendEmail:(id)sender{
    //NSpicFile = picFile;
    //NScharName = charName;
    //NSemail = emailField.text;
    NSString *urlstr = [[NSString alloc] initWithFormat:@"http://XXX URL HERE XXX/ringtone_send.php?email=%d&character=%d&charname=%d", emailField.text, picFile, charName];
    NSURL *url = [[NSURL alloc] initWithString:urlstr];
    NSString *ans = [NSString stringWithContentsOfURL:url];
    // here in ans you'll have what the PHP side returned. Do whatever you want
    [urlstr release];
    [url release];

    NSLog(@"email sent to = %@", emailField.text);
    NSLog(@"data sent = %@ - %@", picFile, charName);
    NSLog(@"url string = %d", urlstr);


}

يبدو أن كل شيء يعمل، يدخل المستخدم هناك إرسال بريد إلكتروني إلى إرسال بريد إلكتروني ويضرب، ويتم إضافة سلسلة البريد الإلكتروني و 2 سلاسل بيانات أخرى ويبدو أنها تتصل ب PHP، ويبدو أن PHP يعمل عند اختباره مباشرة من سطر عنوان المستعرض.

حتى ينبثق البيانات في سطر جديد في قاعدة البيانات (إذا كان هناك بريد إلكتروني جديد، إن لم يكن إلحاق سلسلة إذا كان هناك سطر حالي لهذه الرسالة الإلكترونية)، فلم يكن كل شيء رائعا.

من المفترض أن يتم تمرير البيانات كأرقام، وليس سلسلة.

على سبيل المثال يتحول البريد الإلكتروني إلى:

15968112

والبيانات إلى شيء مثل:

70560

بدلا من السلاسل الأصلية! ما الذي يجري؟ فكيف يمكن علاجها؟

شكرا لك مقدما..

هل كانت مفيدة؟

المحلول

قناع التنسيق الخاص بك ل initWithFormat خطأ.

انت تستخدم %d الذي يستخدم لتنسيق المعلمة كقيمة عشرية، عندما تحتاج إلى استخدام %@, ، لتنسيق المعلمة كائن OBJ-C (مثل خاصية النص، وهذا هو NSString.

السطر الصحيح سيظهر مثل هذا:

    NSString *urlstr = [[NSString alloc] initWithFormat:@"http://url/ringtone_send.php?email=%@&character=%@&charname=%@",
       emailField.text, picFile, charName];

أيضا، قد ترغب في أن تكون حذرا والهروب من الشخصيات لعنوان URL، عن طريق الاتصال NSStringطريقة stringByAddingPercentEscapesUsingEncoding:, ، لذلك يتم تشفير السلسلة بشكل صحيح لاستخدام URL.

نصائح أخرى

تحاول تبديل٪ d مقابل٪ s في مكالمتك إلى initwithformat

NSString *urlstr = [[NSString alloc] initWithFormat:@"http://XXX URL HERE XXX/ringtone_send.php?email=%s&character=%s&charname=%s", emailField.text, picFile, charName];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top