Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: Ematador en Mayo 17, 2011, 02:07:47 AM

Título: [SOLUCIONADO] ¿$_POST devuelve los valores siempre en string?
Publicado por: Ematador en Mayo 17, 2011, 02:07:47 AM
Bueno estoy haciendo el ejercicio de la unidad I y cuando quiero saber el tipo de variable de un numero que envié anteriormente siempre me dice que es string (aunque sea un integer).

Código (php) [Seleccionar]
<html>
<head> <title> EJERCICIOS </title> </head>
<form action="" method="POST">
Ingrese un numero: <input type="text" name="numero"><br>
<input type="submit" name="enviar" value="Enviar"> </form>
<?php
if(isset($_POST['enviar'])) {
$numero=$_POST['numero'];
echo gettype($numero);
?>

</html>


Ahí el código, capaz estoy haciendo algo mal, pero $numero siempre es string.
Título: Re:[DUDA] ¿$_POST devuelve los valores siempre en string?
Publicado por: deleted en Mayo 17, 2011, 04:28:05 PM
siempre cuando haces get o post es string pero en el momento que hagas una suma resta etc.. se convierte automaticamente en un int vamos un numero. Esta es una de las cosas buenas de php no tienes que hacer las conversiones eternas entre string y integer. Aunque creo que si modificas
<html>
<head> <title> EJERCICIOS </title> </head>
<form action="" method="POST">
Ingrese un numero: <input type="esto" name="numero"><br>
<input type="submit" name="enviar" value="Enviar"> </form>
por number o algo por el estilo deberia solo coguer numeros
Título: Re:[DUDA] ¿$_POST devuelve los valores siempre en string?
Publicado por: Xt3mP en Mayo 17, 2011, 07:41:56 PM
Como dice leinad, cuando pasas por GET o POST siempre es string, más sin embargo cuando es procesado se puede utilizar la función is_numeric() (la dije en la unidad I) para comprobar que realmente sea un número, ejemplo:

Código (php) [Seleccionar]

<html>
<head> <title> EJERCICIOS </title> </head>
<form action="" method="POST">
Ingrese un numero: <input type="text" name="numero"><br>
<input type="submit" name="enviar" value="Enviar"> </form>
<?php
if(isset($_POST['enviar'])) {
$numero=$_POST['numero'];
echo 'El tipo obtenido por gettype por un POST o GET siempre es: '.gettype($numero).'<br />';
if(
is_numeric($numero)){
echo 
'Es numerico';
}else{
echo 
'No es numerico';
}


?>

</html>


Esto te daría de resultado (si es que le pasamos un número):
El tipo obtenido por gettype por un POST o GET siempre es: string
Es numerico

Fue un error mío no aclarar que mediante POST o GET todo valor siempre se pasa como string pero a la hora de procesar ya puedes hacerlo como gustes, saludos.