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

question-closed Po wysłaniu formularza register do bazy danych nie da się zalogować

VPS Starter Arubacloud
0 głosów
154 wizyt
pytanie zadane 12 listopada 2019 w PHP przez Cysiu Początkujący (270 p.)
zamknięte 12 listopada 2019 przez Cysiu
<?php

  session_start();
  
  if (isset($_POST['email']))
  {
    //Udana walidacja? Załóżmy, że tak!
    $wszystko_OK=true;
    
    //Sprawdź poprawność nickname'a
    $nick = $_POST['nick'];
    
    //Sprawdzenie długości nicka
    if ((strlen($nick)<3) || (strlen($nick)>20))
    {
      $wszystko_OK=false;
      $_SESSION['e_nick']="Nick must consist of 3-20 characters!";
    }
    
    if (ctype_alnum($nick)==false)
    {
      $wszystko_OK=false;
      $_SESSION['e_nick']="Name should consist of letters and digits only";
    }
    
    // Sprawdź poprawność adresu email
    $email = $_POST['email'];
    $emailB = filter_var($email, FILTER_SANITIZE_EMAIL);
    
    if ((filter_var($emailB, FILTER_VALIDATE_EMAIL)==false) || ($emailB!=$email))
    {
      $wszystko_OK=false;
      $_SESSION['e_email']="Enter correct email address";
    }
    
    //Sprawdź poprawność hasła
    $haslo1 = $_POST['haslo1'];
    $haslo2 = $_POST['haslo2'];
    
    if ((strlen($haslo1)<8) || (strlen($haslo1)>20))
    {
      $wszystko_OK=false;
      $_SESSION['e_haslo']="Password must consist of 8-20 characters";
    }
    
    if ($haslo1!=$haslo2)
    {
      $wszystko_OK=false;
      $_SESSION['e_haslo']="Passwords aren't identical";
    } 

    $haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT);
    
    //Czy zaakceptowano regulamin?
    if (!isset($_POST['regulamin']))
    {
      $wszystko_OK=false;
      $_SESSION['e_regulamin']="Confirm acceptance of the regulations";
    }       
    
    //Bot or not?
    $sekret = "6Lf3rX8UAAAAABK1x594jREg4FM2Eb-4y83YzSm5";
    
    $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)
    {
      $wszystko_OK=false;
      $_SESSION['e_bot']="Prove that you're human";
    }   
    
    //Zapamiętaj wprowadzone dane
    $_SESSION['fr_nick'] = $nick;
    $_SESSION['fr_email'] = $email;
    $_SESSION['fr_haslo1'] = $haslo1;
    $_SESSION['fr_haslo2'] = $haslo2;
    if (isset($_POST['regulamin'])) $_SESSION['fr_regulamin'] = true;
    
    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 email już istnieje?
        $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)
        {
          $wszystko_OK=false;
          $_SESSION['e_email']="An existing account assigned to this e-mail address!";
        }   

        //Czy nick jest już zarezerwowany?
        $rezultat = $polaczenie->query("SELECT id FROM uzytkownicy WHERE user='$nick'");
        
        if (!$rezultat) throw new Exception($polaczenie->error);
        
        $ile_takich_nickow = $rezultat->num_rows;
        if($ile_takich_nickow>0)
        {
          $wszystko_OK=false;
          $_SESSION['e_nick']="This name is already in use. Choose another!";
        }
        
        if ($wszystko_OK==true)
        {
          //Hurra, wszystkie testy zaliczone, dodajemy użytkownika do bazy
          
          if ($polaczenie->query("INSERT INTO uzytkownicy VALUES (NULL, '$nick', '$haslo_hash', '$email', '$ranga', 'uzytkownik')"))
          {
            $_SESSION['udanarejestracja']=true;
            header('Location: welcome.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 name="description" content="fsociety page">
  <meta name="keywords" content="fsociety, fso, ciety, fso, f$ociety">
  <meta name="author" content="Krzysztof Cysiu Kwaśniewski"/>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  <link rel="shortcut icon" href="favicon/fav.ico" />
  <link rel="stylesheet" href="css/style.css"/>
  <link rel="stylesheet" href="fontello/css/fontello.css" type="text/css" />
  <script src="https://www.google.com/recaptcha/api.js" async defer></script>
  <title>Register</title>
  </head>
<body>

<div class="register_box">
  <form method="post" class="block_of">

    <div class="register_text_box">
    <input type="text" placeholder="Username" value="<?php
      if (isset($_SESSION['fr_nick']))
      {
        echo $_SESSION['fr_nick'];
        unset($_SESSION['fr_nick']);
      }
    ?>" name="nick" /><br/>
    
    <?php
      if (isset($_SESSION['e_nick']))
      {
        echo '<div class="error">'.$_SESSION['e_nick'].'</div>';
        unset($_SESSION['e_nick']);
      }
    ?>
     </div>

    <div class="register_text_box">
    <input type="text" placeholder="E-mail" value="<?php
      if (isset($_SESSION['fr_email']))
      {
        echo $_SESSION['fr_email'];
        unset($_SESSION['fr_email']);
      }
    ?>" name="email" /> <br/>
    
    <?php
      if (isset($_SESSION['e_email']))
      {
        echo '<div class="error">'.$_SESSION['e_email'].'</div>';
        unset($_SESSION['e_email']);
      }
    ?>
    </div>

   <div class="register_text_box">
    <input type="password" placeholder="Password"  value="<?php
      if (isset($_SESSION['fr_haslo1']))
      {
        echo $_SESSION['fr_haslo1'];
        unset($_SESSION['fr_haslo1']);
      }
    ?>" name="haslo1" /> <br/>
    
    <?php
      if (isset($_SESSION['e_haslo']))
      {
        echo '<div class="error">'.$_SESSION['e_haslo'].'</div>';
        unset($_SESSION['e_haslo']);
      }
    ?>    
  </div>
    
    <div class="register_text_box">
    <input type="password" placeholder="Repeat Pass" value="<?php
      if (isset($_SESSION['fr_haslo2']))
      {
        echo $_SESSION['fr_haslo2'];
        unset($_SESSION['fr_haslo2']);
      }
    ?>" name="haslo2" /> <br/>
    </div>

   <input type="checkbox" name="regulamin"  
      <?php
      if (isset($_SESSION['fr_regulamin']))
      {
        echo "checked";
        unset($_SESSION['fr_regulamin']);
      }
        ?>/>Accept Rules

  </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="6Lf3rX8UAAAAAFSEQIa7IZsVcy-dC-i1kK75Wvhx"></div>
  
    <?php
      if (isset($_SESSION['e_bot']))
      {
        echo '<div class="error">'.$_SESSION['e_bot'].'</div>';
        unset($_SESSION['e_bot']);
      }
    ?>  
    <input class="reg_button" type="submit" value="Create account"/>
     </div>

</form>
</body>
</html>

Witam tak jak w tytule po wysłaniu wypełnionego formularza rejestracji nie mogę się zalogować tak jak by nie pobierało hasła z bazy danych przy próbie logowania, gdy w bazie ustawie hasło ręcznie np. test test logowanie odbywa się bez problemu jednak tworząc konto przez formularz już nie idzie szukałem błędu 3h i nie mogę się go doszukać ktoś ma jakiś pomysł?

--------logowanie--------------
<?php

  session_start();

  if ((isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true))
  {
    header('Location: main.php');
    exit();
  }

?>
<!DOCTYPE html>
<html lang="pl">

<head>
  <meta name="description" content="fsociety page">
  <meta name="keywords" content="fsociety, fso, ciety, fso, f$ociety">
  <meta name="author" content="Krzysztof Cysiu Kwaśniewski"/>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  <link rel="shortcut icon" href="favicon/fav.ico" />
  <link rel="stylesheet" href="css/style.css"/>
  <link rel="stylesheet" href="fontello/css/fontello.css" type="text/css" />
  <title>F$OCIETY MAIN PAGE</title>
  </head>
  <body>
  
<form action="zaloguj.php" method="post">
  
    <div class="login-box">
        <h1>Login</h1>
        <div class="textbox">
        <i class="icon-user"></i>
        <input type="text" placeholder="Username" name="login" value="">
      </div>

      <div class="textbox">
      <i class="icon-lock"></i>
      <input type="password" placeholder="Password" name="haslo" value="">
      </div>
      <input class="button" type="submit" name="" value="Sign in">
      <a href="register.php"><input class="button_register" type="button" name="" value="Register"></a>

    </form>
  </body>
  </html>

<?php
  if(isset($_SESSION['blad']))  echo $_SESSION['blad'];
?>
-------funkcja zaloguj--------------------
<?php
 
	session_start();
	
	if ((!isset($_POST['login'])) || (!isset($_POST['haslo'])))
	{
		header('Location: index.php');
		exit();
	}

	require_once "connect.php";

	$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
	
	if ($polaczenie->connect_errno!=0)
	{
		echo "Error: ".$polaczenie->connect_errno;
	}
	else
	{
		$login = $_POST['login'];
		$haslo = $_POST['haslo'];
		
		$login = htmlentities($login, ENT_QUOTES, "UTF-8");
		$haslo = htmlentities($haslo, ENT_QUOTES, "UTF-8");
	
		if ($rezultat = @$polaczenie->query(
		sprintf("SELECT * FROM uzytkownicy WHERE user='%s' AND pass='%s'",
		mysqli_real_escape_string($polaczenie,$login),
		mysqli_real_escape_string($polaczenie,$haslo))))
		{
			$ilu_userow = $rezultat->num_rows;
			if($ilu_userow>0)
			{
				$_SESSION['zalogowany'] = true;
				$wiersz = $rezultat->fetch_assoc();
				$_SESSION['id'] = $wiersz['id'];
				$_SESSION['user'] = $wiersz['user'];
				$_SESSION['ranga'] =$wiersz['ranga'];
				$_SESSION['nazwarangi'] =$wiersz['nazwarangi'];
			

				unset($_SESSION['blad']);
				$rezultat->free_result();
				header('Location: main.php');
				
			} else {
				
				$_SESSION['blad'] = '<div class="wrongpass">Wrong Login or Password!</span>';
				header('Location: index.php');
				
			}
			
		}
		
		$polaczenie->close();
	}
	
?>

 

komentarz zamknięcia: Rozwiązałem ten problem

Podobne pytania

0 głosów
2 odpowiedzi 707 wizyt
0 głosów
2 odpowiedzi 146 wizyt
pytanie zadane 2 października w PHP przez AceKing Nowicjusz (180 p.)
0 głosów
1 odpowiedź 192 wizyt
pytanie zadane 23 września 2019 w C# przez tomek2323 Bywalec (2,050 p.)

93,031 zapytań

141,995 odpowiedzi

321,300 komentarzy

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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...