Bruk av phpass, hvordan sjekke om epost finnes!

Regulæruttrykk, objektorientering, samt problemstillinger omkring optimalisering og sikkerhet.

Bruk av phpass, hvordan sjekke om epost finnes!

Innlegg NyIPHP » 01.03.2013 3:42

Jeg har valgt å bruke http://www.openwall.com/phpass/ for hashing av passord.
pastebin/11581

Problemet mitt oppstår her (tror jeg) på linje 95-134
Kode: Merk alt
if ($op === 'new') {
   if (($check = my_pwqcheck($passord, '', $brukernavn)) !== 'OK')
      fail($check);

   $hash = $hasher->HashPassword($passord);
   if (strlen($hash) < 20)
      fail('Failed to hash new password');
   unset($hasher);

   ($stmt = $link->prepare('insert into tabeller (brukernavn, epost, passord) values (?, ?, ?)'))
      || fail('MySQL prepare', $link->error);
   $stmt->bind_param('sss', $brukernavn, $epost, $hash)
      || fail('MySQL bind_param', $link->error);
   if (!$stmt->execute()) {
/* Figure out why this failed - maybe the username is already taken?
* It could be more reliable/portable to issue a SELECT query here.  We would
* definitely need to do that (or at least include code to do it) if we were
* supporting multiple kinds of database backends, not just MySQL.  However,
* the prepared statements interface we're using is MySQL-specific anyway. */
      if ($link->errno === 1062 /* ER_DUP_ENTRY */)
         fail('This username is already taken');
      else
         fail('MySQL execute', $link->error);
   }

   $what = 'User created';
} else {
   $hash = '*'; // In case the brukernavn is not found
   ($stmt = $link->prepare('select passord from tabeller where brukernavn=? OR where epost=?'))
      || fail('MySQL prepare', $link->error);
   $stmt->bind_param('s', $brukernavn)
      || fail('MySQL bind_param', $link->error);
   $stmt->bind_param('ss', $epost)
      || fail('MySQL bind_param', $link->error);
   $stmt->execute()
      || fail('MySQL execute', $link->error);
   $stmt->bind_result($hash)
      || fail('MySQL bind_result', $link->error);
   if (!$stmt->fetch() && $link->errno)
      fail('MySQL fetch', $link->error);


Hvis brukernavn allerede finnes, så får jeg opp feilmelding, men når jeg prøver å sjekke epost så får jeg ikke det til! kan registrere meg med samme epost flere ganger, bare det ikke er likt brukernavn.
NyIPHP
Medlem
 
Innlegg: 48
Registrert: 05.02.2013 0:01



Gå til Avansert PHP

Hvem er i forumet

Brukere som leser i dette forumet: Ingen registrerte brukere og 4 gjester