0
The restricted page is blocked for access via url, but I want to leave the warning on the login screen. For example: when you type the address of the.php corporate page in the url, the system directs you to the login screen and displays the LOGIN TO LOGIN message below the form. It follows below all the code.
Login
<?php
session_start();
?>
<!doctype html>
<form method="POST" action="login/valida.php">
<h2>Área Restrita</h2>
<label>Login</label>
<input name="email_cli" type="email" autofocus required placeholder="Email">
<label>Senha</label>
<input type="password" name="senha_cli" placeholder="Senha (seu CPF)" required maxlength="11"><br>
<button type="submit" class="botao_cadastro">Acessar</button>
</form>
<h4 style="color: red">
<?php if(isset($_SESSION['loginErro'])){
echo $_SESSION['loginErro'];
unset($_SESSION['loginErro']);
}?>
</h4>
<h4 style="color: green">
<?php
if(isset($_SESSION['logindeslogado'])){
echo $_SESSION['logindeslogado'];
unset($_SESSION['logindeslogado']);
}
?>
</h4>
<?php
// Aqui ficaria sua mensagem, por exemplo
if (isset($_SESSION['erro_acesso'])) {
?>
<h4>Faça o login para acessar.</h4>
<?php
}
?>
</html>
valida.php
<?php
session_start();
//Incluindo a conexão com banco de dados
include_once("conexao.php");
//O campo usuário e senha preenchido entra no if para validar
if((isset($_POST['email_cli'])) && (isset($_POST['senha_cli']))){
$usuario = mysqli_real_escape_string($conn, $_POST['email_cli']);
//Escapar de caracteres especiais, como aspas, prevenindo SQL injection
$senha = mysqli_real_escape_string($conn, $_POST['senha_cli']);
$senha = md5($senha);
//Buscar na tabela usuario o usuário que corresponde com os dados digitado no formulário
$result_usuario = "SELECT * FROM clientes WHERE email_cli = '$usuario' && senha_cli = '$senha' LIMIT 1";
$resultado_usuario = mysqli_query($conn, $result_usuario);
$resultado = mysqli_fetch_assoc($resultado_usuario);
//Encontrado um usuario na tabela usuário com os mesmos dados digitado no formulário
if(isset($resultado)){
$_SESSION['usuarioId'] = $resultado['id_cli'];
$_SESSION['usuarioNome'] = $resultado['nome_cli'];
$_SESSION['usuarioNiveisAcessoId'] = $resultado['nivel'];
$_SESSION['usuarioEmail'] = $resultado['email_cli'];
if($_SESSION['usuarioNiveisAcessoId'] == "1"){
header("Location: ../basico.php");
}elseif($_SESSION['usuarioNiveisAcessoId'] == "2"){
header("Location: ../profissional.php");
}elseif($_SESSION['usuarioNiveisAcessoId'] == "3"){
header("Location: ../avancado.php");
}elseif($_SESSION['usuarioNiveisAcessoId'] == "4"){
header("Location: ../empresarial.php");
}else{
$_SESSION['erro_acesso'] = "Faça o login para acessar";
header("Location: ../login.php");
}
//Não foi encontrado um usuario na tabela usuário com os mesmos dados digitado no formulário
//redireciona o usuario para a página de login
}else{
//Váriavel global recebendo a mensagem de erro
$_SESSION['loginErro'] = "Usuário ou senha Inválido";
header("Location: ../login.php");
}
//O campo usuário e senha não preenchido entra no else e redireciona o usuário para a página de login
}else{
$_SESSION['loginErro'] = "Usuário ou senha inválido";
header("Location: ../login.php");
};
?>
php connection.
<?php
$servidor = "localhost";
$usuario = "root";
$senha = "";
$dbname = "clientes_db";
//Criar a conexao
$conn = mysqli_connect($servidor, $usuario, $senha, $dbname);
if(!$conn){
die("Falha na conexao: " . mysqli_connect_error());
}else{
//echo "Conexao realizada com sucesso";
}
?>
verifi_access.php
<?php
session_start();
function verifica_nivel($nivel_de_acesso) {
if (!isset($_SESSION['usuarioNiveisAcessoId']) || $_SESSION['usuarioNiveisAcessoId'] != $nivel_de_acesso) {
$_SESSION['erro_acesso'] = 1;
header('Location: ../login.php');
exit();
}
}
?>
Do you want to block direct access to a file by the url? for example: you have a
connection.class.php
and you don’t want the user to directly access the file?– user76271
Yes. The site is simple and the content is not something to worry about. I just want to prevent it from being accessed by the url.
– Turkish
I will publish the reply;
– user76271