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

baza danych i php

Object Storage Arubacloud
0 głosów
269 wizyt
pytanie zadane 23 listopada 2017 w PHP przez pionk18 Obywatel (1,590 p.)

Oto kod:

<?php
	
	session_start();

	if(isset($_POST['login']))
	{
		$login = $_POST['login'];
		$email = $_POST['email'];
		$pass = $_POST['pass'];
		$pass2 = $_POST['pass2'];
		
		$allok = true;
		
		if(strlen($login)<4 || strlen($login)>20)
		{
			$_SESSION['e_nick']="Nick może składać się tylko od 4 do 20 znaków!";
			$allok = false;
		}
		
		if (ctype_alnum($login)==false)
		{
			$allok=false;
			$_SESSION['e_nick']="Nick może składać się tylko z liter i cyfr (bez polskich znaków)";
		}
		
		$emailB = filter_var($email, FILTER_SANITIZE_EMAIL);
		
		if ((filter_var($emailB, FILTER_VALIDATE_EMAIL)==false) || ($emailB!=$email))
		{
			$allok=false;
			$_SESSION['e_email']="Podaj poprawny adres e-mail!";
		}
		
		if ((strlen($pass)<8) || (strlen($pass)>20))
		{
			$allok=false;
			$_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
		}
		
		if ($pass!=$pass2)
		{
			$allok=false;
			$_SESSION['e_haslo']="Podane hasła nie są identyczne!";
		}	

		$passH = password_hash($pass, PASSWORD_DEFAULT);
		
		if (!isset($_POST['chbox']))
		{
			$allok=false;
			$_SESSION['e_regulamin']="Potwierdź akceptację regulaminu!";
		}
		
		
		$_SESSION['fr_nick'] = $login;
		$_SESSION['fr_email'] = $email;
		$_SESSION['fr_haslo1'] = $pass;
		$_SESSION['fr_haslo2'] = $pass2;

		if($allok)
		{
			require_once("connect.php");
			$polaczenie = new mysqli($host, $db_user, $db_password, $db_name) ;
			if($polaczenie->query("INSERT INTO 'uzytkownicy' VALUES (NULL, '$login', NULL, NULL, '$pass', $email)"))
			{
				$_SESSION['goodreg'] = true;
			}
			else $_SESSION['goodreg'] = $polaczenie -> error;
			$polaczenie->close();
		}
	}
?>
<!DOCTYPE html>
<html>
<head>
	
	<meta charset="utf-8"/>
	<link rel="stylesheet" href="style1.css" type="text/css"/>

</head>
<body>

	<div id="container">
	
		<form method="post">
			<?php
				if(isset($_SESSION['goodreg']))
				{
					if($_SESSION['goodreg'])	echo "Udana rejestracja!";
					else echo $_SESSION['goodreg'];
					unset($_SESSION['goodreg']);
				}
			?>
			<?php
					if (isset($_SESSION['e_nick']))
						{
							echo '</br>';
							echo '<div id="error">'.$_SESSION['e_nick'].'</div>';
							unset($_SESSION['e_nick']);
						}
			?>
			<input type="text" name="login" placeholder="Podaj login" value="<?php
				if (isset($_SESSION['fr_nick']))
				{
					echo $_SESSION['fr_nick'];
					unset($_SESSION['fr_nick']);
				}
			?>">
			<?php
					if (isset($_SESSION['e_email']))
						{
							echo '</br>';
							echo '<div id="error">'.$_SESSION['e_email'].'</div>';
							unset($_SESSION['e_email']);
						}
			?>
			<input type="text" name="email" placeholder="Podaj e-mail" value="<?php
					if (isset($_SESSION['fr_email']))
					{
						echo $_SESSION['fr_email'];
						unset($_SESSION['fr_email']);
					}
				?>">
			<?php
					if (isset($_SESSION['e_haslo']))
						{
							echo '</br>';
							echo '<div id="error">'.$_SESSION['e_haslo'].'</div>';
							unset($_SESSION['e_haslo']);
						}
			?>
			<input type="password" name="pass" placeholder="Podaj hasło" value="<?php
			if (isset($_SESSION['fr_pass']))
			{
				echo $_SESSION['fr_pass'];
				unset($_SESSION['fr_pass']);
			}
		?>">
			<input type="password" name="pass2" placeholder="Powtórz hasło" value="<?php
			if (isset($_SESSION['fr_pass2']))
			{
				echo $_SESSION['fr_pass2'];
				unset($_SESSION['fr_pass2']);
			}
		?>">
			<div id="regulamin">
				<?php
					if (isset($_SESSION['e_regulamin']))
						{
							echo '</br>';
							echo '<div id="error">'.$_SESSION['e_regulamin'].'</div>';
							unset($_SESSION['e_regulamin']);
						}
				?>
				<br/><input name="chbox" type="checkbox"/> Akceptuję <a href="regulamin.php">regulamin<a/>
			</div>
			<input type="submit" value="Zarejestruj">
		</form>
		
	</div>

</body>
</html>

Wyświetla mi, że udana rejestracja, a w bazie pusto!

Struktura bazy:

1 odpowiedź

0 głosów
odpowiedź 23 listopada 2017 przez Chess Szeryf (76,710 p.)
edycja 23 listopada 2017 przez Chess

Popraw swoją linię na tę:

 if($polaczenie->query("INSERT INTO `zakupy` (`id`,`jaki_towar`) VALUES (NULL, \"{$login}\")"))
 if($polaczenie->query("insert into zakupy values (null,'$login',null)"))

Błąd masz taki, że zamiast odwrotnych apostrofów (`) pod ESC dałeś zwykłe (').

Czy widzisz różnicę między tym: "``````````````", a tym: "'''''''''''''''''''''''''''''''"?

https://dev.mysql.com/doc/refman/5.7/en/insert.html

Przede wszystkim popatrz na składnię tej konstrukcji INSERT INTO.

komentarz 23 listopada 2017 przez pionk18 Obywatel (1,590 p.)
Mógłbyś podać gotowe zapytanie, żebym mógł je wkleić?
komentarz 23 listopada 2017 przez Chess Szeryf (76,710 p.)

https://mariadb.com/kb/en/library/insert/

To powinno zadziałać:

 if($polaczenie->query("INSERT INTO `uzytkownicy` VALUES (NULL, '$login', NULL, NULL, '$pass', '$email')"))
            

 

komentarz 23 listopada 2017 przez pionk18 Obywatel (1,590 p.)
Nie działa
komentarz 23 listopada 2017 przez Chess Szeryf (76,710 p.)
Wklej to zapytanie do konsoli i sprawdź jaki wyrzuca błąd (podstaw tylko za zmienne jakieś wartości). Jakie masz typy pól w tych kolumnach w MySQL?

Jeśli masz w tabeli pole typu int, a chcesz tam władować wartość typu string, to wtedy to nie zadziała.
komentarz 24 listopada 2017 przez pionk18 Obywatel (1,590 p.)
Naprawiłem. Wystarczyło w polach imię, nazwisko (w polach do których formularz nic nie wysyła) zaznaczyć wartość NULL w checkboxsie. Dzięki za pomoc i motywacje w znalezieniu rozwiązania.

Podobne pytania

0 głosów
2 odpowiedzi 512 wizyt
pytanie zadane 16 października 2018 w SQL, bazy danych przez s1mx Nowicjusz (120 p.)
+1 głos
1 odpowiedź 123 wizyt
0 głosów
1 odpowiedź 203 wizyt
pytanie zadane 25 maja 2020 w PHP przez rijn Nowicjusz (220 p.)

92,556 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,942 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!

...