entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

aplicar permisos a mis paginas

tengo en mi sitio 2 paginas que deberian ser accesibiles solo para los usuarios registrados en mi base de datos, la pagina de inicio es la siguiente:

www.website.org


<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width">
    <style type="text/css">
        div{margin: 10px;}
        form#registrazione{display:none;}
        form#registrazione:target{display:block;}

    </style>
    <link href="stilo.css" rel="stylesheet" type="text/css">
</head>
<body> 
    <div>
        <h4>Accedi alla tua area riservata oppure <a href="#registrazione">registrati</a></h4>
        <form method="post" action="login.php">
            Email<input type="text" name="email">
            Password<input type="password" name="password">
            <input type="submit" value="login">
        </form>
    </div>
    <div>
        <form id="registrazione" method="post" action="server.php" enctype="multipart/form-data">
            <table>
                <tr>
                    <td>Nickname</td>
                    <td><input type="text" name="name"></td>
                </tr>
                <tr>
                    <td><input type="file"></td>
                </tr>

                <tr>
                    <td><input type="submit" value="invio"></td>
                </tr>
            </table>
        </form>
    </div>
</body>
</html>
<?php
$conex = mysql_connect("localhost", "username");
mysql_select_db("my_database", $conex);

$sql = "SELECT * FROM reti";

$result = mysql_query($sql) ;

echo "<h4>database</h4>";

while($reg = mysql_fetch_array($result)) {
    echo "<div id='risultati'>";
    echo "nome :".$reg['nome']."<br>";

    echo "data inserimento :".$reg['data']."<br>";

    echo "</div>";

}
?>

luego esta el fichero que procesa los datos del formulario y los almacena en el db

www.website.org/server.php

<?php
/* PARAMETRI DI CONESSIONE AL MIO DB MYSQL */
$conex = mysql_connect("localhost", "username");
mysql_select_db("my_database", $conex);

/* PARAMETRI RECUPERATI DAL FORM */
$nickname = $_POST['nickname'];

$data = date('Y-m-d H:i:s');

/** Token **/

if(!@function_exists("create_token")) {
    function create_token($long = 10, $crypt = False) {
        if(!@empty($long)) {
          $index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
          $token = @array();
          $data_token = Null;
          for($i=0;$i<$long;$i++) {
            $data = @rand(0, @strlen($index) - 1);
            $token[] = @substr($index, $data, 1);

          } 
          $token = @array_unique($token, $long);
          $token = @array_values($token);

            for($i=0;$i<@count($token);$i++) $data_token .= $token[$i];
            if($crypt) {
                $pass_hash = @crypt("sha256", $data_token);
                    return (@strlen($pass_hash) < @strlen($data_token) ? @hash("sha512", $pass_hash) : $pass_hash);
            }else {
                return $data_token;

            }

        }else{
          return false;
        }
    }
}

/* controllo se il token gia esiste nel database, se e positivo rigenero il token */

do {
    $token = @create_token();
    $control_token = "SELECT token FROM utenti WHERE token='$token'";
    $query = @mysql_query($control_token);
    $row = @mysql_fetch_array($query);
}while($row["token"] == $token);

/* PARAMETRI EMAIL*/
$destinatario = $email;
$ogetto = "CONFERMA LA TUA REGISTRAZIONE";
$mesaggio = "clicka sul link per confermare la tua registrazione http://wwww.website.org/conferma.php?token=$token";

/* inserisco nel database i dati dell'utente */
$sql = "INSERT INTO utenti (id, nickname, iscrizione, token, attivo)
    VALUES (NULL, '$nickname', '$data', '$token', '0')" ;

mysql_query($sql) or die (mysql_error());

mail($destinatario, $ogetto, $mesaggio);

echo "recibira un mensaje por email";

?>

el problema de este fichero es que si accedo a la pagina por medio de url me muestra el mensaje "recibira un mensaje por email" y esto no deberia ocurrir (el mensaje deberia ser mostrado solo a quien completa el formulario de registracion), lo que quiero es que si alguien lo hace por medio de url lo redireccione a la pagina de inicio.

luego esta el otro fichero "database.php" que seria el panel de control del usuario y se encargaria de recibir datos del usuario y almacenarlos en una tabla de mi base de datos (para su posterior vista en la pagina de inicio), esta pagina deberia ser visible solo para los usuarios registrados, sin embargo si accedo por la url me muestra otra vez el mensaje del echo "bienvenido usuario".

www.website.org/database.php

<?php

$nome = $_GET['nome'];

$data = date('Y-m-d H:i:s');

$conex = mysql_connect("localhost", "username");
mysql_select_db("my_database", $conex);

$sql = "INSERT INTO reti(id, nome, data) 
VALUES (NULL, '$nome', '$data')";

mysql_query($sql) or die(mysql_error());

echo "bienvenido usuario";

?>

1 Respuesta

1voto

FelipeMedel Puntos7400

respondiendo a tu pregunta, el control de acceso a la aplicación por url (autenticando usuario), lo haces controlando las cookies y las sesiones, te dejo algunas documentaciones sobre el tema ---> aquí
tambien puedes ver este link

si utilizas algún framework, tendrías que entrar a mirar el control de autenticación que viene en dicho framework, de igual forma encontraras muchos ejemplos en la web...

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta