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

Kurs PHP jak zrobić zmianę hasła

Object Storage Arubacloud
0 głosów
795 wizyt
pytanie zadane 10 sierpnia 2017 w PHP przez ldybiec Nowicjusz (190 p.)
zmienione kategorie 10 sierpnia 2017 przez Arkadiusz Waluk
Witam wykonałem formularz z kursu PHP i wszystko działa, chciałem natomiast dorobić przycisk umożliwiający zmiany hasła w bazie danych. Frontendowo  wszystko wykonałem łącznie z imputami, jednak mam problem jak się do tego zabrać do php umożliwiającego zmianę hasła. Może ktoś coś doradzi, pomoże.
komentarz 10 sierpnia 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Może byś doprecyzował, z którego kursu PHP? Trochę ich na świecie jest.wink

Ja się domyślam, który kurs masz na myśli, ale nie każdy będzie to wiedział.

komentarz 10 sierpnia 2017 przez ldybiec Nowicjusz (190 p.)
przeniesione 10 sierpnia 2017 przez Arkadiusz Waluk
Kurs PHP p. Mirosława Zelenta.

W pliku zmiana_hasła.php wstawiłem

    session_start();
    
    if ((!isset($_POST['login'])) || (!isset($_POST['haslo'])))
    {
        header('Location: index.php');
        exit();
    }

 

I tu zaczyna się problem
komentarz 10 sierpnia 2017 przez HaKIM Szeryf (87,590 p.)
edycja 10 sierpnia 2017 przez HaKIM

Wskazówki:

https://en.wikipedia.org/wiki/Update_(SQL)

http://php.net/manual/en/mysqli.query.php

Po prostu, przechwytujesz nowe hasło w, dla przykładu, pliku updateUserPassword.php, tam walidacja, hash i leci do bazki.

Żadnej magii nie ma.

Z tego co pamiętam to dasz radę to zrobić po obejrzeniu wszystkich odcinków z kursu o PHP (Na kanale Pasja Informatyki znajduje się również kurs SQL). Jakość będzie... no nie oszukujmy się - gówniana, ale z czasem się nauczysz jak rodzielić poszczególne funkcjonalności do odpowiednich warstw i będzie cacy.

Jak już będzie skrypt hulał to zacznij refaktoryzować.

1 odpowiedź

0 głosów
odpowiedź 11 sierpnia 2017 przez ldybiec Nowicjusz (190 p.)
wybrane 16 sierpnia 2017 przez ldybiec
 
Najlepsza

Oto kod formularza zmiany hasła, jednak non stop pojawia się "Błędne stare hasło" oraz dwa błędny jak poniżej:

Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\xampp\htdocs\projekt\zmiana_hasla.php on line 41

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\projekt\zmiana_hasla.php on line 42

<?php

    session_start();
    
    if(isset($_POST['ok']))
{    
    
        $wszystko_OK=true;
    
        $haslo1 = $_POST['haslo1'];
        $haslo2 = $_POST['haslo2'];
        $haslo3 = $_POST['haslo3'];

    if((strlen($haslo1)<8) || (strlen($haslo1)>20))
    {
        $wszystko_OK=false;
        $_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
    }
    else
    {
    if((strlen($haslo2)<8) || (strlen($haslo2)>20))
    {
        $wszystko_OK=false;
        $_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
    }
    else
    {
    if((strlen($haslo3)<8) || (strlen($haslo3)>20))
    {
        $wszystko_OK=false;
        $_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
    }
    else
    {
    if($haslo1 && $haslo2 && $haslo3)
    {
    if($haslo2==$haslo3)
    {
       $szukanie = "SELECT * FROM users WHERE nick='".$_SESSION['user']."'";
       $szukanie_wyk = mysqli_query($szukanie);
       $wiersz=mysqli_fetch_assoc($szukanie_wyk);
       $nowe=md5($haslo2);
       $stare=md5($haslo1);
    if($haslo1==$wiersz['pass']) {
       $update = "UPDATE users SET pass='".$haslo2."' WHERE nick='".$_SESSION['user']."'";
       $update_wyk = mysqli_query($update);
       mysqli_error();
    }
    else
    {
       $wszystko_OK=false;
       $_SESSION['e_haslo1']="Błędne stare hasło";
    }}
    else
    {
        $wszystko_OK=false;
        $_SESSION['e_haslo2']="Podane hasła się nie zgadzają";
    }
}
}}
}
}
?>
<!DOCTYPE HTML>
<html lang="pl">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <title>Projekt</title>
    <link rel="stylesheet" href="style/style.css" type="text/css" />    
    <style>
        .error
        {
            color:#cc0000;
            margin-top: 10px;
            margin-bottom: 1px;
        }
    </style>
</head>
<body><center><br><br><div id="logo">
    <img src="img/logo.png" align="center"/ ></div>
    <div id="container2" align="center">
    <form method="post">
    
    
    Twój login to</b></td> <td><b>: </b></td> <td><b><?php echo($_SESSION['user']); ?></b></td><br><br>
    
    Stare hasło: <br /> <input type="password" name="haslo1" /><br />
        
    Nowe hasło: <br /> <input type="password" name="haslo2" /><br />
        
    Powtórz hasło: <br /> <input type="password" name="haslo3" /><br />
        
        
<?php
    if (isset($_SESSION['e_haslo']))
{
    echo '<div class="error">'.$_SESSION['e_haslo'].'</div>';
    unset($_SESSION['e_haslo']);
}
    if (isset($_SESSION['e_haslo1']))
{
    echo '<div class="error">'.$_SESSION['e_haslo1'].'</div>';
    unset($_SESSION['e_haslo1']);
}
    
    if (isset($_SESSION['e_haslo2']))
{
    echo '<div class="error">'.$_SESSION['e_haslo2'].'</div>';
    unset($_SESSION['e_haslo2']);
}
?>
    <input type="submit" value="Zmień hasło:" name="ok"/>    
    </form>
</body>
</html>

 

komentarz 18 sierpnia 2017 przez ldybiec Nowicjusz (190 p.)

Poprawiłem kod i teraz hasło jest podmieniane w bazie danych, ostatnia rzecz jaka mi została to password_verify. Ktoś doradzić jak to zrobić

 

<?php
	session_start();
	if (!isset($_SESSION['zalogowany']))
	{
		header('Location: index.php');
		exit();
	}
	if(isset($_POST['ok']))
	{	
	
		$wszystko_OK=true;
		$user = $_SESSION['user'];
		$haslo = $_POST['haslo'];
		$haslo1 = $_POST['haslo1'];
		$haslo2 = $_POST['haslo2'];
		
	if((strlen($haslo)<8) || (strlen($haslo1)<8)||(strlen($haslo)>20) || (strlen($haslo1)>20))
	{
		$wszystko_OK=false;
		$_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
	}
	else
	{
	if($haslo1 != $haslo2)	
	{
		$wszystko_OK=false;
		$_SESSION['e_haslo']="Nowe hasło i jego powtórzenie, nie są takie same!";
	}
	else
	{
		

     require_once "connect.php";
     mysqli_report(MYSQLI_REPORT_STRICT);
	 
	 
       
    try
    {
         $polaczenie= mysqli_connect($host,$db_user,$db_password,$db_name);

		if ($polaczenie->connect_errno!=0)
         {
             throw new Exception(mysqli_connect_errno());
         }
        else
         {
			$wszystko_OK=true;
    
			$haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT);
			$zmiana = "UPDATE uzytkownicy SET pass = '$haslo_hash' WHERE user='$user'";
                                if ($polaczenie->query($zmiana) === true)
                                {                                                                                                                                       
                                    $_SESSION['udanazmiana']=true;
									header('Location: potwierdzenie_zamiany_hasla.php');                                          
                                }
                                 else
								{
                                    echo 'bledne haslo';
                                }
    
            $polaczenie->close();
          }
    }
 
            catch(Exception $e)
            {
                    echo '<span style="color:red;">Błąd serwera! Przepraszamy za niedogodności i prosimy o zmianę hasła 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>Projekt</title>
	<link rel="stylesheet" href="style/style.css" type="text/css" />	
	<style>
		.error
		{
			color:#cc0000;
			margin-top: 10px;
			margin-bottom: 1px;
		}
	</style>
</head>
<body>
<center>
<br><br>
<div id="logo">
	<img src="img/logo.png" align="center"/ ></div>
	<div id="container2" align="center">
	<form method="post">
	
	
	Twój login to</b></td> <td><b>: </b></td> <td><b><?php echo($_SESSION['user']); ?></b></td><br><br>
	
	Stare hasło: <br /> <input type="password" name="haslo" /><br />
		
	Nowe hasło: <br /> <input type="password" name="haslo1" /><br />
		
	Powtórz hasło: <br /> <input type="password" name="haslo2" /><br />
		
		
<?php
	if (isset($_SESSION['e_haslo']))
	{
	echo '<div class="error">'.$_SESSION['e_haslo'].'</div>';
	unset($_SESSION['e_haslo']);
	}
	
?>
	<input type="submit" value="Zmień hasło:" name="ok"/>	
	</form>
</body>
</html>

 

komentarz 11 lipca 2019 przez Rocket Gaduła (3,030 p.)

Z pomocą przyjdzie manual PHP'a

https://www.php.net/manual/en/function.password-verify.php

 

Spójrz uważnie na przykład znajdujący się pod tym linkiem, a mianowicie:


<?php
// See the password_hash() example to see where this came from.
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

if (password_verify('rasmuslerdorf', $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
?>

 

Pozdrawiam,

Rocket.

Podobne pytania

0 głosów
1 odpowiedź 286 wizyt
pytanie zadane 10 lipca 2019 w PHP przez Patryk Kacprowicz Nowicjusz (230 p.)
0 głosów
1 odpowiedź 95 wizyt
pytanie zadane 10 stycznia 2019 w HTML i CSS przez Dogy Użytkownik (520 p.)
0 głosów
1 odpowiedź 406 wizyt
pytanie zadane 29 stycznia 2021 w PHP przez KrzysztofS Nowicjusz (170 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

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

...