Android — PHP Xamarin не возвращает эхо

Я создаю приложение для Android, которое подключается к моему серверу MySQL, вставляет нового пользователя и возвращает идентификатор или строку ошибки. моя проблема заключается в том, что я делаю загрузку из c #, он объявляет php, как я вижу пользователя в БД, но он попадает в Client_UploadDataComplete.

я вижу первые 2 элемента тоста, но не третий. Мой PHP работает из веб-браузера. также это все на фрагменте диалога.

PHP это:

<?php
function create_password_hash($strPassword, $numAlgo = 1, $arrOptions = array())
{
if (function_exists('password_hash')) {
// php >= 5.5
$hash = password_hash($strPassword, $numAlgo, $arrOptions);
}
else
{
$salt = mcrypt_create_iv(22, MCRYPT_DEV_URANDOM);
$salt = base64_encode($salt);
$salt = str_replace('+', '.', $salt);
$hash = crypt($strPassword, '$2y$10$' . $salt . '$');
}
return $hash;
}

function verify_password_hash($strPassword, $strHash)
{
if (function_exists('password_verify')) {
// php >= 5.5
$boolReturn = password_verify($strPassword, $strHash);
} else {
$strHash2 = crypt($strPassword, $strHash);
echo $strHash2."<BR>";
$boolReturn = $strHash == $strHash2;
}
return $boolReturn;
}

$conn = new mysqli("localhost", "username", "password", "dbname");
// check connection
if ($conn->connect_error)
{
echo ('Database connection failed: '  .mysqli_connect_error);
}
else
{
$id="";
$firstName = $_REQUEST['firstName'];
$lastName = $_REQUEST['lastName'];
$email = $_REQUEST['email'];
$password = $_REQUEST['password'];
$encryptedPassword = create_password_hash($password);
$code = $_REQUEST['code'];
$diabetes = $_REQUEST['diabetes'];
$bloodpressure = $_REQUEST['bloodpressure'];
$fitness = $_REQUEST['fitness'];
$cholesteral = $_REQUEST['cholesterol'];
$codeId = "";
$result = "";

$strHash2 = crypt($password, $encryptedPassword);
$boolReturn = ($encryptedPassword == $strHash2);

$stmt=$conn->prepare('SELECT id FROM mentor where mcode = ?');
$stmt->bind_param('s', $code);

$stmt->execute();

$stmt->bind_result($codeId);

$stmt->store_result();
$stmt->fetch();

if(($stmt->num_rows)===1)
{
$stmt = $conn->prepare('INSERT INTO users (firstname,lastname,email,encrypted_password,diabetes,cholesterol,bloodPressure,fitnessTraining,mentor_id) values(?,?,?,?,?,?,?,?,?)');
$stmt->bind_param('ssssiiiii',$firstName,$lastName,$email,$encryptedPassword,$diabetes,$cholesteral,$bloodpressure,$fitness,$codeId);
$stmt->execute();
$stmt->store_result();
$stmt->fetch();

$id = $conn->insert_id;
echo $id;
}
else
{
echo "mentor id is invalid";
}

/*
//check hash vs password
if (verify_password_hash($password, $encryptedPassword))
{
echo 'Password is valid!';
} else
{
echo 'Invalid password.';
}
*/
$stmt->close();
$conn->close();

}

?>

мой с # это:

private void _btnSignUp_Click(object sender, EventArgs e)
{
if (CheckFields())
{
//save to db
WebClient client = new WebClient();
Uri uri = new Uri("http://www.sbmgroup.ca/test/biteboard/CreateContact.php");

NameValueCollection parameters = new NameValueCollection();

string diabetesValue = itemChecked(_diabetes.Checked);
string cholesterolValue = itemChecked(_cholesertal.Checked);
string fitnessValue = itemChecked(_fitness.Checked);
string bloodValue = itemChecked(_bloodPressure.Checked);

parameters.Add("firstName", _firstName.Text);
parameters.Add("lastName", _lastName.Text);
parameters.Add("email", _email.Text);
parameters.Add("password", _password.Text);
parameters.Add("code", _mentorCode.Text);
parameters.Add("diabetes", diabetesValue);
parameters.Add("bloodpressure", bloodValue);
parameters.Add("fitness", fitnessValue);
parameters.Add("cholesterol", cholesterolValue);

Toast.MakeText(Activity.ApplicationContext, "before upload", ToastLength.Long).Show();

client.UploadDataCompleted += Client_UploadDataCompleted;
client.UploadValuesAsync(uri, parameters);
Toast.MakeText(Activity.ApplicationContext, "after upload", ToastLength.Long).Show();
}
}private void Client_UploadDataCompleted(object sender, UploadDataCompletedEventArgs e)
{
Toast.MakeText(Activity.ApplicationContext, "upload complete", ToastLength.Long).Show();
Activity.RunOnUiThread(() =>
{
string id = Encoding.UTF8.GetString(e.Result);
int newId = 0;

if (OnSignupComplete != null)
{
if (int.TryParse(id, out newId))
{
OnSignupComplete.Invoke(this, new OnSignupEventArgs(newId, _firstName.Text, _lastName.Text, _email.Text, _password.Text, _retypePassword.Text, _mentorCode.Text, _bloodPressure.Checked, _cholesertal.Checked, _fitness.Checked, _diabetes.Checked));
this.Dismiss();
}
}
});
}

0

Решение

UploadValuesAsync увольняет UploadValuesCompleted событие. Ты используешь UploadDataCompleted, который уволен UploadDataAsync метод.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]