SSC Juniormester
31. oktober 2020 - 13:46 Der er 8 kommentarer og
1 løsning

"Change Password application"

Hej CE,

Jeg sidder med en "Change-Password-application", hvor jeg får fejlkoden

Notice: Undefined index: currentpass in /Applications/AMPPS/www/BuisnessWorld/Password_change.php on line 46
NULL array(0) { }


Koden er herunder:

<?php

session_start();


$con = new mysqli('****', '****, '****', '****');


$user=$_SESSION["user"];



if ($con->connect_errno) {
  echo "Failed to connect to MySQL: (" . $con->connect_errno . ") " . $con->connect_error;
}

$stmt = $con->prepare("SELECT * FROM members WHERE user=? LIMIT 1");


$stmt->bind_param("s", $user);

// execute
$stmt->execute();


$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
  if ($_POST["currentPass"] == $row["pass"] && $_POST["newPass"] == $row["confirmPass"]) {
    $updateStmt = $con->prepare("UPDATE members SET pass=? WHERE user=?");
    $stmt->bind_param("s", $user);
    $updateStmt->bind_param("ss", $_POST["newpass"], $pass);
    $updateStmt->execute();
    $message = "Password changed successfully!";
  } else {
    $message = "Password is incorrect.";
  }
}


ini_set('display_errors', 1);ini_set('display_startup_errors', 1);error_reporting(E_ALL);


var_dump($_POST["currentpass"]);


var_dump($_POST);

?>


Tak for hjælpen på forhånd,

Vh SSC
Slater Ekspert
31. oktober 2020 - 14:02 #1
Du har skrevet "currentPass" det ene sted og "currentpass" det andet.
SSC Juniormester
31. oktober 2020 - 14:07 #2
Takke for hjælpen! Det er desværre ikke løsningen,

Notice: Undefined index: currentPass in /Applications/AMPPS/www/BuisnessWorld/Password_change.php on line 46
NULL array(0) { }

vh SSC
SSC Juniormester
31. oktober 2020 - 14:09 #3
Her er andel del af koden,

<!DOCTYPE html>
<html>
<head>
<title>Password Change</title>

</head>
<body>
<h3 align="center">CHANGE PASSWORD</h3>
<div><?php if(isset($message)) { echo $message; } ?></div>
<form method="post" action="Password_change.php" >
Current Password:<br>
<input type="password" name="currentPass"><span id="currentPass" class="required"></span>
<br>
New Password:<br>
<input type="password" name="newPass"><span id="newPass" class="required"></span>
<br>ª
Confirm Password:<br>
<input type="password" name="confirmPass"><span id="confirmPass" class="required"></span>

<button type="submit">Change Password</button>
</form>

</body>
</html>
olsensweb.dk Ekspert
31. oktober 2020 - 14:48 #4
>$con = new mysqli('****', '****, '****', '****');
her mangler en plinger, men det er vist bare opstået da du fjernede db setting


#0
>$updateStmt->bind_param("ss", $_POST["newpass"], $pass);
skulle $pass ikke være $user
SSC Juniormester
31. oktober 2020 - 14:58 #5
Korrekt i forhold til ">$con = new mysqli('****', '****, '****', '****');
her mangler en plinger, men det er vist bare opstået da du fjernede db setting"


Om jeg bruger  pass eller user (med $) giver desværre den samme fejlkode
olsensweb.dk Ekspert
31. oktober 2020 - 15:03 #6
#0
>if ($_POST["currentPass"] == $row["pass"] && $_POST["newPass"] == $row["confirmPass"]) {
har du en collonne i din db der hedder confirmPass

hvis du har må du forklare hvorfor
SSC Juniormester
31. oktober 2020 - 15:05 #7
Ah har jeg ikke, kun kolonne, der hedder pass og user :-)
olsensweb.dk Ekspert
31. oktober 2020 - 16:01 #8
#7
du behøver heller ikke flere, men en id er nok en god ide :)



din code renskrevet

Password_change.php
<?php
session_start();
$con = new mysqli('localhost', 'root', '', 'test');
// $user = "rip"; // test
$user=$_SESSION["user"]; // udkommenteret under test

if ($con->connect_errno) {
    echo "Failed to connect to MySQL: (" . $con->connect_errno . ") " . $con->connect_error;
}
if ($_POST["newPass"] == $_POST["confirmPass"]) {
    $stmt = $con->prepare("SELECT * FROM members WHERE user=? LIMIT 1");
    $stmt->bind_param("s", $user);
// execute
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        if ($_POST["currentPass"] == $row["pass"]) {
            $updateStmt = $con->prepare("UPDATE members SET pass=? WHERE user=?");
            $updateStmt->bind_param("ss", $_POST["newPass"], $user);
            $updateStmt->execute();
            $message = "Password changed successfully!";
        } else {
            $message = "Password is incorrect.";
        }
    }
} else {
    $message = "de 2 nye password er ikke ens";
}

echo $message;
?>



test tabel
CREATE TABLE `members` (
  `id` int(11) NOT NULL,
  `firstname` varchar(255) COLLATE utf8_danish_ci NOT NULL,
  `lastname` varchar(255) COLLATE utf8_danish_ci NOT NULL,
  `user` varchar(255) COLLATE utf8_danish_ci NOT NULL,
  `pass` varchar(255) COLLATE utf8_danish_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci;

INSERT INTO `members` (`id`, `firstname`, `lastname`, `user`, `pass`) VALUES
(1, 'rip', 'andemad', 'rip', '147258'),
(3, 'rap', 'and', 'rap', '1234'),
(4, 'rup', 'and', 'rup', '1234');

ALTER TABLE `members`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `members`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
COMMIT;


et forbedrings forslag: hash password
https://www.php.net/manual/en/function.password-hash.php
SSC Juniormester
31. oktober 2020 - 19:34 #9
Tusind tak for hjælpen!
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

Opret Preview

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





Premium
Fremtiden har aldrig set mere usikker ud for Intel: Her er det, der kan redde – og dødsdømme chip-kæmpen
Computerviews: Intels nyslåede topchef Pat Gelsinger står overfor en stribe rigtig svære beslutninger. Hvis han ikke træder varsomt, vil chip-giganten sandsynligvis sygne hen.
Computerworld
Akut mangel på chip tvinger verdens største bil-producenter til at drosle ned for produktionen af biler
Flere af verdens største bil-producenter er tvunget til at drosle ned for produktionen på grund af mangel på chip, som de ikke kan få leveret.
CIO
Podcast: Hos Viking Life-Saving Equipment er it gået fra at være backend til at være noget, som kunderne spørger aktivt efter
Podcast, The Digital Edge: Viking leverer en stadig større del af deres produkt som en tjeneste. Som en del af tjenesten tager Viking ansvar for sikkerheden ved at levere, dokumentere og vedligeholde det nødvendige sikkerhedsudstyr. Hør hvordan Henrik Balslev senior digital director hos Viking har løftet den opgave.
Job & Karriere
Microsoft i kæmpe dansk satsning - åbner tre store datacentre i Danmark
Microsoft lancerer kæmpe satsning fra hovedkvarteret i Lyngby. Selskabet åbner tre store bæredygtige datacentre på Sjælland.
White paper
Digital transformation tvinger organisationer til at nå deres digitale mål på nye måder
Allerede for to år siden hævdede nordiske virksomheder, at virksomhedernes konkurrenceevne og sågar overlevelse var afhængig af en vellykket digitalisering. De var klar, fulde af håb og på vej mod det digitale paradis. Hvordan gik det så? Hvor er de nu? For at finde ud af det, interviewede DigiPlex og Norstat 377 forretningsledere og IT-beslutningstagere fra organisationer fordelt over hele Danmark, Sverige og Norge om deres digitaliseringsfremskridt, om hvordan de har håndteret pandemien, og om hvordan IT understøtter eller står i vejen for indfrielsen af deres bæredygtighedsmål. DigiPlex kan nu dele en rapport med resultaterne fra undersøgelsen samt tanker om, hvordan man håndterer dem. De deler også nogle nyttige tips til, hvordan man skaber en pålidelig infrastruktur, der kan tilskynde til og understøtte ambitioner i den digitale økonomi. Læs mere i rapporten Nordic Data Center Trends 2020: Riding out the Storm.