---
title: "varför funkar det inte?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/133126-varför-funkar-det-inte"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "FunTrix"
published: "2005-08-22T19:04:46.000Z"
updated: "2005-08-22T21:07:19.000Z"
replies: 18
views: 425
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/133126-varför-funkar-det-inte"
---

# varför funkar det inte?

## #1 — FunTrix, 2005-08-22T19:04Z

hejsan...!
varför får jag upp mitt egna felmedelande att det inte gick att byta lösenord?
vad har jag gjort för fel och hur fixar jag till det?

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

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

?>

<?php 
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>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.style2 {font-size: 18px}
-->
</style>
</head>

<body>
 <form name="form1" method="post" action="">
   <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>
               <?php if(empty($_POST['pass']))

                 $pass = "not set";

        

              if(!empty($_POST['pass']))

              {

                  $pass   = md5($_POST['pass']);                 

                    $update = "UPDATE npmedlemmar SET pass={$pass} WHERE id={$id}";

                    mysql_query($update) or die("Det gick inte att byta l&ouml;senord, f&ouml;rs&ouml;k igen!");

              

                  print("Du har nu bytt lösenord.");

              } 

            

                           

         ?>
               <br> 
               Ditt nya l&ouml;senord:             <br>
             <input name="pass" type="text" id="pass2"></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/133126

## #2 — GunnarD, 2005-08-22T19:27Z

Kör mysql_error() efter mysql_query() då skrivs eventuella felmeddelande ut som mysql genererar.

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

## #3 — Pedda, 2005-08-22T19:30Z

Ser lite konstigt ut
1\. du har ingen action på formuläret
2\. Om lösenordet är tomt så sätter du det till no pass, vilket innebär att när du kollar det andra gången så är det aldrig tomt, inte ens om formuläret var tomt när det skickades.
3\. Var får du ett värde på $id? I conn.php?

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

## #4 — FunTrix, 2005-08-22T19:40Z

1\. action är tillagt.
2\. så vi ska ta bort empty alltså?
så att t.ex. den översta raden blir så här:
\<?php $\_POST\['pass'\]
3\. ingenstans... hur skriver jag ut det?

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

## #5 — Pedda, 2005-08-22T20:02Z

2\. Ett förslag på hur du kan kolla om lösenordet är ifyllt:

```php
// Tag bort eventuella blanksteg i början eller slutet
foreach($_POST as $key => $val){
	$_POST[$key] = trim($val);
}
//Kolla efter tomma fält
if (empty($_POST['pass'])) {
	echo "Du glömde fylla i lösenordet.";
	exit; 
}
```

 3\. Du använder ju $id i din sql sats, nånstans måste du ju få det ifrån.

```php
$update = ("UPDATE npmedlemmar SET pass={$pass} WHERE id={$id}") or die (mysql_error());
```

red/ vad får du för felmeddelande om du lägger till or die (mysql_error()); på din sql sats?

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

## #6 — FunTrix, 2005-08-22T20:04Z

jo jag har ju id i min databas... 
men tänkte att du menade att det skulle vara utskrivet någonstans, så att man skulle hämta det osv tidigare i dokumentet.

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

## #7 — Pedda, 2005-08-22T20:05Z

Det jag menar är var ger du variabeln id ett värde?

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

## #8 — fiddler, 2005-08-22T20:06Z

Vad lagrar du egentligen i sess_user? Kan du använda det istället för id?

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

## #9 — FunTrix, 2005-08-22T20:09Z

japp sess_user ska fungera istället för id, ska jag byta ut id mot sess_user lr?

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

## #10 — FunTrix, 2005-08-22T20:10Z

jag ger variabeln id ett värde på bli medlems sidan, där alla medlemmar blir tilldelade ett id...
så tänkte använda id för att kolla att man uppdaterar rätt persons lösenord...

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

## #11 — Pedda, 2005-08-22T20:12Z

Ville bara kolla så variabeln inte var tom, har den ett värde så kan du så klart använda den.

Du kan ju testa att skriva ut $id för att kolla så den inte är tom.
echo $id;

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

## #12 — fiddler, 2005-08-22T20:12Z

> **FunTrix skrev:**
>
> japp sess_user ska fungera istället för id, ska jag byta ut id mot sess_user lr?

Det beror på vad du lagrade i sess_user vid inloggningen. Precis som Pedda säger så kan felet bero på att du inte har något värde på $id.

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

## #13 — FunTrix, 2005-08-22T20:17Z

nejdå... ett id tilldelas varje ny medlem som registrerar sig... sess_user kan dock krångla ibland när du ska använda det ute på sidan så skulle helst vilja att id fungerar...

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

## #14 — Pedda, 2005-08-22T20:20Z

Jag brukar sätta flera sessioner vid inloggningen, bland annat sess_user och sess_id.
Alltid bra att ha dom till hands.

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

## #15 — FunTrix, 2005-08-22T20:27Z

okej.... men tänkte på en annan sak, vart ska jag lägga in din kod som kontrollerar om man fyllt i något lösenord... skickar med en kod där den visar det hela tiden har testat att flytta ned den också och då visar den det inte alls...

```php
 <?php if(empty($_POST['pass']))

                 $pass = "not set";
				 
				 // Tag bort eventuella blanksteg i början eller slutet
foreach($_POST as $key => $val){
    $_POST[$key] = trim($val);
}
//Kolla efter tomma fält
if (empty($_POST['pass'])) {
    echo "Du glömde fylla i lösenordet.";
    exit; 
}        

              if(!empty($_POST['pass']))

              {

                  $pass   = md5($_POST['pass']);                 

                    $update = "UPDATE npmedlemmar SET pass={$pass} WHERE id={$id}";

                    mysql_query($update) or die("Det gick inte att byta l&ouml;senord, f&ouml;rs&ouml;k igen!");

              

                  print("Du har nu bytt lösenord.");

              } 

            

                           

         ?>
```

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

## #16 — Pedda, 2005-08-22T20:32Z

Du behöver inte ha dina ifsatser

```php
foreach($_POST as $key => $val){
	$_POST[$key] = trim($val);
}
//Kolla efter tomma fält
if (empty($_POST['pass'])) {
	echo "Du glömde fylla i lösenordet.";
	exit; 
} 
// Fältet är inte tomt då kör vi in det i databasen       
$pass   = md5($_POST['pass']);                 
mysql_query("UPDATE npmedlemmar SET pass='{$pass}' WHERE id='{$id}'") or die("Det gick inte att byta lösenord");

print("Du har nu bytt lösenord.");
```

red/ ändrade lite i koden. (sql satsen)

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

## #17 — FunTrix, 2005-08-22T20:36Z

testade att byta ut mot din kod, den visar att man glömde fylla i lösenordet direkt när man kommer in på sidan då också :(
även den senaste som du postade.

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

## #18 — Pedda, 2005-08-22T20:41Z

Lägg allt detta direkt efter include('conn.php'); istället.

```php
<?php
if (isset($_POST['Submit'])) {

	foreach($_POST as $key => $val){
		$_POST[$key] = trim($val);
	}
	//Kolla efter tomma fält
	if (empty($_POST['pass'])) {
		echo "Du glömde fylla i lösenordet.";
		exit; 
	} 
	// Fältet är inte tomt då kör vi in det i databasen       
	$pass   = md5($_POST['pass']);                 
	mysql_query("UPDATE npmedlemmar SET pass='{$pass}' WHERE id='{$id}'") or die("Det gick inte att byta lösenord");
	
	print("Du har nu bytt lösenord.");
} 
?>
```

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

## #19 — Pedda, 2005-08-22T21:07Z

Har en känsla av att du inte har något värde på $id.
Testa med 

```php
mysql_query("UPDATE npmedlemmar SET pass='{$pass}' WHERE user='{$_SESSION['sess_user']}'") or die("Det gick inte att byta lösenord");
```

 ändra user om det inte är det tabellnamnet du har.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/133126-varför-funkar-det-inte
