Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: NIGHTBIRD en 12 Junio 2010, 14:37 pm



Título: Usar "extract ($_REQUEST)" con method=post en formulario?
Publicado por: NIGHTBIRD en 12 Junio 2010, 14:37 pm
Hola a tod@s, soy nuevo en el mundo de PHP. Bueno, aqui os presento mi primer problemilla en PHP.
Tengo el siguiente formulario html form_ruta_nueva.html  :


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>

<form action="admin_ruta_edit.php" method="post" enctype="text/plain">
<table summary="" width="600" border="6" >
<tr>
<td colspan="2">Nombre:</td>
<td colspan="3"><input type="text" name="nom" size="40"  maxlength="35"></td>
</tr>

<tr>
<td colspan="2">Descripcion:</td>
<td colspan="3"><input type="text" name="descrip" size="40" maxlength="50"></td>
</tr>

<tr>
<td colspan="2">Dias:</td>
<td colspan="3"><input type="text" name="dias" size="40"  maxlength="30"> </td>
</tr>

<tr>
<td colspan="2">Precio:</td>
<td colspan="3"><input type="text" name="precio" size="15"  maxlength="20"> </td>
</tr>

<tr>
<td colspan="2">Número de modalidad:</td>
<td colspan="3"><input type="text" name="moda" size="15" maxlength="20"> </td>
</tr>

<tr>
<td width="20%">Número de zona: </td>
<td colspan="3"><input type="text" name="zona" size="15"  maxlength="20"> </td>
</tr>

<tr>
<td width="20%">Kilómetros: </td>
<td colspan="3"><input type="text" name="km" size="15"  maxlength="20"> </td>
</tr>

<tr>
<td width="20%">Fecha de incio (año/mes/dia): </td>
<td colspan="3"><input type="text" name="finicio" size="15"  maxlength="20"> </td>
</tr>

<tr>
<td width="20%">Fecha de fin (año/mes/dia): </td>
<td colspan="3"><input type="text" name="ffin" size="15"  maxlength="20"> </td>
</tr>

<tr>
<td width="20%">Ficha de informacion: </td>
<td colspan="3"><input type="file" name="info" size="15"  maxlength="20"> </td>
</tr>

<tr>
<td width="20%">Idioma (número): </td>
<td colspan="3"><input type="text" name="idioma" size="15"  maxlength="20"> </td>
</tr>

<tr>
<td colspan="3" aling="center"><input type="submit" name="guardar" value="guardar"></td>
<td colspan="2"><input type="reset" value="Borrar formulario"> </td>
</tr>


//Campo oculto que uso en la pagina php para entrar en la primera condicion if
<input type="hidden" name="nuevo" value="nuevoo">

</table>
</form>

</body>
</html>






Ese formulario html invoca a la siguiente pagina php:

<?php

extract ($_REQUEST);//Esto extrae todas las variables del formulario


//Si hemos invocado a esta página desde form_ruta_nueva.html
if(isset($nuevo)){
$link=mysql_connect("localhost:3307","root","123456");//Conexión con el servidor MySQL
$resul=mysql_select_db("bdrutas");//Seleccionamos la BD

$auton="SELECT COUNT(codRuta) + 1 FROM rutas;";
$result_set=mysql_query($auton);
$fila=mysql_fetch_row($result_set);

$consulta="INSERT INTO rutas(codRuta,nombre_ruta,descripcion_ruta,dias,precio,modalidad,zona,km,FechaInicio,FechaFin,fichaInformacion, idioma)
VALUES (".$fila[0].",'".$nom."','".$descrip."',".$dias.",'".$precio."','".$moda."','".$zona."',".$km.",'".$finicio."','".$ffin."','".$info."',".$idioma.");";

//print($consulta);
$mete=mysql_query($consulta);
if($mete){print "Datos introducidos correctamente";}
else{print "Error al introducir datos";}

mysql_close($link);
}

//Si hemos invocado a esta página desde admin_ruta_list.php
else if (isset($codruta)){
.
.
.
.
.
?>

El problema es que, si en el formulario pongo el method="post", al llamar a la página php, el
extract ($_REQUEST);
no obtiene ninguna variable del formulario html, en cambio, si uso el method="get" , el
extract ($_REQUEST);
si que es capaz de obtener las variables del formulario html.

Es esto normal??

Existe alguna solucion, configuracion, o alguna otra funcion que haga lo mismo que extract ($_REQUEST)??

Gracias de antemano :-).

Un saludo.


Título: Re: Usar "extract ($_REQUEST)" con method=post en formulario?
Publicado por: NIGHTBIRD en 12 Junio 2010, 18:19 pm
Hola de nuevo. Ya lo he solucionado. El "error", era que debia eliminar el:
enctype="text/plain"
en la creacion del formulario.

Aunque no entiendo porque con method=get si me funcionaba.

Un saludo.


Título: Re: Usar "extract ($_REQUEST)" con method=post en formulario?
Publicado por: TeKNo dUKe en 12 Junio 2010, 18:23 pm
Porque por get las cosas no fueron "encodeadas" en ningun formato ya que las mandas por la url y en post las pasa a un texto plano.


Título: Re: Usar "extract ($_REQUEST)" con method=post en formulario?
Publicado por: NIGHTBIRD en 12 Junio 2010, 18:32 pm
Porque por get las cosas no fueron "encodeadas" en ningun formato ya que las mandas por la url y en post las pasa a un texto plano.

Amm, ok, gracias por la info ;)