• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Problem z formularzem rejestracji.

VPS Starter Arubacloud
+1 głos
102 wizyt
pytanie zadane 22 sierpnia 2021 w PHP przez SM2113 Nowicjusz (180 p.)
zamknięte 22 sierpnia 2021 przez SM2113

Nie utworzyć konta. Wywala błąd:
Notice: Undefined variable: insertQuery in E:\xampp\htdocs\login\register.php on line 89

Fatal error: Uncaught Error: Call to a member function close() on null in E:\xampp\htdocs\login\register.php:89 Stack trace: #0 {main} thrown in E:\xampp\htdocs\login\register.php on line 89


<!doctype html> 
<html lang="pl">
	<head>
		<meta charset="utf-8">
		<title>Rejestracja</title>
		<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
	</head>
	<body>
		<div class="container">
			<div class="row">
				<div class="col-md-12">
					<h2>Rejestracja</h2>
					<p>Uzupełnij aby stworzyć konto.</p>
					<form method="post">
						<div class="form-group">
							<label>Imię i Nazwisko</label>
							<input type="text" name="name" class="form-control" required/>
						</div>
						<div class="form-group">
							<label>E-mail</label>
							<input type="text" name="email" class="form-control" required/>
						</div>
						<div class="form-group">
							<label>Hasło</label>
							<input type="password" name="password" class="form-control" required>
						</div>
						<div class="form-group">
							<label>Potwierdź hasło</label>
							<input type="password" name="conf_password" class="form-control" required>
						</div>
						<div class="form-group">
							<input type="submit" name="submit" class="btn btn-primary" value="Utwórz">
						</div>
						<p>Masz już konto? <a href="login.php">Zaloguj się. </a></p>																		
					</form>
				</div>
			</div>
		</div>
	</body>
</html>
<?php 
	require_once "config.php";
	require_once "session.php";

	if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['submit'])){
		$fullname = trim($_POST['name']);
		$email = trim($_POST['email']);
		$password = trim($_POST['password']);
		$confirm_password = trim($_POST['conf_password']);
		$password_hash = password_hash($password, PASSWORD_BCRYPT);

		if($query = $db->prepare("SELECT * FROM users WHERE email = ?")){
			$error = '';

			$query->bind_param('s', $email); 
			$query->execute();

			$query->store_result();
				if ($query->num_rows > 0) {
					$error .= '<p class="error">Konto z tym emailem już istneije</p>';
				}else{
					if (strlen($password) < 8){
						$error .= '<p class="error">Hasło musi mieć co najmniej 8 znaków</p>';
					}
				
					if (empty($conf_password)){
						$error .= '<p class="error">Potwierdź hasło wpisując je jeszcze raz</p>';
					}else{
						if (empty($error) && ($password != $conf_password)){
							$error .= '<p class="error">Hasło nie jest zgodne</p>';
						}
					}

					if (empty($error)){
						$insertQuery = $db->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?);");

						$insertQuery->bind_param("sss", $fullname, $email, $password_hash);
						$result = $insertQuery->execute();
						if ($result){
							$error .= '<p class="success">Twoje konto zostało utworzone</p>';
						}else{
							$error .= '<p class="error">Coś poszło nie tak</p>';
						}
					}
				
		}
		$query->close();
		$insertQuery->close();
		mysqli_close($db);
	}
}
?>

 

komentarz zamknięcia: nie ten if

1 odpowiedź

+1 głos
odpowiedź 22 sierpnia 2021 przez Wiciorny Ekspert (269,120 p.)
wybrane 22 sierpnia 2021 przez ScriptyChris
 
Najlepsza
  if (empty($error)){
                        $insertQuery = $db->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?);");
 
                        $insertQuery->bind_param("sss", $fullname, $email, $password_hash);
                        $result = $insertQuery->execute();
                        if ($result){
                            $error .= '<p class="success">Twoje konto zostało utworzone</p>';
                        }else{
                            $error .= '<p class="error">Coś poszło nie tak</p>';
                        }
                    }

zasięg zmiennej 
 $insertQuery->close();  zamykasz ale tej zmiennej tutaj nie ma, ona jest w warunku wyzej 

 if (empty($error)){
                        $insertQuery = $db->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?);");
 
                        $insertQuery->bind_param("sss", $fullname, $email, $password_hash);
                        $result = $insertQuery->execute();
                        if ($result){
                            $error .= '<p class="success">Twoje konto zostało utworzone</p>';
                        }else{
                            $error .= '<p class="error">Coś poszło nie tak</p>';
                        }
                          $insertQuery->close();
                    } 

przenieś zamkniecie query do  warunku, bo skoro tam wykonujesz to tam zamykasz, albo utwórz query przed warunkiem 

  $insertQuery = $db->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?);");
  if (empty($error)){
                      ... reszta kodu 

 

komentarz 22 sierpnia 2021 przez SM2113 Nowicjusz (180 p.)
No tak. Dzięki
komentarz 22 sierpnia 2021 przez Wiciorny Ekspert (269,120 p.)
:) nie ma za co

Podobne pytania

0 głosów
1 odpowiedź 114 wizyt
pytanie zadane 25 października 2020 w PHP przez mallow Nowicjusz (120 p.)
0 głosów
1 odpowiedź 155 wizyt
0 głosów
0 odpowiedzi 111 wizyt

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...