Здравствуйте.
Такой вопрос, после регистрации не видит сессии, где я недосмотрел?
Вот обработчик формы регистрации. В нём после проверки добавления в БД кидает на генерируемую личную страницу пользователя.
session_start();
require_once 'connection.php';
$dbh = new PDO('mysql:host=localhost; dbname=projectboard', $user, $pass);
if (!empty($_POST)){
if ( !isset($_POST['name']) || !isset($_POST['lastname']) || !isset($_POST['email']) || !isset($_POST['pass']) ) {
echo 'Не все данные заполнены!!!';
die;
}
$name = htmlspecialchars($_POST['name']);
$lastname = htmlspecialchars($_POST['lastname']);
$email = htmlspecialchars($_POST['email']);
$pwd = htmlspecialchars($_POST['pass']);
$name_t = trim($name);
$lastname_t = trim($lastname);
$hashed_password = password_hash($pwd, PASSWORD_DEFAULT);
$stmt = $dbh->prepare("INSERT INTO users (name, lastname, email, password) VALUES (:name, :lastname, :email, :pass)");
$stmt->bindParam(':name', $name_t);
$stmt->bindParam(':lastname', $lastname_t);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':pass', $hashed_password);
$falg = $stmt->execute();
if ($falg) {
header ('Location: office.php?id='. $_SESSION['id']);
die;
} else {
echo "Данная электронная почта уже используется. ";?><a href="enter.php" style="color: red">Войдите</a> <?php echo "по этой почте или используйте другую";
die;
}
}
Но почему-то так не работает, когда он кидает на личную страницу, срабатывает такой код для проверки пользовательского контента, чтобы я мог сделать подобие чужой страницы по типу гостя:
session_start();
error_reporting(E_ALL & ~E_NOTICE); //Убираем Notice, а все остальные ошибки выводим
require_once 'connection.php';
$dbh = new PDO('mysql:host=localhost; dbname=projectboard', $user, $pass);
$id = $_SESSION['id'];
$stmt = $dbh->prepare('SELECT name, lastname FROM users WHERE id = :id');
$stmt->bindParam(':id', $id);
$stmt->execute();
$officeID = $_GET['id'];
if(!isset($_SESSION['id'])) {
session_destroy();
header('Location: enterOrReg.html');
exit;
}
Но происходит перевод на страницу где предлагает войти или зарегестрироваться:
<!DOCTYPE html>
<html lang="ru-RU">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="enterOrReg.css">
<title>Войдтие или зарегестрируйтесь | Проектная доска</title>
</head>
<body>
<div>
<button onclick="document.location='enter.php'" class="enter">Войдите</button>
<p>или</p>
<button onclick="document.location='registration.php'">зарегистрируйтесь</button>
</div>
</body>
</html>
На сколько я понимаю, проблема в этой строчке кода на личной странице, но без этой строчки код не будет работать как мне надо, чтобы человек мог заходить на чужую страницу:
$officeID = $_GET['id'];
Если я просто захожу на личную страницу пользователя, то такой код не срабатывает, хотя и на странице входа, и на странице регистрации начало сессии включено:
session_start();
error_reporting(E_ALL & ~E_NOTICE); //Убираем Notice, а все остальные ошибки выводим
require_once 'connection.php';
$dbh = new PDO('mysql:host=localhost; dbname=projectboard', $user, $pass);
$id = $_SESSION['id'];
$email = trim ($_POST['email']);
$pwd = trim($_POST['pass']);
$email = htmlspecialchars($email);
$pwd = htmlspecialchars($pwd);
if ( !empty($pwd) && !empty($email) ) {
$stmt = $dbh->prepare('SELECT id, email, password FROM users WHERE email = :email'); //Добавили id, для перенаправления на личную страницу
$stmt->bindParam(':email', $email);
$stmt->execute();
$user_p = $stmt->fetch(PDO::FETCH_OBJ);
if ($user_p){
if(password_verify($pwd, $user_p->password)){
$_SESSION['id'] = $user_p->id;
header('Location: office.php?id='. $_SESSION['id']);
}else{
echo '<p class="wrong">Неверный Email или пароль</br>Если Вы не зарегестрированы</p>';
echo '<a href="registration.php" class="reg">Зарегестрироваться</a>';
}
}else{
echo '<p class="wrong">Неверный Email или пароль</br>Если Вы не зарегестрированы</p>';
echo '<a href="registration.php">Зарегестрироваться</a>';
}
}else{
echo '<p class="noValues">Пожалуйста, заполните все поля</p>';
}