Avatar billede IT-Gunner Nybegynder
04. august 2012 - 01:16 Der er 4 kommentarer

Ret password

Hej alle her på eksperten,

Jeg står overfor en lille udfordring. Mine brugere skal selv kunne opdatere deres password. Men uanset hvad jeg gør kommer min alert box op håber der er nogle der kan se hvad der er galt ?
på forhånd tak

Koden er

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

  $gammeltpassword = $_POST['gammeltpassword'];
  $nytpassword1 = md5($_POST['nytpassword1']);
  $nytpassword2 = md5($_POST['nytpassword2']);
 
  $query="SELECT * FROM bruger WHERE bruger_brugernavn=".mysql_real_escape_string($_SESSION['brugernavn']);
  $result = mysql_query($query);
       
    if ($gammeltpassword != $row['bruger_password']|| $nytpassword1 != $nytpassword2){
        ?><script type="text/javascript">
          alert("du har tastet forkert");
        </script>
    <?php }else{
       
  $query = "UPDATE bruger
  SET bruger_password ='".$nytpassword1."'";
  mysql_query($query);
  header ("Location: index_admin.php");       
  }
  }
?>

<form action="" method="post" name="ret_password" id="ret_password"/>
  <table class="overblik_table">
  <tr>
  <td><h3>&AElig;ndre kodeord</h3> </td>
  </tr>
  <tr>
  <td><label>Gammelt kodeord</label></td>
  </tr>
  <tr>
  <td><input type="password" name="gammeltpassword" /> </td>
  </tr>
  <tr>
  <td><label>Nyt kodeord</label></td>
  </tr>
  <tr>
  <td>
  <input type="password" name="nytpassword1" /> </td>
  </tr>
  <tr>
  <tr>
  <td><label>Gammelt kodeord</label></td>
  </tr>
  <td><input type="password" name="nytpassword2" /> </td>
  </tr>
  <tr>
  <td><input type="submit" name="submit" value="&aelig;ndre kode" /></td>
  </tr>
  </table>
  </form>
Avatar billede DeeDawg Nybegynder
04. august 2012 - 04:49 #1
Eftersom $row ikke eksisterer, vil din if-sætning jo altid være sand. Derudover bør du ikke bruge MD5, i hvert fald ikke uden at tilsætte salt først. ;)
Avatar billede tobrukDk Novice
04. august 2012 - 09:23 #2
Og hvis du skulle lave noget om så skulle du gå over til mysqli!


Læse mere her!
http://www.eksperten.dk/guide/1480
Avatar billede cpufan Juniormester
04. august 2012 - 13:45 #3
skift:
if ($gammeltpassword != $row['bruger_password']|| ......

til
if ($gammeltpassword != $result['bruger_password']|| $
Avatar billede olebole Juniormester
04. august 2012 - 14:27 #4
<ole>

#3: Nej, det vil ikke hjælpe noget. $result er jo 'bare' en ressource  =)

  $query="SELECT * FROM bruger WHERE bruger_brugernavn=".mysql_real_escape_string($_SESSION['brugernavn']);
  $result = mysql_query($query);
  $row = mysql_fetch_assoc($result);

Men som tobrukDK anfører, bør du gå over til MySQLI og prepared statements. MySQL-API'et er dybt forældet, og bruger du i stedet prpared statements, undgår du at forsøge at 'hacke' dig til 'sikkerhed'  *o)

/mvh
</bole>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester