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

+1 głos
247 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 (283,300 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 (283,300 p.)
:) nie ma za co

Podobne pytania

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

93,727 zapytań

142,668 odpowiedzi

323,283 komentarzy

63,287 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...