Avatar billede diablo925 Nybegynder
06. oktober 2008 - 18:02 Der er 28 kommentarer

ændre kodeord script virker ikke

har i næsten 3 dage prøvet at få min ændre kodeord script til at virke
der står hele tiden "oops! The Username you entered does not exist" når man logger ind på siden

jeg har kontakt med min MYSQL server

nogle der kan se hvad der er galt og måske kan hjælpe mig med at få det til at virke

den skal gemme koden i md5

<?php
$connection=mysql_connect("localhost","xxxxxx","xxxxx");
$db=mysql_select_db("login",$connection);
$result = mysql_query("select * from members where login='$_POST[username]'");
if($result)
{
echo "oops! The Username you entered does not exist";
}
else
if($_POST['password']!=mysql_result($result, 0))
{
echo "You entered an incorrect password";
}
else if($_POST['newpassword']=$_POST['confirmnewpasssword'])
{
echo "The new password and confirm new password fields must be the same";
}
else
$sql=mysql_query("UPDATE members SET passwd='.md5$_POST[newpassword]' where login='$_POST[username]'");
if($sql)
{
echo "Congratulations You have successfully changed your password";
}
?>

<html>
<head>
<title>changed</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<p align="center">Ændre kodeord</p>
  <form method="POST" action="<?=$PHP_SELF;?>">
  <div align="left">Navn:
    <input name="username" type="text" size="20">
    <br>
    Gammelt kodeord:
    <input type="password" name="password" size="20">
    <br>
    Nyt kodeord:
    <input type="password" name="newpassword" size="20">
    <br>
    Nyt kodeord igen:
    <input type="confirmnewpasssword" name="password" size="20">
  </div>
  <div align="center"><center><p><input type="submit" value="Gem"
      name="login"><input type="reset" value="Reset" name="B2"></p>
      </center></div>
  </form>
</body>
</html>

hilsen
Carsten
Avatar billede w13 Novice
06. oktober 2008 - 18:09 #1
Hedder tabellen "members" og feltet med brugernavnet "login"?

Tjek evt. (med echo), om $_POST[username] virkelig indeholder det rigtige.
Avatar billede g0t Nybegynder
06. oktober 2008 - 18:20 #2
skal der ikke stå if(!$result)
{
echo "oops! The Username you entered does not exist";
}

altså ! foran.
Avatar billede diablo925 Nybegynder
06. oktober 2008 - 18:31 #3
hmm ikke med

i kan se hvad jeg mener på http://ts.ogamets.dk/AT-Guide/login/chagen.php

hvis nogle har et script som virker bedre end mit og vil dele det vil jeg blive glad
Avatar billede erikjacobsen Ekspert
06. oktober 2008 - 18:40 #4
Og et enkelt lighedstegn her er helt sikkert forkert ;)

else if($_POST['newpassword']=$_POST['confirmnewpasssword'])
Avatar billede w13 Novice
06. oktober 2008 - 18:49 #5
Jeg har prøvet at rette de forskellige fejl, jeg kunne finde, her:

<?php
$connection=mysql_connect("localhost","xxxxxx","xxxxx");
$db=mysql_select_db("login",$connection);
$result = mysql_query("select * from members where login='$_POST[username]'");
if(!$result)
{
    echo "oops! The Username you entered does not exist";
}
else if($_POST['password']!==mysql_result($result, 0))
{
    echo "You entered an incorrect password";
}
else if($_POST['newpassword']==$_POST['confirmnewpasssword'])
{
    echo "The new password and confirm new password fields must be the same";
}
else{
    $result = mysql_query("UPDATE members SET passwd='".md5($_POST[newpassword])."' where login='$_POST[username]'");

    if($result)
    {
        echo "Congratulations You have successfully changed your password";
    }
}
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>changed</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
  <p style="text-align:center">Ændre kodeord</p>
  <form method="post" action="">
    <p style="text-align:left">
      Navn:
      <input type="text" name="username" size="20">
      <br>
      Gammelt kodeord:
      <input type="password" name="password" size="20">
      <br>
      Nyt kodeord:
      <input type="password" name="newpassword" size="20">
      <br>
      Nyt kodeord igen:
      <input type="password" name="confirmnewpassword" size="20">
    </p>
    <p style="text-align:center">
      <input type="submit" value="Gem">
      <input type="reset" value="Nulstil">
    </p>
  </form>
</body>
</html>
Avatar billede diablo925 Nybegynder
06. oktober 2008 - 19:16 #6
hmm nu skriver den
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 3 in C:\Programmer\e-novative\WAMP\www\AT-Guide\login\chagen.php on line 9

og så er "oops! The Username you entered does not exist" byttet ud med "You entered an incorrect password"
Avatar billede erikjacobsen Ekspert
06. oktober 2008 - 19:30 #7
if(!$result)

skal rettes til

  if(mysql_num_rows($result)==0)

Det er som bekendt ingen fejl at der kommer nul rækker tilbage.
Avatar billede diablo925 Nybegynder
06. oktober 2008 - 20:02 #8
hmm virker heller ikke :/ den skriver "oops! The Username you entered does not exist"

og den gemmer ikke det man ændre
Avatar billede w13 Novice
06. oktober 2008 - 21:08 #9
Hvad så med det, jeg spurgte om i 06/10-2008 18:09:41?
Avatar billede erikjacobsen Ekspert
06. oktober 2008 - 21:38 #10
Som du skriver dit script her, så får du den fejl før du trykker på submit, fordi du ikke har en test for om det er første gang du er på siden, eller om det er fordi der er trykket på submit.
Avatar billede diablo925 Nybegynder
06. oktober 2008 - 21:38 #11
og hvad mener du ved det

hvad skal man skrive
Avatar billede henninghabor Nybegynder
07. oktober 2008 - 11:05 #12
erikjacobsen mener at du skal tjekke om din formular bliver sendt eller om siden vises for første gang:

<php
if(isset($_POST["login"])) {
  // Her er forbindelse til database og brugerens informationer behandles
} else {
  // Her er formularen
}
Avatar billede diablo925 Nybegynder
07. oktober 2008 - 20:51 #13
fået det til at virke hvis koden ikke er gemt i md5

men nu er de gammel koder gemt i md5 også

else if ($_POST[password])!==mysql_result($result, 0))

vil tro det er denne line der skal tilføjes md5 eller er jeg helt ved siden af den
Avatar billede diablo925 Nybegynder
07. oktober 2008 - 21:30 #14
giver 100 point til den som kan finde en løsning
Avatar billede w13 Novice
07. oktober 2008 - 23:01 #15
Nu ligger dit db-brugernavn og db-password her, så medmindre det er ligemeget, kan du kontakte en administrator og bede om at få fjernet dette spørgsmål.
Avatar billede henninghabor Nybegynder
07. oktober 2008 - 23:29 #16
Der er også et problem i dit accepterede svar 07/10-2008 22:56:36.

Du "echo"'er fejlkoder eller bekræftelse udenfor <body></body>, hvilket ikke overholder w3c's standarder for html.

Endvidere bruger du rigtig mange linier kode på at hente det gamle kodeord fra databasen.

Du skal vel egentligt også kontrollere at brugeren har skrevet noget.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>changed</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
$oldpass = md5($_POST["password"]);
$newpass1 = md5($_POST["newpassword"]);
$newpass2 = md5($_POST["confirmnewpasssword"]);
$submit = $_POST["submit"];

if(isset($submit)) {
    if(empty($oldpass) || empty($newpass1) || empty($newpass2)) {
        echo "One or more required fields are empty";
    }

    $connection = mysql_connect("localhost", "xxx", "xxx");

    $db = mysql_select_db("login", $connection);

    $result = mysql_query("SELECT id FROM members WHERE login = '" $_POST["username"] . "' AND passwd = '" . $oldpass . "'");

    if(mysql_num_rows($result) > 0) {
        while($column = mysql_fetch_assoc($result)) {
            $id = $column["id"];

            if($newpass1 != $newpass2) {
                echo "The new password and confirm new password fields must be the same";
            } else {
                $result = mysql_query("UPDATE members SET passwd = '" . $newpass1 . "' WHERE id = " . $id);

                if($result) {
                    echo "Congratulations You have successfully changed your password";
                }
            }
        }
    } else {
        echo "Oops! Username does not exist or you entered an incorrect password.";
    }

    mysql_free_result($result);
} else {
?>
  <p style="text-align:center">Ændre kodeord</p>
  <form method="post" action="">
    <p style="text-align:left">
      Navn:
      <input type="text" name="username" size="20">
      <br>
      Gammelt kodeord:
      <input type="password" name="password" size="20">
      <br>
      Nyt kodeord:
      <input type="password" name="newpassword" size="20">
      <br>
      Nyt kodeord igen:
      <input type="password" name="confirmnewpassword" size="20">
    </p>
    <p style="text-align:center">
      <input type="submit" name="submit" value="Gem">
      <input type="reset" value="Nulstil">
    </p>
  </form>
<?php
}
?>
</body>
</html>
Avatar billede snowball Novice
08. oktober 2008 - 00:01 #17
Indlægget med brugernavn og adgangskode er blevet fjernet.

Snowball / Admin
Avatar billede diablo925 Nybegynder
09. oktober 2008 - 19:10 #18
henninghabor der er en fejl i dit script :/

den siger der er en fejl på denne line
$result = mysql_query("UPDATE members SET passwd = '" . $newpass1 . "' WHERE id = " . $id);
Avatar billede henninghabor Nybegynder
09. oktober 2008 - 19:19 #19
Jeg kan umiddelbart ikke se hvad fejlen er, hvorfor du gerne må ændre den til dette:

$result = mysql_query("UPDATE members SET passwd = '" . $newpass1 . "' WHERE id = " . $id) or die(mysql_errno());
Avatar billede henninghabor Nybegynder
09. oktober 2008 - 19:21 #20
Og dog. Måske skal det hedde:

                $result1 = mysql_query("UPDATE members SET passwd = '" . $newpass1 . "' WHERE id = " . $id) or die(mysql_errno());

                if($result1) {
Avatar billede diablo925 Nybegynder
09. oktober 2008 - 19:49 #21
Parse error: parse error, unexpected T_VARIABLE in C:\Programmer\e-novative\WAMP\www\AT-Guide\login\edit1.php on line 23

linen er $result = mysql_query("SELECT id FROM members WHERE login = '" $_POST["username"] . "' AND passwd = '" . $oldpass . "'");
Avatar billede erikjacobsen Ekspert
09. oktober 2008 - 20:17 #22
Der mangler bare et punktum:

$result = mysql_query("SELECT id FROM members WHERE login = '" . $_POST["username"] . "' AND passwd = '" . $oldpass . "'");
Avatar billede diablo925 Nybegynder
09. oktober 2008 - 22:09 #23
ahh det første man bliver blind på er øjnen

men nu kommer Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Programmer\e-novative\WAMP\www\AT-Guide\login\edit1.php on line 25

if(mysql_num_rows($result) > 0) {
Avatar billede erikjacobsen Ekspert
10. oktober 2008 - 08:40 #24
Du skal gøre som Henning skriver kl. ca. 19.00, for at få fejlen fra MySql at se.
Avatar billede diablo925 Nybegynder
10. oktober 2008 - 15:28 #25
henninghabor og erikjacobsen and w13 hvordan skal jeg give jer point :) for nu virker det og er meget glad

skal jeg lave en ny tråd i svare i og så dele dem ud eller er der en nemmer måde ?
Avatar billede henninghabor Nybegynder
10. oktober 2008 - 16:36 #26
Giv du points til de andre, da det er dem der har startet med at hjælpe. Jeg har bare uddybet deres svar lidt. :)
Avatar billede erikjacobsen Ekspert
10. oktober 2008 - 16:57 #27
Ingen point til mig, tak. Samler ikke.
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