Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/05/2006, 03:36
jossxx
 
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