• 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.

Object Storage Arubacloud
+1 głos
105 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 (270,910 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 (270,910 p.)
:) nie ma za co

Podobne pytania

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

92,632 zapytań

141,500 odpowiedzi

319,879 komentarzy

62,013 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...