Foros del Web » Programando para Internet » PHP »

error con formulario en php.

Estas en el tema de error con formulario en php. en el foro de PHP en Foros del Web. hola , tengo este formulario en mi web para que los usuario puedan editar su perfil, recojo los datos de la Sesion y los imprimo ...
  #1 (permalink)  
Antiguo 20/06/2009, 10:57
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 4 meses
Puntos: 1
Exclamación error con formulario en php.

hola, tengo este formulario en mi web para que los usuario puedan editar su perfil, recojo los datos de la Sesion y los imprimo en el value :

modificar.php

Código PHP:
<h3>editar datos personales</h3>
<div id="general-form"><form id="loginForm" name="loginForm" method="post" action="guardar_datos.php">
  <table width="300" border="0" align="center" cellpadding="2" cellspacing="0">
   
 <tr> <input type="hidden" name="member_id" value="<? echo $_SESSION["REQUEST_MEMBER_ID"];?>" style="display:none">
      <th>nombre </th>
      <td><input name="firstname" type="text" class="textfield" id="firstname" value="<? echo $_SESSION["REQUEST_FIRST_NAME"];?>" /></td>
    </tr>
    <tr>
      <th>apellidos </th>
      <td><input name="lastname" type="text" class="textfield" id="lastname" value="<? echo $_SESSION["REQUEST_LAST_NAME"];?>"/></td>
    </tr>
    <tr>
      <th width="124">nombre de usuario</th>
      <td width="168"><input name="username" type="text" class="textfield" id="login"disabled=disabled readonly=readonly value="<? echo $_SESSION["REQUEST_LOGIN"];?>" /></td>
    </tr>
    <tr>

 <tr>
      <th>edad</th>
      <td><input name="edad" type="text" class="textfield" id="edad" value="<? echo $_SESSION["REQUEST_EDAD"];?>"/></td>
    </tr>

<th>pagina web </th>
      <td><input name="paginaweb" type="text" class="textfield" id="paginaweb" value="<? echo $_SESSION["REQUEST_WEB"];?>" /></td>
    </tr><tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="guardar cambios" /></td>
    </tr>


  </table>
</form>
-------------------------


este es el archivo que lo procesa y actualiza los cambios en la db:

guardar_datos.php

Código PHP:
 <?php

$member_id 
$_POST['member_id'];  
$firstname $_POST['firstname'];  
$lastname $_POST['lastname'];
$paginaweb $_POST['paginaweb'];  
$edad $_POST['edad'];  

  
  
//luego haces el query update
$link mysql_connect(DB_HOSTDB_USERDB_PASSWORD);
if(!
$link) {
        die(
'Failed to connect to server: ' mysql_error());
    }
    
    
//Select database
    
$db mysql_select_db(DB_DATABASE);
    if(!
$db) {
        die(
"Unable to select database");
    }

$sql="update USUARIOS set firstname='".$firstname."',paginaweb='".$paginaweb."', edad='".$edad."',lastname='".$lastname."' where member_id=".$member_id;
mysql_query($sql,$link);

echo 
"perfil actualizado con exito!";  
?>
ahora os cuento el problema, y es que por ejemplo si yo me logeo con el usuario : demo voy a la pagina y entro en modificar.php y sale el formulario con mis datos cargados desde la Sesion, modifico lo que quiera y se envia a guardar_datos.php y los actualiza, hasta ahi todo bn.

xro si yo cojo el formulario y lo guardo en mi disco duro,

modificando este campo oculto:
Código PHP:
<input type="hidden" name="member_id" value="1" style="display:none"
tiene puesto el 1 por que es el ID del usuario : demo

pero si yo pongo por ejemplo en el value : 2 lo guardo, lo ejecuto en mi navegador y pongo lo que quiera en los campos: nombre: apellidos.etc pongo en el action: http://miweb.com/guardar_datos.php y edito al usuario con el ID nº 2 estado conectado con mi cuenta: demo que tiene el ID 1..

k puedo hacer para arreglar esto?¿

alguna parte del codigo esta mal?¿

muchas gracias por la ayuda..
  #2 (permalink)  
Antiguo 20/06/2009, 11:07
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: error con formulario en php.

tu problema es recibir el member_id por medio de un POST, siempre puede ser modificado, lo mejor esque como ya lo tienes en la session lo utilices directamente desde esta, así nadie podrá cambiarlo

es decir
$member_id = $_SESSION["REQUEST_MEMBER_ID"];

otra cosa, intenta validar los datos recibidos por medio del POST, pues según el codigo que acabas de enseñar, un SQL-INJECTION es suma mente fácil.
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter
  #3 (permalink)  
Antiguo 20/06/2009, 13:21
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 4 meses
Puntos: 1
De acuerdo Respuesta: error con formulario en php.

muchas gracias , lo eh conseguido arreglar..

pero lo que nose es como limpiar las variable pasadas por post.

eh buscado por ahi nose si con esto vale:
Código PHP:
unset($_POST['campo']); 

y si este codigo sirve, como puedo agregar mas campos para sanear.
es decir repito la funcion unset asi :


Código PHP:
unset($_POST['campo1']);
unset(
$_POST['campo2']);
unset(
$_POST['campo2']); 

o se puede hacer todo dentro de un unset:

Código PHP:
unset($_POST['campo''campo2''campo3']); 

gracias
  #4 (permalink)  
Antiguo 20/06/2009, 13:26
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: error con formulario en php.

Puedes simplemente hacer unset($_POST), aunque ... no es necesario, ya que las variables enviadas por formulario con el metodo POST solo existen durante el script que las procesa, luego de esto se pierden para siempre :P
  #5 (permalink)  
Antiguo 20/06/2009, 13:44
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: error con formulario en php.

Cita:
Iniciado por Ronruby Ver Mensaje
Puedes simplemente hacer unset($_POST), aunque ... no es necesario, ya que las variables enviadas por formulario con el metodo POST solo existen durante el script que las procesa, luego de esto se pierden para siempre :P
me refiero a sanear las varibles enviadas como me ha dixo jaao_death eso es necesario verdad?


mensaje jaao_death:

intenta validar los datos recibidos por medio del POST, pues según el codigo que acabas de enseñar, un SQL-INJECTION es suma mente fácil.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 17:25.