Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: VintageChanel en 6 Agosto 2017, 20:25 pm



Título: [Resuelto] Porque no puedo establecer los valores para las variables POST?
Publicado por: VintageChanel en 6 Agosto 2017, 20:25 pm
Hola, estoy desarrollando una applicacion para android que se conecta con un servidor. Para comunicar la app con el servidor estoy usando PHP. Y como es la primera vez que uso PHP no tengo ni idea de como hacer funcionar este codigo:

Código:
<?php

$response = array();


if (!empty($_POST['name']) && !empty($_POST['breed']) && !empty($_POST['type']) && !empty($_POST['description']) && !empty($_POST['images']) && !empty($_POST['coords'])) {

$name = $_POST['name'];
$breed = $_POST['breed'];
$type = $_POST['type'];
$description = $_POST['description'];
$images = $_POST['images'];
$coords = $_POST['coords'];


require_once __DIR__ . '/db_connect.php';


$db = new DB_CONNECT();


$result = "INSERT INTO lost_pets (name, breed, type, description, images, coords) VALUES(':name', ':breed', ':type', ':description', ':images', ':coords')";

$stmt = $db->prepare($result);

$stmt->bindParam(':name', $_POST['name'], PDO::PARAM_STR);      
$stmt->bindParam(':breed', $_POST['breed'], PDO::PARAM_STR);
$stmt->bindParam(':type', $_POST['type'], PDO::PARAM_STR);

$stmt->bindParam(':description', $_POST['description'], PDO::PARAM_STR);
$stmt->bindParam(':images', $_POST['images'], PDO::PARAM_STR);  
$stmt->bindParam(':coords', $_POST['coords'], PDO::PARAM_STR);

$stmt->execute();


if ($result) {
    // successfully inserted into database
    $response["success"] = 1;
    $response["message"] = "Product successfully created.";


    echo json_encode($response);
} else {
    // failed to insert row
    $response["success"] = 0;
    $response["message"] = "Oops! An error occurred.";


    echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";


echo json_encode($response);
}
?>

No me carga ningun dato a la base ni desde la app, ni desde el URL. En vez de eso obtengo los siguientes resultados:

Citar
{"success":0,"message":"Required field(s) is missing"}.

Cuando trato de hacer print_r($_POST) me dice Array().
No tengo ni idea de porque no funciona el codigo, espero que me puedan ayudar, Muchas Gracias.


Título: Re: Porque no puedo establecer los valores para las variables POST?
Publicado por: [.:: NauJFracT ::.] en 6 Agosto 2017, 21:51 pm
Le mandas el post por android studio?


Título: Re: Porque no puedo establecer los valores para las variables POST?
Publicado por: engel lex en 6 Agosto 2017, 21:58 pm
y tu código de envío?


Título: Re: Porque no puedo establecer los valores para las variables POST?
Publicado por: Luis Leon B en 7 Agosto 2017, 08:04 am

Cuando trato de hacer print_r($_POST) me dice Array().
No tengo ni idea de porque no funciona el codigo, espero que me puedan ayudar, Muchas Gracias.

Intenta hacer
Código:
curl --data " name=1&breed=1&type=1&description=1&images=1&coords=1" https://ejemplo.com/archivo.php

Si funciona, seguro es el cliente. ¿En qué lo estás desarrollando? Te recomiendo usar React y React Native o Ionic y Angular 2, las apps hibridas son la opción más rápida y portable para desarrolladores web.

Es más fácil hacer una API rest en Express js. Con
Código:
app.post("/post_:argumento1_:argumento2", () => { ... });


Título: Re: Porque no puedo establecer los valores para las variables POST?
Publicado por: VintageChanel en 8 Agosto 2017, 16:38 pm
Finalmente ya encontre el error.

En vez de hacer ese if al principio, hice la conexion y despues comprobe, con un if, si habia sido exitosa. Ahi me di cuenta que no estaba usando el metodo connect (que era el que retornaba la conexion) de la variable $db que contenia la clase DB_CONNECT.
Y despues me di cuenta que tenia un error de tipeo en la clase connect, de DB_CONNECT.

Bueno no era mu dificil, pero despues de todo esta es mi primera vez interactuando con un servidor y usando php.  :laugh:

Muchas gracias por todas sus respuestas!