Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Oi gente!
Seguinte:
Estou querendo fazer um sistema de assinatura, com data de validade.
Já tenho toda a base pronta, só não sei como fazer uma forma de verificar essa data.
Por hora estou registrando a data e pensei em algo assim:
<?php
$data_validade = "2019-04-26";
if($data_validade <= date('Y-m-d')){
header("Location: index");
$_SESSION['msg'] = "Conta expirada, realize um novo pagamento";
}
?>
Mas creio que isso não funcione.
Se tiver alguma função ou ferramenta que possa fazer essa verificação eu gostariaTestei aqui e ele simplesmente entra normalmente.
Fiz dessa forma:
<?php
$validade = strtotime($row_usuario['data_validade']);
if( $data_validade <= strtotime(date('Y-m-d'))){
header("Location: index.php");
$_SESSION['login'] = "Conta expirada, realize um novo pagamento";
}else{
}
?>
OBS: A data de validade do usuário está fora da validade>
19 minutos atrás, WitchMad disse:
if( $data_validade <= strtotime(date('Y-m-d'))){
Troca esse $data_validade por $validade
>
20 minutos atrás, WitchMad disse:
$row_usuario['data_validade']
Qual o dado que está sendo passado aqui?
Para dar um contexto melhor vou postar o código na integra
<?php
include_once("../conexao.php");
session_start();
if (!empty($_SESSION['id'])){
header("Location: home.php");
}
$btnLogin = filter_input(INPUT_POST, 'btnLogin', FILTER_SANITIZE_STRING);
if($btnLogin){
$dados = filter_input_array(INPUT_POST, FILTER_DEFAULT);
$sql = "SELECT * FROM users WHERE email='" . $dados['email'] . "'";
$query = mysqli_query($conn, $sql);
if($query){
$row_user = mysqli_fetch_assoc($query);
if(password_verify($dados['password'], $row_user['password'])){
//Verificação da Validade
$validade = strtotime("2019-06-27");
if( $validade <= strtotime(date('Y-m-d'))){
header("Location: index.php");
$_SESSION['login'] = "Conta expirada, realize um novo pagamento";
}else{
$_SESSION['msg'] = "OK";
}
if($dados['manter']){
setcookie("email", $dados['email'], (time() + (31 * 24 * 3600)));
setcookie("password", $dados['password'], (time() + (31 * 24 * 3600)));
}
$_SESSION['id'] = $row_user['id'];
$_SESSION['name'] = $row_user['name'];
$_SESSION['email'] = $row_user['email'];
header ("Location: home.php");
}else{
$_SESSION['login'] = "<div class='alert alert-danger' role='alert'>Email ou Senha incorreto</div>";
}
}else{
$_SESSION['login'] = "<div class='alert alert-danger' role='alert'>Não foi possível conectar</div>";
}
}
?>
Depois das alterações que precisava fazer (me toquei que a $row_usuario tava errada msm), continuou a mesma coisa...
Já testei pondo o valor em si na variável $validade e dá na mesmaConsegui resolver da seguinte forma:
-
Fiz com que quando verificasse a senha, adicionasse uma $_SESSION['data_validade'] que iria ter o valor do $row_user['data_validade']
-
A página que verifica se a conta está ou não expirada é a home.php
-
Caso tiver expirada é redirecionado para a página index.php (página de login) e é exibido a mensagem que a conta está expirada
O código na home.php ficou dessa forma:
<?php
$data_validade = strtotime($_SESSION['data_validade']);
if( $data_validade <= strtotime(date('Y-m-d')) ){
setcookie("email", "", (time() + (3 * 24 * 3600)));
setcookie("password", "", (time() + (3 * 24 * 3600)));
unset($_SESSION['id'], $_SESSION['name'], $_SESSION['email']);
$_SESSION['login'] = "<div class='alert alert-warning' role='alert'>Conta Expirada - Necessário realizar um novo pagamento</div>";
header("Location: index.php");
}
?>
Você pode usar o STRTOTIME para fazer essa verificação de datas.
https://www.php.net/manual/pt_BR/function.strtotime.php