сессия — Php = $ _SESSION = & gt; не может отобразить сообщение

Я не могу отобразить свое сообщение с $_SESSION внутри моего index.php файл..

Это прекрасно работает с простым предупреждением, хотя ..

Вот мой action.php :

<?php
require '../includes/config.inc.php';
require '../lib/DB.php';
$dbh = DB::getInstance();// Getting the requested variables for the activation
$id = $_GET['log'];
$key = $_GET['key'];

// Getting the key in the table user => called : activationKey

$sql = "SELECT activationKey,activated FROM users WHERE id = :id";
$result = $dbh->prepare($sql);
$result->execute(['id' => $id]);
$user = $result->fetchObject();
$count = $result->rowCount();

if($count > 0) {
$keyDB = $user->activationKey;  // Getting the key
$activatedUser = $user->activated; // Activated statut (0 or 1)

// We check if the user is activated
if($activatedUser == '1') // If user is already activated
{
header('location: ../?page=home');
$_SESSION['msg'] = 'Your account is already activated !';
}
else // Else
{
if($key == $keyDB)
// The two keys from database and the link ($_GET['key'];)
// are being compared
{
// If they match => account is being activated
// We switch "activated" value to 1 inside the database.
$sql="UPDATE users SET activated = 1 WHERE id = :id";
$result=$dbh->prepare($sql);
$result->execute(['id' => $id]);
$_SESSION['msg'] = 'Your  account has been activated!';
header('location: ../?page=home');
}
else // Else : if the two keys don't match
{
$_SESSION['msg'] = 'Issue : your  account cannot be activated!';
header('location: ../?page=home');
}
}
}
else //$count is equal to 0 => User is not in the database.
{
$_SESSION['msg'] = 'There is a problem with your account. Please contact the administrator of the website.';
header('location: ../?page=home');
}

И вот часть моего index.php :

<?php if (isset($_SESSION['msg']) && $_SESSION["msg"] !== 0): ?>
<div class="alert alert-success" role="alert">
<strong><?php echo $_SESSION['msg'] ?></strong>
</div>
<?php unset($_SESSION['msg']);
endif; ?>

Все работает отлично, дело в том, что я просто не могу показать свое сообщение внутри моего index.php …

1

Решение

вещи нужно учитывать:

1.session_start(); необходимо в верхней части каждой страницы PHP, если вы собираетесь иметь дело с SESSION на этой странице. так что добавьте его на обе страницы (сразу после запуска <?php).

2.

header('location: ../?page=home');
$_SESSION['msg'] = 'Your account is already activated !';

Это неверно, потому что вы уже перенаправили через header(), Куры следующей строки не выполнят.

Так и должно быть, как показано ниже:

$_SESSION['msg'] = 'Your account is already activated !';
header('location: ../?page=home');

3. Я думаю, что этот синтаксис: — $user_id => $getId = $_GET['log']; это неверно. Это должно быть $user_id = $getId = $_GET['log'];, (Я не уверен, потому что я никогда не видел такой синтаксис, который вы использовали)

4. Вместо <?php if (isset($_SESSION['msg']) && $_SESSION["msg"] !== 0): ?> Вы можете просто использовать <?php if (!empty($_SESSION['msg'])): ?>

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]