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

Object Storage Arubacloud
0 głosów
136 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 554 wizyt
0 głosów
1 odpowiedź 172 wizyt
pytanie zadane 23 września 2019 w C# przez tomek2323 Bywalec (2,050 p.)

92,555 zapytań

141,404 odpowiedzi

319,559 komentarzy

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

...