Foros del Web » Programando para Internet » PHP »

poder actualizar solo registro de usuario conectado

Estas en el tema de poder actualizar solo registro de usuario conectado en el foro de PHP en Foros del Web. supongo que es una simpleza pero soy bastante novato, tengo un sistema de autentificación con php-mysql y quiero que los usuarios puedan cambiar sus datos, ...
  #1 (permalink)  
Antiguo 21/05/2006, 03:36
 
Fecha de Ingreso: marzo-2003
Mensajes: 225
Antigüedad: 21 años, 1 mes
Puntos: 0
poder actualizar solo registro de usuario conectado

supongo que es una simpleza pero soy bastante novato,
tengo un sistema de autentificación con php-mysql y quiero que los usuarios puedan cambiar sus datos, pero solo los suyos,

este es el login (hay un par de cookies para recordar contraseñas):

Código PHP:
<?php
if (isset($checkbox)) {
setcookie("usu"$usernametime()+86400*30);
setcookie("pas"$passwordtime()+86400*30);
}
?>
<?php
session_start
(); 
?>
<?php 
require_once('../Connections/zona.php'); ?>
<?php
$IP 
$REMOTE_ADDR
$myUsername_rsLogin "0";
if (isset(
$HTTP_POST_VARS['username'])) {
  
$myUsername_rsLogin = (get_magic_quotes_gpc()) ? $HTTP_POST_VARS['username'] : addslashes($HTTP_POST_VARS['username']);
}
$myPassword_rsLogin "0";
if (isset(
$HTTP_POST_VARS['password'])) {
  
$myPassword_rsLogin = (get_magic_quotes_gpc()) ? $HTTP_POST_VARS['password'] : addslashes($HTTP_POST_VARS['password']);
}
mysql_select_db($database_zona$zona);
$query_rsLogin sprintf("SELECT Socio, Contraseña FROM socios WHERE Socio = '%s' AND Contraseña = PASSWORD('%s')"$myUsername_rsLogin,$myPassword_rsLogin);
$rsLogin mysql_query($query_rsLogin$zona) or die(mysql_error());
$row_rsLogin mysql_fetch_assoc($rsLogin);
$totalRows_rsLogin mysql_num_rows($rsLogin);

if(
$HTTP_POST_VARS['action']=="login"){
    if(
$totalRows_rsLogin==0){
        
$errorMessage "error de conexión";
    } else {
        
$query_rsMas sprintf("UPDATE socios SET visita = CURDATE(), ip = '$IP', contador = contador+1 WHERE Socio = '%s' AND Contraseña = PASSWORD('%s')"$myUsername_rsLogin,$myPassword_rsLogin);
        
mysql_query($query_rsMas$zona) or die(mysql_error());
        
mysql_free_result($rsLogin);
        
session_register("usu");
        
$HTTP_SESSION_VARS['usu'] = $HTTP_POST_VARS['username'];
        
header("Location: ../socios/soclis.php");
    }
}
?>
y luego un formulario para que el usuario pueda cambiar sus datos,
pero solo los suyos, claro: el UPDATE solo debe funcionar sobre el usuario conectado, la variable de sesión es "usu" que corresponde al campo "socio",
por lo que la condición debe ser socio=usu pero no doy con ello;

las lineas comentadas son las que he ido probando pero o no se actualiza, o me da error de sintaxis, o me indica variable inesperada cadena espacio en blanco..,

Código PHP:
<?php require_once('../../Connections/zona.php'); ?>
<?php
function GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  
//$updateSQL = sprintf("UPDATE socios SET Nom=%s, Apellidos=%s, email=%s WHERE Socio = '$usu' ",
  //$updateSQL = sprintf("UPDATE socios SET Nom=%s, Apellidos=%s, email=%s WHERE Socio = '$username' ",
  //$updateSQL = sprintf("UPDATE socios SET Nom=%s, Apellidos=%s, email=%s WHERE Socio = '$myUsername_rsLogin' ",
  //$updateSQL = sprintf("UPDATE socios SET Nom=%s, Apellidos=%s, email=%s WHERE Socio = '$HTTP_SESSION_VARS['usu']' ",
  //$updateSQL = sprintf("UPDATE socios SET Nom=%s, Apellidos=%s, email=%s WHERE Socio = '$HTTP_POST_VARS['username']' ",
                       
GetSQLValueString($_POST['nombre'], "text"),
                       
GetSQLValueString($_POST['apellidos'], "text"),
                       
GetSQLValueString($_POST['correo'], "text"));

  
mysql_select_db($database_zona$zona);
  
$Result1 mysql_query($updateSQL$zona) or die(mysql_error());

  
$updateGoTo "../../socios/soclis.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$updateGoTo .= (strpos($updateGoTo'?')) ? "&" "?";
    
$updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$updateGoTo));
}
?>
¿donde está el error?
gracias

Última edición por jossxx; 21/05/2006 a las 12:24
  #2 (permalink)  
Antiguo 21/05/2006, 14:11
Avatar de jorpcolombia  
Fecha de Ingreso: junio-2005
Ubicación: Bogotá
Mensajes: 105
Antigüedad: 18 años, 10 meses
Puntos: 0
Código:
$updateSQL = sprintf("UPDATE ´socios´ SET ´Nom´= $_POST['nombre'], ´Apellidos´ = $_POST['apellidos'], ´email´ = $_POST['correo'] WHERE ´Socio´ = $usu"); 
__________________
:pensando:¡No a lo inaccesible! ¡Sí a lo simple!:pensando
  #3 (permalink)  
Antiguo 22/05/2006, 02:05
 
Fecha de Ingreso: marzo-2003
Mensajes: 225
Antigüedad: 21 años, 1 mes
Puntos: 0
gracias jorpcolombia, pero algo sigue fallando:

Código PHP:
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  
$updateSQL sprintf("UPDATE ´socios´ SET ´Nom´= $_POST['nombre'], ´Apellidos´ = $_POST['apellidos'], ´email´ = $_POST['correo'] WHERE ´Socio´ = $usu"));
  
//$updateSQL = sprintf("UPDATE socios SET Nom= $_POST['nombre'], Apellidos = $_POST['apellidos'], email = $_POST['correo'] WHERE Socio = $usu"));
  //  $updateSQL = sprintf("UPDATE socios SET Nom=%s, Apellidos=%s, email=%s WHERE Socio = $usu"),
  //                     GetSQLValueString($_POST['nombre'], "text"),
  //                     GetSQLValueString($_POST['apellidos'], "text"),
  //                     GetSQLValueString($_POST['correo'], "text"));

  
mysql_select_db($database_zona$zona);
  
$Result1 mysql_query($updateSQL$zona) or die(mysql_error());

  
$updateGoTo "../../socios/soclis.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$updateGoTo .= (strpos($updateGoTo'?')) ? "&" "?";
    
$updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$updateGoTo));

me aparece:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
  #4 (permalink)  
Antiguo 22/05/2006, 06:20
 
Fecha de Ingreso: marzo-2003
Mensajes: 225
Antigüedad: 21 años, 1 mes
Puntos: 0
sigo probando,
lo que más cerca anda es esto pero me dice que hay un error de sintaxis en linea 1 cerca de ""

Código PHP:
<?php require_once('../../Connections/zona.php'); ?>
<?php
function GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}


if ((isset(
$_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  
$updateSQL sprintf("UPDATE socios SET Nom=%s, Apellidos=%s, email=%s WHERE Socio = $usu",
                       
GetSQLValueString($_POST[nombre], "text"),
                       
GetSQLValueString($_POST[apellidos], "text"),
                       
GetSQLValueString($_POST[correo], "text"));
                       
  
mysql_select_db($database_zona$zona);
  
$Result1 mysql_query($updateSQL$zona) or die(mysql_error());
  
$updateGoTo "../../socios/soclis.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$updateGoTo .= (strpos($updateGoTo'?')) ? "&" "?";
    
$updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$updateGoTo));
}
?>
´

saludos nuevamente
  #5 (permalink)  
Antiguo 22/05/2006, 08:58
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 5 meses
Puntos: 281
ese codigo es de dreamweaver. debes tener problemas con el required. quitalo y prueba sin el include de la coneccion. obviamente lo nesecitas para dale update, pero lo que quiero saber es si es el required que esta dando problemas. Si es asi es mejor que hagas el Update record de nuevo.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:27.