---
title: "lösenordsproblem..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/135462-lösenordsproblem"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "FunTrix"
published: "2005-10-09T10:09:12.000Z"
updated: "2005-10-15T15:03:57.000Z"
replies: 18
views: 557
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/135462-lösenordsproblem"
---

# lösenordsproblem...

## #1 — FunTrix, 2005-10-09T10:09Z

Tja..!
någon som kan hjälpa mig att reda ut vad som är fel i min byta lösenordskod... direkt när man går in på sidan så står det att lösenordet är bytt och han byter till att man inte har något lösenord...
skriver man i alla information rätt så står det fortfarande att lösenordet är bytt men då gör han inte det... hjälp!   :l 

```php
<?php
session_start(); // Alltid överst på sidan
 
// Kolla om inloggad = sessionen satt
if (!isset($_SESSION['sess_user'])) {
   header("Location: ../index.php");
   exit;
}
// ta fram user information.
$user = $_SESSION['sess_user'];
 
include "../conn.php"; // Databasanslutningen
?>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 
...... massa skit ....
 
<body>
 
<?
$pass   = md5($_POST['pass']);   
$sql = "SELECT * FROM `uploadmembers` WHERE user='{$user}'";
$result = mysql_query($sql) or die(mysql_error());
 
if (mysql_num_rows($result) == 0){
while ($variable = mysql_fetch_array($result)){
   $oldpass = $variable['pass'];
}} else {
   $error = 1;
}
 
If(($_POST['newpass'] == $_POST['newpass2']) && ($_POST['oldpass'] == $oldpass)) {
   $sql = "UPDATE uploadmembers SET pass='{$pass}' WHERE user='{$user}'";
   $result = mysql_query($sql) or die(mysql_error());
   $error = 0;
} else {
   If ($_POST['newpass'] <> $_POST['newpass2']) {
     $error = 2;
   }
   If ($_POST['oldpass'] <> $oldpass) {
     $error = 3;
   }
}
 
switch($error){
  case 0:
    echo 'Lösenordet har bytts.';
    break;
  case 1:
    echo 'Du försöker exploita systemet och ladda upp med någon annans användare, fy skäms.';
    break;
  case 2:
    echo 'Ditt nya lösenord överstämmer inte med varandra.';
    break;
  case 3:
    echo 'Ditt gamla lösenord som du angett är fel';
   break;
}
 
?>
                                      </span>                                    </p>
                                    <form name="form1" method="post" action="index.php">
                                      <table width="61%"  border="0" cellspacing="0" cellpadding="0">
                                        <tr>
                                          <td>Byt l&ouml;senord </td>
                                        </tr>
                                        <tr>
                                          <td>
                                            <table width="100%"  border="0" cellspacing="0" cellpadding="0">
                                              <tr>
                                                <td> <br>
              Ditt gamla l&ouml;senord: <br>
              <input name="oldpass" type="password" id="oldpass"></td>
                                              </tr>
                                              <tr>
                                                <td>Ditt nya l&ouml;senord: </td>
                                              </tr>
                                              <tr>
                                                <td><input name="newpass" type="text" id="newpass"></td>
                                              </tr>
                                              <tr>
                                                <td>Ditt nya l&ouml;senord igen: <br>
                                                  <input name="newpass2" type="text" id="newpass2"></td>
                                              </tr>
                                              <tr>
                                                <td><input type="submit" name="Submit" value="Byt l&ouml;senord"></td>
                                              </tr>
                                          </table></td>
                                        </tr>
                                      </table>
                                    </form>
```

Permalänk: https://www.webforum.nu/p/135462

## #2 — Matte, 2005-10-09T14:22Z

Ändra

```php
if (mysql_num_rows($result) == 0){
```

till

```php
if (mysql_num_rows($result) > 0){
```

Permalänk: https://www.webforum.nu/p/1685816

## #3 — FunTrix, 2005-10-09T15:04Z

men då får jag istället upp att ditt gamla lösenord som du har angett är fel...

Permalänk: https://www.webforum.nu/p/1685825

## #4 — Matte, 2005-10-09T16:21Z

Du har SQL-frågan:

```php
$sql = "SELECT * FROM `uploadmembers` WHERE user='{$user}'";
```

där $user är lika med $\_SESSION\['sess_user'\].

Längre upp har du en kontroll av att $\_SESSION\['sess_user'\] verkligen finns, annars skicka till index-sidan.
Det enda sätt du skulle kunna finna 0 (noll) rader i din SQL-körning är om du (användaren) blivit raderad från databasen efter inloggning.
Om däremot 0 (noll) rader hittades så kan du inte köra mysql_fetch_array() på resultatet, då det är tomt.

Testa istället att göra så här:

```php
$_POST['oldpass']  = md5($_POST['oldpass']);    

$sql = "SELECT pass FROM `uploadmembers` WHERE user='{$user}'";
$result = mysql_query($sql) or die(mysql_error()); 

if (mysql_num_rows($result) > 0){ 
   $oldpass = mysql_result($result, 0, 'pass'); 
} else { 
   $error = 1; 
} 

if(!isset($error) && $_POST['newpass'] == $_POST['newpass2'] && $_POST['oldpass'] == $oldpass) {
```

Permalänk: https://www.webforum.nu/p/1685851

## #5 — FunTrix, 2005-10-09T21:22Z

testade att köra med min gamla kod och ta bort user $user = $\_SESSION\['sess_user'\]; 
det hjälpte inte, får upp att det gamla lösenordet är fel då... jag får samma fel om jag kör din kod..

Permalänk: https://www.webforum.nu/p/1685928

## #6 — Matte, 2005-10-09T22:21Z

> **FunTrix skrev:**
>
> testade att köra med min gamla kod och ta bort user $user = $\_SESSION\['sess_user'\]; 
> det hjälpte inte, får upp att det gamla lösenordet är fel då... jag får samma fel om jag kör din kod..

Om du tar bort $user = $\_SESSION\['sess_user'\]; bör du få det, ja.

Permalänk: https://www.webforum.nu/p/1685947

## #7 — FunTrix, 2005-10-10T14:55Z

ja men jag har även testat att ha kvar $user = $\_SESSION\['sess_user'\]; och lägga in din kod, fick samma utskrift där...

Permalänk: https://www.webforum.nu/p/1686120

## #8 — Matte, 2005-10-11T13:08Z

VIsa hur din kod ser ut nu efter ändringar.

Permalänk: https://www.webforum.nu/p/1686524

## #9 — FunTrix, 2005-10-11T20:39Z

så här ser hela min kod ut nu:

```php
<?php
session_start(); // Alltid överst på sidan 

// Kolla om inloggad = sessionen satt 
if (!isset($_SESSION['sess_user'])) {
   header("Location: ../index.php");
   exit;
}
// ta fram id information.
$user = $_SESSION['sess_user'];

include "../conn.php"; // Databasanslutningen 
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<p><span class="style6">
  <?
 $_POST['oldpass']  = md5($_POST['oldpass']);    

$sql = "SELECT pass FROM `uploadmembers` WHERE user='{$user}'";
$result = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($result) > 0){
   $oldpass = mysql_result($result, 0, 'pass');
} else {
   $error = 1;
}

if(!isset($error) && $_POST['newpass'] == $_POST['newpass2'] && $_POST['oldpass'] == $oldpass) { 
   $sql = "UPDATE uploadmembers SET pass='{$pass}' WHERE user='{$user}'";
   $result = mysql_query($sql) or die(mysql_error());
   $error = 0;
} else {
   If ($_POST['newpass'] <> $_POST['newpass2']) {
     $error = 2;
   }
   If ($_POST['oldpass'] <> $oldpass) {
     $error = 3;
   }
}
 
switch($error){
  case 0:
    echo 'L&ouml;senordet har bytts.';
    break;
  case 1:
    echo 'Du f&ouml;rs&ouml;ker exploita systemet och ladda upp med n&aring;gon annans anv&auml;ndare, fy sk&auml;ms.';
    break;
  case 2:
    echo 'Ditt nya l&ouml;senord &ouml;verst&auml;mmer inte med varandra.';
    break;
  case 3:
    echo 'Ditt gamla l&ouml;senord som du angett &auml;r fel';
   break;
}
 
?>
</span> </p>
<form name="form1" method="post" action="index.php">
  <table width="61%"  border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>Byt l&ouml;senord </td>
    </tr>
    <tr>
      <td><table width="100%"  border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td><br>
            Ditt gamla l&ouml;senord: <br>
            <input name="oldpass" type="password" id="oldpass"></td>
        </tr>
        <tr>
          <td>Ditt nya l&ouml;senord: </td>
        </tr>
        <tr>
          <td><input name="newpass" type="text" id="newpass"></td>
        </tr>
        <tr>
          <td>Ditt nya l&ouml;senord igen: <br>
                <input name="newpass2" type="text" id="newpass2"></td>
        </tr>
        <tr>
          <td><input type="submit" name="Submit" value="Byt l&ouml;senord"></td>
        </tr>
      </table></td>
    </tr>
  </table>
</form>
</body>
</html>
```

Permalänk: https://www.webforum.nu/p/1686684

## #10 — Matte, 2005-10-11T21:20Z

Först.
Är det jag som har missuppfattat något när det gäller att du har MD5() på dina lösenord i databasen ?

Sen ser jag ett fel, med det kan vi ta när jag får svar på frågan.

Permalänk: https://www.webforum.nu/p/1686699

## #11 — FunTrix, 2005-10-14T15:50Z

hmm, jo jag använder md5 krypterade lösenord i min databas... 
krypterar han inte lr och vad är det andra felet?

Permalänk: https://www.webforum.nu/p/1687709

## #12 — Matte, 2005-10-14T16:11Z

Testa så här:

```php
<?php 
session_start(); // Alltid överst på sidan 

// Kolla om inloggad = sessionen satt 
if (!isset($_SESSION['sess_user'])) { 
   header("Location: ../index.php"); 
   exit; 
}

include "../conn.php"; // Databasanslutningen 

if (isset($_POST['Submit'])) {

   $sql = "SELECT COUNT(*) FROM `uploadmembers` WHERE user = '{$_SESSION['sess_user']}' AND pass = MD5('{$_POST['oldpass']}')";
   $result = mysql_query($sql);
   
   if (mysql_result($result, 0) == 0) {

      $error = 3;

   } else {
   
      if ($_POST['newpass'] <> $_POST['newpass2']) { 
         $error = 2; 
      } else {
         $sql = "UPDATE uploadmembers SET pass = MD5('{$_POST['newpass']}') WHERE user = '{$_SESSION['sess_user']}'"; 
         $result = mysql_query($sql) or die(mysql_error()); 
         $error = 0;
      }
   
   }

}

?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title></title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 

<body> 
<p><span class="style6"> 
<? 

if (isset($error)) {

   switch($error){ 
     case 0: 
       echo 'L&ouml;senordet har bytts.'; 
       break; 
     case 1: 
       echo 'Du f&ouml;rs&ouml;ker exploita systemet och ladda upp med n&aring;gon annans anv&auml;ndare, fy sk&auml;ms.'; 
       break; 
     case 2: 
       echo 'Ditt nya l&ouml;senord &ouml;verst&auml;mmer inte med varandra.'; 
       break; 
     case 3: 
       echo 'Ditt gamla l&ouml;senord som du angett &auml;r fel'; 
      break; 
   }

} 

?> 
</span> </p> 
<form name="form1" method="post" action="index.php"> 
  <table width="61%"  border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
      <td>Byt l&ouml;senord </td> 
    </tr> 
    <tr> 
      <td><table width="100%"  border="0" cellspacing="0" cellpadding="0"> 
        <tr> 
          <td><br> 
            Ditt gamla l&ouml;senord: <br> 
            <input name="oldpass" type="password" id="oldpass"></td> 
        </tr> 
        <tr> 
          <td>Ditt nya l&ouml;senord: </td> 
        </tr> 
        <tr> 
          <td><input name="newpass" type="text" id="newpass"></td> 
        </tr> 
        <tr> 
          <td>Ditt nya l&ouml;senord igen: <br> 
                <input name="newpass2" type="text" id="newpass2"></td> 
        </tr> 
        <tr> 
          <td><input type="submit" name="Submit" value="Byt l&ouml;senord"></td> 
        </tr> 
      </table></td> 
    </tr> 
  </table> 
</form> 
</body> 
</html>
```

Permalänk: https://www.webforum.nu/p/1687717

## #13 — FunTrix, 2005-10-14T16:44Z

tackar... det var ett steg åt rätt riktning iaf, dock finns fortfarande ett problem till och det är när man bara fyller i sitt gamla lösenord och inget på de nya lösenorden så byts lösenordet till ingenting... måste ha en spärr som gör att man inte kan få lösenordet bytt till ingenting...

Permalänk: https://www.webforum.nu/p/1687731

## #14 — Matte, 2005-10-14T19:29Z

Använd empty() för att kolla $\_POST\['newpass'\].

Permalänk: https://www.webforum.nu/p/1687795

## #15 — FunTrix, 2005-10-14T20:54Z

hmm, ska jag göra så här då?:
         $sql = "UPDATE uploadmembers SET pass = MD5('if empty({$\_POST\['newpass'\]})'
väldigt osäker på hur det ska se ut i den där raden... :/

Permalänk: https://www.webforum.nu/p/1687813

## #16 — Matte, 2005-10-14T21:05Z

Du gör något i de här stilen:

```php
      if ($_POST['newpass'] <> $_POST['newpass2']) { 
         $error = 2;
      } elseif (empty($_POST['newpass'])) {
         $error = 4;
      } else { 
         $sql = "UPDATE uploadmembers SET pass = MD5('{$_POST['newpass']}') WHERE user = '{$_SESSION['sess_user']}'"; 
         $result = mysql_query($sql) or die(mysql_error()); 
         $error = 0; 
      }
```

Permalänk: https://www.webforum.nu/p/1687817

## #17 — FunTrix, 2005-10-14T21:32Z

okej... det fungerade, tackar!
då är det bara en sak till som jag funderar över och det är om man kan göra på något sätt så att textboxarna som du skriver in dina lösenord i inte töms om man skriver fel..
utan felmedelandet ska bara komma utan att boxarna töms...

Permalänk: https://www.webforum.nu/p/1687823

## #18 — Matte, 2005-10-15T14:51Z

Då kan du testa något i den här stilen:

```php
<?php

$oldpass  = !empty($error) ? $_POST['oldpass'] : '';
$newpass  = !empty($error) ? $_POST['newpass'] : '';
$newpass2 = !empty($error) ? $_POST['newpass2'] : '';

?>
        <tr> 
          <td><br> 
            Ditt gamla l&ouml;senord: <br> 
            <input name="oldpass" type="password" id="oldpass" value="<?php echo $oldpass ?>" /></td> 
        </tr> 
        <tr> 
          <td>Ditt nya l&ouml;senord: </td> 
        </tr> 
        <tr> 
          <td><input name="newpass" type="text" id="newpass" value="<?php echo $newpass ?>" /></td> 
        </tr> 
        <tr> 
          <td>Ditt nya l&ouml;senord igen: <br> 
                <input name="newpass2" type="text" id="newpass2" value="<?php echo $newpass2 ?>" /></td> 
        </tr>
```

Permalänk: https://www.webforum.nu/p/1688002

## #19 — FunTrix, 2005-10-15T15:03Z

okej.. tackar så hemskt mkt :)

Permalänk: https://www.webforum.nu/p/1688007

---

Tråden på webben: https://www.webforum.nu/amne/php/135462-lösenordsproblem
