Ну, я объясняю вам, что я пытаюсь сделать, мне нужно вставить пользователя из моего устройства Android в localhost, я использую веб-службу в php, и кажется, что она не работает, потому что он говорит, что я вставил, что пользователь в моей базе данных, но когда я иду к локальному хосту я не нахожу мой пользователь ..Веб-сервис не работает точно
Вот мой код:
Java (Android):
public class NewUsuarioPart2Activity extends AppCompatActivity {
private EditText textoEmail, textoDNI, textoEdad,textoNombreUsu;
private Button btnHecho;
private String nom = "";
private String apellido = "";
private String contra = "";
private String contraNew = "";
private int id = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_usuario_nuevo_part2);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
String str = "*** My thread is now configured to allow connection";
Toast.makeText(getApplication(), str, Toast.LENGTH_LONG).show();
}
//LO GUARDADO DE NEWUSUARIOACTIVITY
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
if(extras == null) {
nom = null;
apellido = null;
contra = null;
contraNew = null;
} else {
nom = extras.getString("STRING_NOM");
apellido = extras.getString("STRING_APELLIDO");
contra = extras.getString("STRING_CONTRA");
contraNew = extras.getString("STRING_CONTRA_NEW");
}
} else {
nom = (String) savedInstanceState.getSerializable("STRING_NOM");
apellido = (String) savedInstanceState.getSerializable("STRING_APELLIDO");
contra = (String) savedInstanceState.getSerializable("STRING_CONTRA");
contraNew = (String) savedInstanceState.getSerializable("STRING_CONTRA_NEW");
}
textoEmail = (EditText)findViewById(R.id.edEmail);
textoDNI = (EditText)findViewById(R.id.edDNI);
textoEdad = (EditText)findViewById(R.id.edEdad);
textoNombreUsu = (EditText)findViewById(R.id.edNomUsu);
btnHecho = (Button)findViewById(R.id.btnHecho);
btnHecho.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
id++;
new Insertar(NewUsuarioPart2Activity.this).execute();
Intent intent = new Intent(NewUsuarioPart2Activity.this, MainActivity.class);
v.getContext().startActivity(intent);
}
});
}
//What I do here is insert my new user to my database
private boolean insertar(){
HttpClient httpclient;
List<NameValuePair> nameValuePairs;
HttpPost httppost;
httpclient=new DefaultHttpClient();
httppost= new HttpPost("http://192.168.231.88/xabiagame/data/insertarOtroMetodo.php"); // Url del Servidor
//Añadimos nuestros datos
nameValuePairs = new ArrayList<NameValuePair>(8);
nameValuePairs.add(new BasicNameValuePair("id",String.valueOf(id).trim()));
nameValuePairs.add(new BasicNameValuePair("nombre",nom.trim()));
nameValuePairs.add(new BasicNameValuePair("apellidos",apellido.trim()));
nameValuePairs.add(new BasicNameValuePair("email",textoEmail.getText().toString().trim()));
nameValuePairs.add(new BasicNameValuePair("dni",textoDNI.getText().toString().trim()));
nameValuePairs.add(new BasicNameValuePair("contrasenya",contraNew.trim()));
nameValuePairs.add(new BasicNameValuePair("usuario",textoNombreUsu.getText().toString().trim()));
nameValuePairs.add(new BasicNameValuePair("edad",textoEdad.getText().toString().trim()));
for (int i=0; i<nameValuePairs.size(); i++){
Log.i("User", nameValuePairs.get(i).toString());
}
try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpclient.execute(httppost);
return true;
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
//AsyncTask para insertar Personas
class Insertar extends AsyncTask<String,String,String> {
private Activity context;
Insertar(Activity context){
this.context=context;
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
if(insertar())
context.runOnUiThread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(context, "Persona insertada con exito", Toast.LENGTH_LONG).show();
nom = null;
apellido = null;
contra = null;
contraNew = null;
textoEmail.setText("");
textoDNI.setText("");
textoEdad.setText("");
textoNombreUsu.setText("");
}
});
else
context.runOnUiThread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(context, "No insertado", Toast.LENGTH_LONG).show();
}
});
return null;
}
}
}
Вот мой веб-службы в Php (у меня есть два):
И эти два кажется, что он не работает.
Первый один:
<?PHP
$hostname_localhost ="localhost"; //nuestro servidor
$database_localhost ="xabiagame";//Nombre de nuestra base de datos
$username_localhost ="root";//Nombre de usuario de nuestra base de datos (yo utilizo el valor por defecto)
$password_localhost ="";//Contraseña de nuestra base de datos (yo utilizo por defecto)
//'ejemplo.com:3307', 'usuario_mysql', 'contraseña_mysql'
$localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost)//Conexión a nuestro servidor mysql
or
trigger_error(mysql_error(),E_USER_ERROR); //mensaaje de error si no se puede conectar
mysql_select_db($database_localhost, $localhost);//seleccion de la base de datos con la qu se desea trabajar
//variables que almacenan los valores que enviamos por nuestra app, (observar que se llaman igual en nuestra app y aqui)
$id=$_POST['id'];
$nombre=$_POST['nombre'];
$apellidos=$_POST['apellidos'];
$email=$_POST['email'];
$dni=$_POST['dni'];
$contrasenya=$_POST['contraseña'];
$usuario=$_POST['usuario'];
$edad=$_POST['edad'];
$query_search = "insert into usuario(id,nombre,apellidos,email, dni, contraseña, usuario, edad) values ('".$id."','".$nombre."','".$apellidos."','".$email."','".$dni."','".$contrasenya."','".$usuario."','".$edad."')";//Sentencia sql a realizar
$query_exec = mysql_query($query_search) or die(mysql_error());//Ejecuta la sentencia sql.
/* Consignar la transación */
if (!mysqli_commit($localhost)) {
print("Falló la consignación de la transacción\n");
exit();
}
/* Cerrar la conexión */
mysqli_close($localhost);
?>
Другой:
<?php
$id=$_POST['id'];
$nombre=$_POST['nombre'];
$apellidos=$_POST['apellidos'];
$email=$_POST['email'];
$dni=$_POST['dni'];
$contrasenya=$_POST['contraseña'];
$usuario=$_POST['usuario'];
$edad=$_POST['edad'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "xabiagame";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection fallida: " . $conn->connect_error);
}
$sql = "INSERT INTO usuario (id,nombre,apellidos,email, dni, contraseña, usuario, edad)
VALUES ('$id','$nombre','$apellidos','$email','$dni','$contrasenya','$usuario','$edad')";
if ($conn->query($sql) === TRUE) {
echo "se creo el usuario";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
Я не знаю, что это моя ошибка .. Кажется, что все хорошо, я думаю ..
Ваш код широко открыт для ** SQL-инъекций ** атак. просто представьте, что кто-то POSTing $ edad like ''); DROP TABLE usuario; - '- пожалуйста, используйте параметризованные инструкции для обеспечения безопасности вашей системы. –
@FranzGleichmann это окончательный проект для моей средней школы, мне все равно, что не знаю, какие-то атаки. Я знаю, что вы правильно это говорите и благодарите за консультацию, но, я знаю, я просто пытаюсь вставить или получить информацию .. когда я уже сделал это, я сосредоточусь на параметризованных заявлениях ... Спасибо за ваш ответ: D – AlbusAllDay
ну, я не мог этого знать. во всяком случае: это школьный проект ** нет ** извинения за написание ненадежного кода, так как таким образом вы тренируетесь, чтобы писать ненадежный код в будущем. также: ваш код будет разорваться в любое время, когда кто-то вставляет любое значение, содержащее '' '. –