Pregunta

Hola estoy tratando de pasar variables a php desde dentro de una aplicación.

<?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';


?>

Y el código SDK de aplicaciones:

-(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);


}

Todo parece trabajar, el usuario introduce allí el correo electrónico y visitas envía, se añaden la cadena de correo electrónico y otros 2 cadenas de datos y parece conectar con el PHP, PHP parece funcionar cuando se prueba directamente desde una línea de direcciones del navegador .

Incluso hace estallar los datos en una nueva línea en la base de datos (si es un nuevo correo electrónico, si no se anexa una cadena si existe una línea de corriente para que el correo electrónico) así que todo es grande.

Es sólo que los datos se pasa como números, no es una cadena.

por ejemplo. el correo electrónico se convierte en:

15968112

y los datos a algo como:

70560

en lugar de las cadenas originales! Que esta pasando? ¿Cómo se puede remediar?

Gracias de antemano ..

¿Fue útil?

Solución

Su máscara de formato para initWithFormat está mal.

Está utilizando %d que se utiliza para dar formato al parámetro como un valor decimal, cuando es necesario utilizar %@, para formatear el parámetro como un objeto Obj-C (como la propiedad de texto, que es una NSString.

La línea correcta sería el siguiente:

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

Además, es posible que desee tener cuidado y evitar los caracteres de URL, llamando al método de NSString stringByAddingPercentEscapesUsingEncoding: , por lo que la cadena está codificada adecuadamente para el uso de URL

Otros consejos

intentar intercambiar el% d de% s en su llamada a initWithFormat

NSString *urlstr = [[NSString alloc] initWithFormat:@"http://XXX URL HERE XXX/ringtone_send.php?email=%s&character=%s&charname=%s", emailField.text, picFile, charName];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top