Problema al crear usuarios con PHP y MySQL
Buenos dÃas.
Mirad, he creado un formulario para registrar usuarios cuyo código es el siguiente
<?php
//COMPROBACIÓN AUTENTIFICACIÓN ADMINISTRADOR
session_start();
if(($_SESSION["autentificado"]=="SI") && ($_SESSION["admin"]=='SI')){
include("requires/conexbase.php");
/*Recibimos las variables por el metodo POST*/
$user = htmlspecialchars(trim($_POST['user']));
$passa = trim($_POST['passa']);
$passb = trim($_POST['passb']);
$nombre= htmlspecialchars(trim($_POST['nombre']));
$apellido1= htmlspecialchars(trim($_POST['apellido1']));
$apellido2= htmlspecialchars(trim($_POST['apellido2']));
$admin = trim($_POST['admin']);
if($passa==null | $nombre==null | $apellido1==null | $apellido2==null | $user==null | $admin==null){
echo "<br><center><strong>Lo sentimos, algunos campos del formulario anterior están vacÃos.";
echo "<br>En unos segundos volverá a la página anterior.</strong></center>";
?>
<meta http-equiv="refresh" content="3; url=alta_usuarios.php" />
<?
} else {
/*Hacemos la consulta */
$query = sprintf("SELECT login FROM usuarios WHERE usuarios.login='%s'", mysql_real_escape_string($login));
$result=mysql_db_query($db,$query,$conection);
if(mysql_num_rows($result)){
echo "<br><center><strong>El usuario ya existe</center></strong>";
?>
<meta http-equiv="refresh" content="3; url=alta_usuarios.php" />
<?
} else {
mysql_free_result($result);
/* Ahora comprobamos que los dos pass coinciden */
if($passa!=$passb) {
echo "<br><center><strong>Lo sentimos, pero no coinciden las contraseñas.";
echo '<br>En unos segundos volverá a la página anterior.</center></strong>';
?>
<meta http-equiv="refresh" content="3; url=alta_usuarios.php" />
<?
} else {
// Encriptamos "Ciframos" el password y volcamos los datos en nuestra BD
$passa=sha1(md5($passa));
$query = sprintf("INSERT INTO usuarios (login, nombre, apellido1, apellido2, password, admin) VALUES ('%s','%s','%s', '%s','%s', '%s')", mysql_real_escape_string($user), mysql_real_escape_string($nombre), mysql_real_escape_string($apellido1),mysql_real_escape_string($apellido2), mysql_real_escape_string($passa), mysql_real_escape_string($admin));
$result=mysql_db_query($db,$query,$conection);
if(mysql_affected_rows()){
echo "<br><center><strong>Usuario introducido correctamente";
echo "<br>En unos segundos volverá a la página anterior.";
?>
<meta http-equiv="refresh" content="3; url=alta_usuarios.php" />
<?
} else {
echo "<br><center><strong>Error introduciendo el usuario.</center></strong>";
echo "<br>En unos segundos volverá a la página anterior.</strong></center>";
?>
<meta http-equiv="refresh" content="3; url=alta_usuarios.php" />
<?
}
}
}
}
}else {
header("location:index.php");
}
?>
He de decir, que las variables las cojo de un formulario anterior, en una página anterior.
Los usuarios son creados correctamente, el problema está en que al crearlos, me salgo de mi sesión e inicio sesión con el nombre de usuario que acabo de crear, es decir, si estoy conectado como administrador y creo un nuevo usuario llamado Juan, al crear el usuario y actualizarse la página, aparezco automáticamente conectado como Juan.
De igual forma, cuando el proceso de creación de usuarios ha dado un fallo o algo similar, se sale de mi sesión de Administrador y entra en una sesión "en blanco" que no existe.
¿Alguna idea de la parte de código que puede estar mal?
Muchas gracias.
Un saludo.
Mirad, he creado un formulario para registrar usuarios cuyo código es el siguiente
<?php
//COMPROBACIÓN AUTENTIFICACIÓN ADMINISTRADOR
session_start();
if(($_SESSION["autentificado"]=="SI") && ($_SESSION["admin"]=='SI')){
include("requires/conexbase.php");
/*Recibimos las variables por el metodo POST*/
$user = htmlspecialchars(trim($_POST['user']));
$passa = trim($_POST['passa']);
$passb = trim($_POST['passb']);
$nombre= htmlspecialchars(trim($_POST['nombre']));
$apellido1= htmlspecialchars(trim($_POST['apellido1']));
$apellido2= htmlspecialchars(trim($_POST['apellido2']));
$admin = trim($_POST['admin']);
if($passa==null | $nombre==null | $apellido1==null | $apellido2==null | $user==null | $admin==null){
echo "<br><center><strong>Lo sentimos, algunos campos del formulario anterior están vacÃos.";
echo "<br>En unos segundos volverá a la página anterior.</strong></center>";
?>
<meta http-equiv="refresh" content="3; url=alta_usuarios.php" />
<?
} else {
/*Hacemos la consulta */
$query = sprintf("SELECT login FROM usuarios WHERE usuarios.login='%s'", mysql_real_escape_string($login));
$result=mysql_db_query($db,$query,$conection);
if(mysql_num_rows($result)){
echo "<br><center><strong>El usuario ya existe</center></strong>";
?>
<meta http-equiv="refresh" content="3; url=alta_usuarios.php" />
<?
} else {
mysql_free_result($result);
/* Ahora comprobamos que los dos pass coinciden */
if($passa!=$passb) {
echo "<br><center><strong>Lo sentimos, pero no coinciden las contraseñas.";
echo '<br>En unos segundos volverá a la página anterior.</center></strong>';
?>
<meta http-equiv="refresh" content="3; url=alta_usuarios.php" />
<?
} else {
// Encriptamos "Ciframos" el password y volcamos los datos en nuestra BD
$passa=sha1(md5($passa));
$query = sprintf("INSERT INTO usuarios (login, nombre, apellido1, apellido2, password, admin) VALUES ('%s','%s','%s', '%s','%s', '%s')", mysql_real_escape_string($user), mysql_real_escape_string($nombre), mysql_real_escape_string($apellido1),mysql_real_escape_string($apellido2), mysql_real_escape_string($passa), mysql_real_escape_string($admin));
$result=mysql_db_query($db,$query,$conection);
if(mysql_affected_rows()){
echo "<br><center><strong>Usuario introducido correctamente";
echo "<br>En unos segundos volverá a la página anterior.";
?>
<meta http-equiv="refresh" content="3; url=alta_usuarios.php" />
<?
} else {
echo "<br><center><strong>Error introduciendo el usuario.</center></strong>";
echo "<br>En unos segundos volverá a la página anterior.</strong></center>";
?>
<meta http-equiv="refresh" content="3; url=alta_usuarios.php" />
<?
}
}
}
}
}else {
header("location:index.php");
}
?>
He de decir, que las variables las cojo de un formulario anterior, en una página anterior.
Los usuarios son creados correctamente, el problema está en que al crearlos, me salgo de mi sesión e inicio sesión con el nombre de usuario que acabo de crear, es decir, si estoy conectado como administrador y creo un nuevo usuario llamado Juan, al crear el usuario y actualizarse la página, aparezco automáticamente conectado como Juan.
De igual forma, cuando el proceso de creación de usuarios ha dado un fallo o algo similar, se sale de mi sesión de Administrador y entra en una sesión "en blanco" que no existe.
¿Alguna idea de la parte de código que puede estar mal?
Muchas gracias.
Un saludo.