// 0 ?registar&username
if(isset($_GET['registar'])){
require_once("../connection.php");
$username=addslashes($_GET['username']);
$table="users";
$sql="SELECT * FROM $table WHERE username='$username'";
$query=mysqli_query($connect, $sql) or die("erro1");
$total=mysqli_num_rows($query);
if($total==0){
// 1 regista quando não existir username na tabela
// gerar o token
$chars = ' 2_34578ABCEFJK_LMSTUZacefghuvyz';
$maxChars=strlen($chars);
$token = '';
for ($i = 0; $i < 20; $i++)
$token .= $chars[mt_rand(1, $maxChars)];
$sql="INSERT INTO $table (username, token) VALUES ('$username', '$token')";
mysqli_query($connect, $sql) or die("erro2");
// enviar um email ao user mas neste caso simulamos com um página nova com um link
$caminho="http://localhost:8080/aula7/users/registoUserEmail.php?username=$username&token=$token";
} else {
// 2 não regista se existir e informa que já está registado através da variavel repetido
$caminho="registar.php?repetido";
}
header("Location:$caminho");
}
?>
<!DOCTYPE html>
<html lang="pt">
<head>
<meta charset="UTF-8">
<title>Registo de novo utilizador</title>
</head>
<body>
<?php if(isset($_GET['repetido'])){?>
<div>O utilizador já se encontra registado.</div>
<?php } ?>
<div>
<h3>Novo registo de utilizador</h3>
<form>
<input type="text" name="username" required placeholder="Email" autofocus>
<input type="submit" name="registar" value="Registar User">
</form>
</div>
</body>
</html>
*************************************************************************
<?php
# registoUserEmail.php
$username=$_GET['username'];
$token=$_GET['token'];
$caminho="http://localhost:8080/aula7/users/confirmarUser.php?username=$username&token=$token";
?>
<a href="<?php echo $caminho;?>">Clique aqui para ativar o seu registo</a>
************************************************************************
<?php
# confirmarUser.php
# gerar password
$username=$_GET['username'];
$token=$_GET['token'];
$table="users";
require_once("../connection.php");
$sql="SELECT id FROM $table WHERE username LIKE '$username' AND token LIKE '$token' AND estado=0";
$testeQuery=mysqli_query($connect, $sql);
$totalTeste=mysqli_num_rows($testeQuery);
# se o estado da tabela users for igual 0 que significa que o token não foi usado
if($totalTeste==1){
// posso ativar
# registar passwords
$chars = ' 2_34578ABCEFJK_LMSTUZacefghuvyz';
$maxChars=strlen($chars);
$password = '';
for ($i = 0; $i < 8; $i++)
$password .= $chars[mt_rand(1, $maxChars)];
$table="passwords";
$sql="INSERT INTO $table (psw) VALUES ('$password')";
mysqli_query($connect, $sql) or die("erro");
$idPassword=mysqli_insert_id($connect); // recupera o id gerado no auto incremento da tabela passwords
# registar users_passwords
$table="users_passwords";
$fetchUsers=mysqli_fetch_assoc($testeQuery);
$idUser=$fetchUsers['id'];
$sql="INSERT INTO $table (idUser, idPassword) VALUES ($idUser, $idPassword)";
mysqli_query($connect, $sql) or die("erro");
# registar users_privilegios
$table="users_privilegios";
$idPrivilegio=2;
$sql="INSERT INTO $table (idUser, idPrivilegio) VALUES ($idUser,$idPrivilegio)";
mysqli_query($connect, $sql);
# alterar o estado do user para 1
$table="users";
$sql="UPDATE $table SET estado = 1 WHERE id=$idUser";
mysqli_query($connect, $sql);
// enviar por email a confirmação do registo e a password ao user
$msg="ok";
}else{
// já foi ativado
$msg="nok";
}
header("Location:http://localhost:8080/aula7/login.php?msg=$msg");
?>
Sem comentários:
Enviar um comentário