Autor Zpráva
RaZeM
Profil
Dobry den, neviete co mam spravit ked chcem aby mi na email prislo zabudnute heslo vypisane ako ho zadaval uzivatel?... Mne pride v sha1
Keeehi
Profil
RaZeM:
To nelze. Musí se vygenerovat nové heslo a to uživateli poslat.
SeparateSK
Profil
Keď ho hashujes v SHA1, a zároveň aj ukladáš, tak je jasné ,že mu príde na EMAIL heslo v SHA1.
SHA1 nieje BASE64, takže pokúsiť sa to rozšifrovávať je zbytočná strata času.

Keď tak ,vyrieš to ako ja :)
Na email mu pošleš link napr: blabla.sk/bla.php?meno=MENO&heslo=SHA1HESLO
A bla.php ho automaticky prihlási a on si zmení heslo
RaZeM
Profil
Cize teraz to mam ako spojazdnit aby to islo prihlasit uzivatelovi s tym ze zabudne heslo a posle si ho na email


Takze mu dojde link s tmy ze ked nanho kline ho automaticky prihlasi.. al emusi si zmenit heslo aby sa vedel prihlasit nabuduce :D
SeparateSK
Profil
Áno, presne tak, napr v linku máš:
meno=jano
heslo=6e017b5464f820a6c1bb5e9f6d711a667a80d8ea
Tieto údaje doplníš do napr mysql query:
<?php $q=mysql_query("SELECT * FROM uzivatelia WHERE meno=$_GET[meno] AND heslo=$_GET[heslo]"); ?>
Stačí prerobiť log-in ,aby namiesto POST údajov použil tie ,čo sú v GET parametroch
RaZeM
Profil
pockaj lebo sa stratim.. toto mam na to zabudnute heslo teraz
if ($_GET["clanok"]=="zabudnuteheslo")
{
$mail = $_POST["email"];
include("config.php");
        $db;
        mysql_select_db($dbname, $db);
        $vysledok = mysql_query(
        "SELECT * FROM uzivatelia WHERE email='$mail'",
        $db);
        while ($zaznam = mysql_fetch_array($vysledok) ){
        $email = $zaznam["email"];
        $heslo = $zaznam["heslo"];
        

$telo ="Vaše heslo je $heslo";


  @mail ($email, "Zabudnuté heslo na účet", $telo);
  header("Location: index.php?clanok=prihlasenie");
}}



teraz neviem ako mam vytvorit ten link tam aby ho to prihlasilo :D uplne som z toho domotany
SeparateSK
Profil
Nejak takto :
if ($_GET["clanok"]=="zabudnuteheslo")
{
$mail = $_POST["email"];
include("config.php");
        $db;
        mysql_select_db($dbname, $db);
        $vysledok = mysql_query(
        "SELECT * FROM uzivatelia WHERE email='$mail'",
        $db);
        while ($zaznam = mysql_fetch_array($vysledok) ){
        $email = $zaznam["email"];
        $heslo = $zaznam["heslo"];
 
 
  @mail ($email, "Kliknite na tento link a potom si zmeňte heslo: http://tvojastranka.sk/skontrolujHeslo.php?mail=".$mail."&heslo=".$heslo);
  header("Location: index.php?clanok=prihlasenie");
}}
Potrebuješ mu poslať link, ktorý ho automaticky prihlási(súbor skontolujHeslo.php)
A ten by mohol vypadať takto:
$mail = $_GET["mail"];
include("config.php");
        $db;
        mysql_select_db($dbname, $db);
        $vysledok = mysql_query(
        "SELECT * FROM uzivatelia WHERE email='$mail'",
        $db);
        while ($zaznam = mysql_fetch_array($vysledok) ){
        $heslo = $zaznam["heslo"];
        if($heslo==$_GET[heslo]){
            //Tvoje SESSIONy
            $_SESSION[prihlaseny]=true;
            //...
            header("Location: index.php");
        }
}
Skontroluje údaje a nastaví SESSION + presmeruje na index.php ak boli údaje platné
JaySee
Profil
Dovolil bych si dodat, že tento postup nepovažuji za bezpečný.

Především ten přímý vstup do SQL požadavku bez předešlého ošetření.

takže alespoň:

$mail = mysql_real_escape_string($_POST["email"]);

a to samé při přihlašování se skrze $_GET["heslo"].

Ale tak jako tak bych zauvažoval nad tím, že je možné se přihlásit vložením starého hashe.
Měl by být vygenerován nový hash, který se pošle mailem a po jeho zadání teprve bude umožněno znovu nastavit heslo bez potvrzení starým heslem.
Ten nový hash bude po čas změny hesla uložen jinde, než stávající hash. Ten se přepíše až potom, co se uživatel přihlásí přes nově generovanou sekvenci (hash) a změní heslo.
RaZeM
Profil
Riesim teraz ten prvy sposob najprv :D budem rad ak to spojazdnim.... a take ze zadat aby sa dalo prihlasit aj pomocou Sha1 sa neda? ze vlastne mu teda pride to zasifrovane heslo a on si ho skopiruje a tak s aprihlasi a potom si zmeni


No dojde mi to na email vypisane to je ale neni to ako odkaz :D neviem co som tam domotal
Again
Profil
Podle mě je docela bezpečnostní riziko posílat i jenom hash hesla v URL adrese. Pokud by se tato adresa dostala někomu neoprávněnému do ruky, rázem by měl hash hesla přímo z databáze a mohl by začít čarovat. Teoreticky by se tak mohl ihned přihlásit a dostat se do cizího účtu ...

Když už by to tak mělo být, alespoň bych přidal do URL adresy nějaký řetězec, který by kontroloval, jestli je to skutečný vygenerovaný odkaz ...

Osobně řeším zapomenuté heslo tak, že posilám na email nové vygenerované heslo a odkaz s řetězcem pomocí kterého lze nové heslo aplikovat. Uživatel, který heslo zapomněl nemá pak žádný problém si nové heslo zaslat, ověřit pomocí odkazu a pohodlně se přihlásit, načež si následně může heslo změnit v profilu ...
RaZeM
Profil
To je pekne ale ja take nedokazem spravit nejsom az tak zdatny v php :/ :D potrebujem hlavne nieco co bude fungovat :) ..mam to na maturitu


kks neviem spravit to aby mi to hodilo link stale mi to len vypise na emaily nvm co tam zle zadavam :/
Again
Profil
Vždyť to není takové složité. Napíšeš si funkci na generování hesla (to doufám zvládneš), heslo si uložíš do databáze do nějakého nového sloupce, vygeneruješ si náhodný řetězec a ten také uložíš do nějakého sloupce. Uživateli pošleš email s odkazem ve kterém bude obsaženo id uživatele a daný řetězec. Pokud uživatel na odkaz klikne bude následovat zpracování -> Porovnáš id a řetězec s údaji v databázi - vytvoříš hash nového hesla a staré heslo přepíšeš tímto hashem. Uživatel se spokojeně přihlásí a poté si bude moct změnit heslo v profilu ...
RaZeM
Profil
na vygenerovanie hesla nieco mam .. ale vravim nvm ako spravit uz to aby mi na emaily ukazalo ten link aby sa na to dalo kliknut :D neje mi to stale
Again
Profil
Stačí poslat odkaz v <a href=""> nebo ne? Ukáže ti to alespoň celý link se vším, co k němu patří (tím myslím to heslo a jméno)?
RaZeM
Profil
ano ano vsetko ukaze ako mi tu aj aj napisali http://tvojastranka.sk/skontrolujHeslo.php?mail=".$mail."&heslo=".$heslo akoze ono vsekto ukaze v tom emaily ale neni to spravene ako odkaz
Again
Profil
Pokud to dobře chápu, tak prostě je to jenom link, na který se nedá kliknout. V tom případě využij html tag:

<a href="tvojastranka.sk/skontrolujHeslo.php?mail=".$mail."&heslo=".$heslo"">tvojastranka.sk/skontrolujHeslo.php?mail=".$mail."&heslo=".$heslo</a>
RaZeM
Profil
mi to na tom riadku pise chybu :D


ja som to predtym mal takto http://www.razem.mzf.cz/index.php?clanok=skontrolovatheslo&email=".$email."&heslo=".$heslo, $telo
RaZeM
Profil
Uz konecne mi ide aj presmerovanie aj ma to prihlasi ale mi to neda ze som to ja uzivatel akoze nevie to najst uzivatela podla emailu akoby :D prihlasi ma pod ziadnym nickom :D cize ani profil neviem pozret posielat spravy atd :D neviete nejake rady?..takto teraz vyzera kod:
<?php

$email = $_GET["email"];
include("config.php");
        $db;
        mysql_select_db($dbname, $db);
        $vysledok = mysql_query(
        "SELECT * FROM uzivatelia WHERE email='$email'",
        $db);
        while ($zaznam = mysql_fetch_array($vysledok) ){
        $heslo = $zaznam["heslo"];
        if($heslo==$_GET[heslo]){
            $_SESSION["id"]=true;
            header("Location: index.php?clanok=profil");
        }
}

?>
Toto téma je uzamčeno. Odpověď nelze zaslat.