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", $username, time()+86400*30);
setcookie("pas", $password, time()+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");
    }
}
?>    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));
}
?>    gracias
 
 



