Save user values in MySQL

-1

I have a question, I am making a small web page, which will have a login, each user will have different permissions to access different pages and certain functions, the problem is that I can not find a way to store this information , I do not know whether to use a column for each authorization or just one field and then save all the values for each user in JSON format. I hope you can give me an idea of how to store this information.

    
asked by Carlos Daniel Zárate Ramírez 05.09.2018 в 18:14
source

1 answer

0

Hi Carlos, this is just a valid example, you can adjust it to your needs. When you create a user you must assign a group. You can create different groups of users, according to the group that has access to some permissions. Then in your code you must evaluate the user group by consulting the database to let it access or not to certain parts of the program. You must create a session object and verify that the user has a session open. It's saying something like this:

<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
session_start();

if(isset($_SESSION['name']) && $_SESSION['password'])){

  mysql_connect("localhost", "root", "") or die("no se ha podido connectar...");
mysql_select_db("nueva");

$query = mysql_query("SELECT * FROM USUARIOS WHERE USUARIO='".$_SESSION['name']."'");
$numrows = mysql_num_rows($query);
if($numrows != 0){ // ES DECIR SI EL USUARIO EXISTE...
while($row = mysql_fetch_assoc($query)){

            $bdusuario = $row['USUARIO'];
            $bdpassword = $row['CLAVE'];

        }
if($_SESSION['name']==$bdusuario){
            if($_SESSION['password']==$bdpassword){//AHORA TIENES QUE COMPROBAR EL PASSWORD
//AHORA DEBES CONSULTAR EL GRUPO DEL USUARIO
$query = mysql_query("SELECT * FROM USUARIO_GRUPO WHERE USUARIO='".$_SESSION['name']."'");
//.....
//coloca el resto de tu codigo aqui

include('links.php');
// o mediante includes incluyes la partes a las que va a tener acceso y las que no

}else{

    echo "Acceso no permitido";

}


?>

To the previous code you must add the code that manages the conditions to which you will have access depending on the role or user group you have.

This is an example of what your database might look like:

CREATE TABLE 'USUARIO' (
  'ID_USUARIO' int(11) NOT NULL,
  'USUARIO' varchar(80) COLLATE utf8_spanish_ci NOT NULL,
  'CLAVE' varchar(128) COLLATE utf8_spanish_ci NOT NULL,
  'ONLINE' tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

CREATE TABLE 'USUARIO_GRUPO' (
  'USUARIO' varchar(50) COLLATE utf8_spanish_ci NOT NULL,
  'GRUPO' varchar(15) COLLATE utf8_spanish_ci NOT NULL DEFAULT 'USUARIO'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

CREATE TABLE 'PERSONA' (
  'ID_PERSONA' int(11) NOT NULL,
  'USUARIO_ID' int(11) NOT NULL,
  'NOMBRE' varchar(50) COLLATE utf8_spanish_ci NOT NULL,
  'APELLIDOS' varchar(50) COLLATE utf8_spanish_ci NOT NULL,
  'ID_PROVINCIA' int(11) NOT NULL DEFAULT '35',
  'CODIGO_POSTAL' int(5) NOT NULL,
  'TELEFONO' int(9) NOT NULL,
  'EMAIL' varchar(80) COLLATE utf8_spanish_ci NOT NULL,
  'ID_IMAGEN' int(11) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

CREATE TABLE 'POBLACION' (
  'CODIGO_POSTAL' int(11) NOT NULL,
  'NOMBRE' varchar(50) COLLATE utf8_spanish_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

CREATE TABLE 'PROVINCIA' (
  'ID_PROVINCIA' int(11) NOT NULL,
  'NOMBRE_PROVINCIA' varchar(20) COLLATE utf8_spanish_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

CREATE TABLE 'IMAGEN' (
  'ID_IMAGEN' int(11) NOT NULL,
  'MYMETYPE' varchar(10) COLLATE utf8_spanish_ci NOT NULL,
  'CHARSET' varchar(10) COLLATE utf8_spanish_ci NOT NULL DEFAULT 'UTF-8',
  'NOMBRE_ARCHIVO' varchar(80) COLLATE utf8_spanish_ci NOT NULL,
  'FOTO' mediumblob NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

ALTER TABLE 'IMAGEN'
  ADD PRIMARY KEY ('ID_IMAGEN') USING HASH;

ALTER TABLE 'PERSONA'
  ADD PRIMARY KEY ('ID_PERSONA'),
  ADD KEY 'ID_PROVINCIA' ('ID_PROVINCIA') USING HASH,
  ADD KEY 'ID_IMAGEN' ('ID_IMAGEN') USING HASH,
  ADD KEY 'CODIGO_POSTAL' ('CODIGO_POSTAL') USING BTREE,
  ADD KEY 'USUARIO_ID' ('USUARIO_ID') USING HASH;

ALTER TABLE 'POBLACION'
  ADD PRIMARY KEY ('CODIGO_POSTAL') USING HASH;

ALTER TABLE 'PROVINCIA'
  ADD PRIMARY KEY ('ID_PROVINCIA') USING HASH;

ALTER TABLE 'USUARIO'
  ADD PRIMARY KEY ('ID_USUARIO') USING HASH,
  ADD UNIQUE KEY 'USUARIO' ('USUARIO');

ALTER TABLE 'USUARIO_GRUPO'
  ADD PRIMARY KEY ('USUARIO','GRUPO') USING HASH;

ALTER TABLE 'IMAGEN'
  MODIFY 'ID_IMAGEN' int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE 'PERSONA'
  MODIFY 'ID_PERSONA' int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE 'PROVINCIA'
  MODIFY 'ID_PROVINCIA' int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE 'USUARIO'
  MODIFY 'ID_USUARIO' int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE 'PERSONA'
  ADD CONSTRAINT 'FK_PERSONA_IMG' FOREIGN KEY ('ID_IMAGEN') REFERENCES 'IMAGEN' ('ID_IMAGEN'),
  ADD CONSTRAINT 'FK_PERSONA_POB' FOREIGN KEY ('CODIGO_POSTAL') REFERENCES 'POBLACION' ('CODIGO_POSTAL'),
  ADD CONSTRAINT 'FK_PERSONA_PROV' FOREIGN KEY ('ID_PROVINCIA') REFERENCES 'PROVINCIA' ('ID_PROVINCIA'),
  ADD CONSTRAINT 'FK_PERSONA_USU' FOREIGN KEY ('USUARIO_ID') REFERENCES 'USUARIO' ('ID_USUARIO');

ALTER TABLE 'USUARIO_GRUPO'
  ADD CONSTRAINT 'FK_USU_GRUP_USU' FOREIGN KEY ('USUARIO') REFERENCES 'USUARIO' ('USUARIO');
    
answered by 06.09.2018 в 19:14