>Men fordi jeg gerne vil have mail med er for at andre ikke kan bare skrive et id i browseren og så lave en anden brugers kode om.
så ville du skal du anvende dette
prepare('UPDATE `tbl_medlemmer` SET `adgangskode`=? WHERE `id`= ? and mail = ?')) {
..
$stmt->bind_param('sis', $hashedPassword, $H_id, $H_mail);
**************************
men har du overvejet at give brugeren en rolle, og have brugerens info liggende i en session ??
antag din medlems tabel ser ca sådan ud
CREATE TABLE `tbl_medlemmer` (
`id` int(11) NOT NULL,
`firstname` varchar(255) COLLATE utf8_danish_ci NOT NULL,
`lastname` varchar(255) COLLATE utf8_danish_ci NOT NULL,
`postnummer` varchar(4) COLLATE utf8_danish_ci NOT NULL,
`lande_id` int(1) NOT NULL,
`username` varchar(255) COLLATE utf8_danish_ci NOT NULL,
`email` varchar(255) COLLATE utf8_danish_ci NOT NULL,
`adgangskode` varchar(255) COLLATE utf8_danish_ci NOT NULL,
`role_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci;
din login.php kunne se sådan ud
<?php
// her ligger session_start, $con, og alle sql functioner
require_once("model.php");
if (isset($_POST['FormLoginSend'])) {
$username = $_POST["navn"];
$pass = $_POST["pw"];
// hvis det er rigtigt brugernavn / password retuneres brugerens id og ellers 0
$id = medlemmer_CheckPassword($con, $username, $pass);
if ($id > 0) {
// henter alle bruger info, og fjerner adgangskode fra session
$_SESSION['USER'] = medlemmer_Read($con, $id);
unset($_SESSION['USER']['adgangskode']);
} else {
echo $username . " forsøgte at logget på " . date("Y-m-d H:i:s") . "\n";
}
echo '<meta http-equiv="refresh" content="0;url=index.php">';
} else {
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>demo</title>
<style type="text/css">
</style>
</head>
<body>
<form name="formlogin" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<p><input type="text" name="navn" id="navn" placeholder ="navn" required></p>
<p><input type="password" name="pw" id="pw" placeholder ="kodeord" required></p>
<p><input type="submit" name="FormLoginSend" id="FormLoginSend" value="Submit"></p>
</form>
<a href="forgotten_pw.php"><button type="button" >glemt password</button></a>
<a href="create_user.php"><button type="button" >opret mig</button></a>
<!--
<a href="forgotten_pw.php">glemt password</a>
<a href="create_user.php">opret mig</a>
-->
</body>
</html>
<?php
}
?>
skift_adgangskode.php
<?php
require_once("model.php");
// sikre at kun en med role_id 1 kan skrive en ny id i browseren, hvis en anden bruger skriver en anden id i browseren, vil den bare tage brugerens id
if ($SESSION['USER']['role_id'] == 1){
// $user_id = $_POST['id'];
$user_id = $_GET['id'];
}
else{
$user_id = $SESSION['USER']['id'];
}
if (isset($_POST['button'])) {
/* Rediger fiskeplads */
if ($stmt = $con->prepare('UPDATE `tbl_medlemmer` SET `adgangskode`=? WHERE `id`= ?')) {
/* Bind parametre */
$stmt->bind_param('si', $hashedPassword, $H_id);
/* Sæt værdier på parametrene */
$H_id = $_POST['id'];
$adgangskode = $_POST['adgangskode'];
$hashedPassword = password_hash($adgangskode, PASSWORD_BCRYPT);
/* Eksekver forespørgslen */
$stmt->execute();
/* Luk statement */
$stmt->close();
} else {
/* Der er opstået en fejl */
echo 'Der opstod en fejl i erklæringen: ' . $con->error;
}
}
?>
<form action="" method="post" name="opret_ny_kode" id="opret_ny_kode">
<div>
<div>
<div>Adgangskode:
<div>
<label for="adgangskode"></label>
<input name="adgangskode" type="text" id="adgangskode" value="" size="40" maxlength="255" required>
</div>
</div>
<div>
<input type="submit" name="button" id="button" value="Opret ny kode">
</div>
</div>
</div>
<input name="id" type="hidden" id="id" value="<?php echo $user_id; ?>">
</form>