Lawnil Ответов: 1

Обратите внимание: неопределенный индекс: имя пользователя в C:\wamp64\www\115\index.php на линии 19.........Я не могу получить доступ к значениям переменных сеанса


Я не могу получить доступ к своим переменным значениям сеанса с другой страницы.


<?php

session_start();

require_once 'config/db.php';

$errors=array();
$username="";
$email="";


if(isset($_POST['signup-btn'])){
	$username=$_POST['username'];
	$email=$_POST['email'];
	$password=$_POST['password'];
	$passwordConf=$_POST['passwordConf'];


	if(empty($username)){
		$errors['username']="Username required";
	}

	if(!filter_var($email,FILTER_VALIDATE_EMAIL)){
		$errors['email']="Email address is invalid!";
	}



	if(empty($email)){
		$errors['email']="Email required";
	}
	if(empty($password)){
		$errors['password']="Password required";
	}

	if($password !== $passwordConf){
         $errors['password']="The two passwords do not match";
	}

	$emailQuery = "select * from users where email=? limit 1";
	$stmt = $conn->prepare($emailQuery);
	$stmt->bind_param('s',$email);
	$stmt->execute();
	$result=$stmt->get_result();
	$userCount=$result->num_rows;
	$stmt->close();

	if($userCount > 0){
		$errors['email'] = "Email already exists";
	}


	if(count($errors)===0){
       $password = password_hash($password, PASSWORD_DEFAULT);
       $token = bin2hex(random_bytes(50));
       $verified = false;

       $sql =  "insert into users(username,email,verified,token,password)values(?,?,?,?,?)";
       $stmt = $conn->prepare($sql);
	   $stmt->bind_param('ssiss',$username,$email,$verified,$token,$password);
	   if($stmt->execute()){

	   	$user_id = $conn->insert_id;
	   	$SESSION['id']= $user_id;
	   	$SESSION['username']=$username;
	   	$SESSION['email']=$email;
	   	$SESSION['verified']=$verified;

	   	$_SESSION['message']="You are now logged in!";
	   	$_SESSION['alert-class']="alert-success";
	   	header('location:index.php');
	   	exit();
 
    }
	   
	else{
	   	$errors['db_error'] = "Database error: failed to register";
	   }
	
}

 

}



Это мой индексный файл ниже

<?php require_once 'controllers/authController.php'; ?>

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
	<link rel="stylesheet" href="style.css">
	<title>Home Page</title>
</head>
<body>
	
	<div class="container">
		<div class="row">
			<div class="col-md-4 offset-md-4 form-div login">
				<div class="alert <?php echo $_SESSION['alert-class']; ?>">
					<?php echo $_SESSION['message']; ?>
				</div>
				<h3>Welcome, <?php echo $_SESSION['username']; ?></h3>
				<a href="#" class="logout">logout</a>

				<?php if(!$_SESSION['verified']): ?>
				<div class="alert alert-warning">
					You need to verify your account.
					Sign in to your email account and click on the verification link we just emailed you at
					<?php echo $_SESSION['email']; ?>

          			</div>
          		<?php endif; ?>


          			<?php if($_SESSION['verified']): ?>
          			<button class="btn btn-block btn-lg btn-primary">I am verified!</button>
          			<?php endif; ?>
			</div>
		</div>
	</div>

</body>
</html>


Что я уже пробовал:

Я попытался запустить еще один сеанс на странице индекса, но получил предупреждение о том, что два сеанса выполняются вместе

1 Ответов

Рейтинг:
5

F-ES Sitecore

Вы ничего не храните в $_SESSION['username'], вы храните это в $SESSION['username']


Lawnil

Да, спасибо! Код теперь работает.