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

0 głosów
103 wizyt
pytanie zadane 13 lutego 2018 w PHP przez Rafał Michalik 1 Początkujący (470 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 (470 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 (470 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 (39,880 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ź 84 wizyt
pytanie zadane 25 maja 2019 w PHP przez manager96 Bywalec (2,010 p.)
0 głosów
1 odpowiedź 110 wizyt
pytanie zadane 21 sierpnia 2017 w Java przez fipooo Bywalec (2,880 p.)
0 głosów
2 odpowiedzi 100 wizyt
pytanie zadane 7 lutego 2018 w SQL, bazy danych przez Hardwell Dyskutant (8,580 p.)

87,940 zapytań

136,519 odpowiedzi

304,382 komentarzy

58,305 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...