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