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

Błąd podczas wpisywanie danych do rejestracji.

VPS Starter Arubacloud
0 głosów
221 wizyt
pytanie zadane 13 lutego 2018 w PHP przez Rafał Michalik 1 Początkujący (490 p.)
Witam. Mam pewien problem podczas rejestracji do mojej prywatnej strony,którą dopiero co zrobiłem. A wiec, gdy wpiszę wszystkie dane do rejestracji to pojawia mi się taki napis:

Exception: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1 in C:\xampp\htdocs\php1\rejestracja.php:108 Stack trace: #0 {main}

Nie wiem co to oznacza i jaki jest problem. Proszę o pomoc i jasne wytłumaczenie tego błędu.

1 odpowiedź

+1 głos
odpowiedź 13 lutego 2018 przez Józef Mądrala (5,200 p.)
wybrane 13 lutego 2018 przez Rafał Michalik 1
 
Najlepsza
Czy rejestracja działała w fazie testów? Bo wygląda na to, że coś jest nie tak z zapytaniem w SQL. Być może będę mógł powiedzieć więcej, jeżeli prześlesz kod.
komentarz 13 lutego 2018 przez Rafał Michalik 1 Początkujący (490 p.)

Kod jest trochę długi.

<?php 

	session_start();
	
	if (isset($_POST['email']))
	{
		//udana walidacja? załóżmy ze tak
		$all_OK=true;
		
		//sprawdzenie nicku
		$nick = $_POST['nick'];
		
		//sprawdzenie dlugosci nicka
		if ((strlen($nick)<3) || (strlen($nick)>20))
		{
			$all_OK=false;
			$_SESSION['e_nick']="Login musi posiadać od 3 do 20 znaków!";
		}
		if(ctype_alnum($nick)==false)
		{
			$all_OK=false;
			$_SESSION['e_nick']="Login może składać się tylko z liter i cyfr (bez polskich znaków)";
		}
		
		
			//sprawdz poprawnosc emaila
			$email = $_POST['email'];
			$emailB = filter_var($email, FILTER_SANITIZE_EMAIL);
			
			if((filter_var($emailB, FILTER_SANITIZE_EMAIL)==false) || ($emailB!=$email))
			{
				$all_OK=false;
				$_SESSION['e_email'] = "Podaj poprawny adres e-mail!";
			}
			//sprawdz poprawnosc hasel
			$haslo1=$_POST['haslo1'];
			$haslo2=$_POST['haslo2'];
			if ((strlen($haslo1)<5) || (strlen($haslo1)>20))
			{
				$all_OK=false;
				$_SESSION['e_haslo']="Hasło musi posiadać od 5 do 20 znaków";
			}
			if($haslo1!=$haslo2)
			{
				$all_OK=false;
				$_SESSION['e_haslo']="Podane hasła nie są identyczne!";
			}
		$haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT);
		
		//czy zaakceptowano regulamin
		if(!isset($_POST['regulamin']))
		{
			$all_OK=false;
			$_SESSION['e_regulamin'] ="Potwierdź akceptację regulaminu!";
		}
		//czy jestes botem?
		$sekret = "6LcTF0YUAAAAAImLuTb0twJi18G-rCIsD8fie4Ta";
		
		$sprawdz = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$sekret.'&response='.$_POST['g-recaptcha-response']);
		
		$odpowiedz = json_decode($sprawdz);
		
		if ($odpowiedz->success==false)
		{
			$all_OK=false;
			$_SESSION['e_bot'] ="Potwierdź, że nie jesteś botem!";
		}
		
		require_once'connect.php';
		
		mysqli_report(MYSQLI_REPORT_STRICT);
		
		try 
		{
			$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
			if($polaczenie->connect_errno!=0)
				{
					throw new Exception(mysqli_connect_errno());
				}
			else
			{
				
				//czy taki mail jest w bazie
				$rezultat = $polaczenie->query("SELECT id FROM uzytkownicy WHERE email='$email'");
				if(!$rezultat) throw new Exception($polaczenie->error);
				
				$ile_takich_maili = $rezultat->num_rows;
				if($ile_takich_maili>0)
				{
					$all_OK=false;
					$_SESSION['e_email']="Istnieje już konto przypisane do podanego adresu email";
				}
				//czy taki login jest w bazie
				$rezultat = $polaczenie->query("SELECT id FROM uzytkownicy WHERE nick='$nick'");
				if(!$rezultat) throw new Exception($polaczenie->error);
				
				$ile_takich_nickow = $rezultat->num_rows;
				if($ile_takich_nickow>0)
				{
					$all_OK=false;
					$_SESSION['e_nick']="Istnieje już gracz o takim loginie! Wybierz inny.";
				}
				
				if($all_OK==true)
					{
						//wszystko jest ok. dodaj gracza do bazy
						
						if($polaczenie->query("INSERT INTO uzytkownicy VALUES(NULL,'$nick','$haslo_hash','$email', 100, 10, 10, 10, 10,)"))
						{
							$_SESSION['udanarejestracja']=true;
							header('Location: witamy.php');	
						}
						else
						{
						throw new Exception($polaczenie->error);
						}				 
					}
			
				$polaczenie->close();
			}
		}
			
		catch(Exception $e)
		{
			echo '<span style="color:red;">Błąd serwera! Przepraszamy za niedogodności i prosimy o rejestrację w innym terminie!</span>';
			echo '<br />Informacja developerska: '.$e;
		}
	}
		
		
?>
<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="utf-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
	<title>Star Wars - załóż darmowe konto!</title>
	<script src='https://www.google.com/recaptcha/api.js'></script>
	<meta name="description" content="Star Wars RPG to gra pozwalająca wcielić się w postać z odległej galaktyki" />
	<meta name="keywords" content="Star, Wars, RPG, Gra, internetowa, Tatooine," />
	<style>
		.error
		{
			color: red;
			margin-top:10px;
			margin-bottom:10px;
		}
	</style>
</head>
<body>
	<form method="post">
		Login: <br/> <input type="text" name="nick"/></br>
			<?php
				
				if(isset($_SESSION['e_nick']))
				{
					echo '<div class="error">'.$_SESSION['e_nick'].'</div>';
					unset($_SESSION['e_nick']);
				}
			?>
		E-mail: <br/> <input type="text" name="email"/></br>
			<?php
				if(isset($_SESSION['e_email']))
				{
					echo '<div class="error">'.$_SESSION['e_email'].'</div>';
					unset($_SESSION['e_email']);
				}
			?>
		Twoje hasło: <br/> <input type="password" name="haslo1"/></br>
			<?php
				if(isset($_SESSION['e_haslo']))
				{
					echo '<div class="error">'.$_SESSION['e_haslo'].'</div>';
					unset($_SESSION['e_haslo']);
				}
			?>
		Powtórz haslo: <br/> <input type="password" name="haslo2"/></br></br>
		<label>
		<input type="checkbox"  name="regulamin"/> Akceptuje regulamin
		</label>
			<?php
				if(isset($_SESSION['e_regulamin']))
				{
					echo '<div class="error">'.$_SESSION['e_regulamin'].'</div>';
					unset($_SESSION['e_regulamin']);
				}
			?>
		<div class="g-recaptcha" data-sitekey="6LcTF0YUAAAAAM3NyBbWi1xPlb3SQlUAYgcdZiwV"></div>
		<br/>
		<?php
				if(isset($_SESSION['e_bot']))
				{
					echo '<div class="error">'.$_SESSION['e_bot'].'</div>';
					unset($_SESSION['e_bot']);
				}
			?>
		<input type="submit" value="Zarejestruj się!" />
	</form>
</body>
</html>

a tu kod z sql

 

CREATE TABLE `uzytkownicy` (
  `id` int(11) NOT NULL,
  `nick` text COLLATE utf8_polish_ci NOT NULL,
  `haslo` text COLLATE utf8_polish_ci NOT NULL,
  `email` text COLLATE utf8_polish_ci NOT NULL,
  `morale` int(11) NOT NULL,
  `zycie` int(11) NOT NULL,
  `jedzenie` int(11) NOT NULL,
  `picie` int(11) NOT NULL,
  `kosmiczne` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

--
-- Zrzut danych tabeli `uzytkownicy`
--

INSERT INTO `uzytkownicy` (`id`, `nick`, `haslo`, `email`, `morale`, `zycie`, `jedzenie`, `picie`, `kosmiczne`) VALUES
(1, 'Rafcik', '$2y$10$4yOad51KOEuyep2NFsIfhe6xzx9OJv7Cp9nCSkhtkoFpSBe/zwFFO', 'rafal@spoko.pl', 10, 10, 10, 10, 10);


 

komentarz 13 lutego 2018 przez Józef Mądrala (5,200 p.)

Spróbuj usunąć ostatni przecinek w linii:

if($polaczenie->query("INSERT INTO uzytkownicy VALUES(NULL,'$nick','$haslo_hash','$email', 100, 10, 10, 10, 10,)"))

Powinno pomóc

komentarz 13 lutego 2018 przez Rafał Michalik 1 Początkujący (490 p.)

Kolego, bardzo Ci dziękuję. To był właśnie ten błąd. Szybko znalazłeś błąd. Jeszcze raz dzięki. Jestem świeżakiem.laugh

komentarz 13 lutego 2018 przez Tpk Nałogowiec (40,100 p.)
edycja 13 lutego 2018 przez Tpk
Z tego co pisze z tego komunikatu to na linii 108 zapodział ci się jakiś zamykający tag ")", tak przynajmniej z tego wynika i tak faktycznie jest w kodzie.

// Ehh, kolega był szybszy  :)

Podobne pytania

0 głosów
1 odpowiedź 111 wizyt
pytanie zadane 25 maja 2019 w PHP przez manager96 Bywalec (2,050 p.)
0 głosów
1 odpowiedź 131 wizyt
pytanie zadane 21 sierpnia 2017 w Java przez fipooo Bywalec (2,880 p.)
0 głosów
2 odpowiedzi 204 wizyt
pytanie zadane 7 lutego 2018 w SQL, bazy danych przez Hardwell Dyskutant (8,960 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 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!

...