Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jak zakodować hasło przez ENCRYPT
Forum PHP.pl > Forum > Przedszkole
m4rku5
Witam!
Pytanie jak w tytule. Do bazy SQL dodaję rekord poleceniem:
  1. INSERT INTO `users` (`email`, `password`, `data`) VALUES ('adam.nowak@email.com', ENCRYPT('mojehaslo'), NOW());

i hasło jest zakodowane przez ENCRYPT. Muszę teraz tak samo zakodować coś w php. Mam składnię:
  1. $slowo = ENCRYPT($slowo);
  2. echo $slowo;

ale to nie działa. Działa crypt, md5, itp.. ale nie wiem jak zakodować przez ENCRYPT?
viking
MySQL ENCRYPT() encrypts a string using the Unix crypt() system call. The function returns a binary string.
https://www.php.net/manual/en/function.crypt.php
Zainteresuj sie password_hash raczej.
m4rku5
Tak, kumam. Tylko że ja potrzebuję zrobić system logowania do serwisu gdzie login to email a hasło to pochodzi z pola password w bazie, a tam zakodowane jest przez ENCRYPT. jak to w php ogarnąć żeby wpisać w pole hasło i żeby przekodował i porównał z tym co w bazie?
viking
Jeżeli jest to powtarzalny hash to wybierasz po prostu select * from users where email = %s and encrypt(%s) =password
m4rku5
No właśnie nie działa mi na php 7.3. Nie zwraca żadnego błędu, ale nie pokazuje żadnego wyniku. Mam taką instrukcję SQL osadzoną w kodzie:
  1. SELECT * FROM users WHERE email = '$email' AND password = ENCRYPT('$haslo')

viking
Jaki sterownik bazy? Jeśli pdo włącz rzucanie wyjątków i przede wszystkim używaj bindowania wartości.
m4rku5
PDO drivers: mysql
ver. MySQL: mysqlnd 5.0.12
aras785
Cytat(m4rku5 @ 11.08.2021, 09:30:44 ) *
No właśnie nie działa mi na php 7.3. Nie zwraca żadnego błędu, ale nie pokazuje żadnego wyniku. Mam taką instrukcję SQL osadzoną w kodzie:
  1. SELECT * FROM users WHERE email = '$email' AND password = ENCRYPT('$haslo')

]]

ponieważ jest potrzebny drugi parametr aby ten HASH był powtarzalny. Inaczej mysql generuje za każdym razem inny hash..

http://sqlfiddle.com/#!9/4193b7/3
m4rku5
ok, dzięki. Zrobione smile.gif
Pyton_000
Po kiego wałka robisz encrypt na bazie? Zrób to po prostu w aplikacji i zapisuj już zakodowane hasło, potem wyciągasz hasło na podstawie email i wtedy sprawdzasz

password_hash() i password_verify()
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.