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";
?>