Avatar billede sig_mojn Nybegynder
29. oktober 2003 - 03:31 Der er 5 kommentarer og
1 løsning

Ændre bruger

Jeg har lavet et simpelt login-system, hvor man kan oprette en bruger. Brugerens oplysninger bliver så gemt i en database. Nu vil jeg så gerne have mulighed for at brugeren skal kunne ændre i sine data og det så bliver gemt i databasen.

Her er koden til at oprette brugeren:
________________________________________________________

opret.php
________________________________________________________

<html><head></head><body>
<form action="opret-ok.php" method="post">
Brugernavn: <input type="text" name="brugernavn"><br>
Password: <input type="password" name="password"><br>
e-mail: <input type="text" name="e-mail"><br>

<input type="submit" name="opret" value="Opret">
</form></body></html>

________________________________________________________

opret-ok.php
________________________________________________________

<?php
require("config.php");
$opret = &$HTTP_POST_VARS['opret'];
if(empty($opret)) {
  print "Du skal aktivere dette script vha. formen i opret.php."
  ?>
  <br><a href="opret.php">Klik her for at oprette bruger</a>
  <?php
  } else {

$brugernavn = &$HTTP_POST_VARS['brugernavn'];
$password = &$HTTP_POST_VARS['password'];
$email = &$HTTP_POST_VARS['email'];


if(empty($brugernavn) OR empty($password)) {
    echo 'Et af felterne er tomme';}   
    else {
mysql_connect($mysql_host, $mysql_user, $mysql_pw);
mysql_select_db($mysql_db);

$result = mysql_query("select brugernavn from users where brugernavn = '$brugernavn'")
or die (mysql_error());
$number = mysql_num_rows($result);
if ($number > 0) {
print 'Desværre brugernavnet er optaget';
} else {
mysql_query("insert into users (brugernavn, password, email) values ('$brugernavn', '$password', '$email')")
or die(mysql_error());
print "Brugernavn $brugernavn er oprettet!";
?>
<a href="login.php">Klik her for at logge ind</a>
<?php
}
}
}
?>

Håber at der en der kan hjælpe
Avatar billede detox Nybegynder
29. oktober 2003 - 04:47 #1
Her er et udkast (ikke testet):

<?php
require("config.php");
mysql_connect($mysql_host, $mysql_user, $mysql_pw);
mysql_select_db($mysql_db);
if (isset($_POST['change'])) {
    extract($_POST);
    $result = mysql_query("UPDATE users SET brugernavn='$brugernavn', password='$password', email='$email'  where brugernavn = '$old'")
    or die (mysql_error());
    header('Location: din_side.php');  // Send brugeren til en anden side (udskift 'din_side.php')
} else {
$result = mysql_query("select brugernavn, password, email from users WHERE brugernavn = '$brugernavn'")
or die (mysql_error());
$number = mysql_num_rows($result);
if ($number == 1) {
    $row = mysql_fetch_assoc($result);
    extract($row);
?>
    <html><head></head><body>
    <form action="" method="post">
    Brugernavn: <input type="text" name="brugernavn" value="<?=$brugernavn?>" /><br>
    Password: <input type="password" name="password" value="<?=$password?>" /><br>
    e-mail: <input type="text" name="e-mail" value="<?=$email?>" /><br>
    <input type="hidden" name="old" value="<?=$brugernavn?>"
    <input type="submit" name="change" value="Ok" />
    </form></body></html>
<?php
} else {
    print "Fejlmeddelelse"; // Vis fejlmeddelelse, hvis ikke brugeren findes i databasen.
}
}
?>
Avatar billede detox Nybegynder
29. oktober 2003 - 04:51 #2
Den kræver selvfølgelig at brugeren er logget ind og $brugernavn skal være tilgængeligt for scriptet. Men du har vel et eller andet form for tjek på dine sider og en måde at overføre brugernavn på (sessions?).
Avatar billede Slettet bruger
29. oktober 2003 - 08:57 #3
Måske du skulle lave et dobbelt tjek med passwordet. Så folk ikke taster forkert.

<input type="password" name="password" value="<?=$password?>" /><br>
<input type="password" name="passwordigen" value="<?=$password?>" /><br>

Inden du opdatere databasen kan du så lave et tjek.
if($password != $passwordigen) { $echo "Fejl"; } else {
  $result = mysql_query("UPDATE users SET brugernavn='$brugernavn', password='$password', email='$email'  where brugernavn = '$old'")
    or die (mysql_error());
}

På den måde sikre du dig at brugeren så ikke taster forkert, og derefter ikke kan logge ind fremover.
Avatar billede sig_mojn Nybegynder
29. oktober 2003 - 09:26 #4
Jeg har en del problemer med at komme ind på "ret.php", jeg ville gerne lave det sådan så at når man har tastet brugernavn og password kan man komme ind og ændre sin bruger, men den vil ikke rigtig tage login-oplysningerne med over.
Avatar billede Slettet bruger
29. oktober 2003 - 10:08 #5
Du skal bruge en måde at genkende personen på. F.eks. med sessions. Når brugeren logger ind giver du vedkommende nogle oplysninger, så du senere kan genkende personen. F.eks.

$_SESSION['sessionnr'] = session_id();
$_SESSION['brugernavn'] = $_POST['brugernavn'];

På hver side kan du så tjekke om brugeren er logget ind eller ej ved f.eks.

session_start();
if (!isset($_SESSION['brugernavn'], $_SESSION['sessionnr']) || $_SESSION['sessionnr'] != session_id()) {
  $_SESSION = array();
  session_destroy();
}

Og til de sider hvor brugeren skal være logget ind for at kunne noget kan du så tjekke ved

if(isset($_SESSION['brugernavn'])) {  // her er brugeren logget ind. }
else { // vi forklare at man skal være logget ind for at se siden }
Avatar billede detox Nybegynder
29. oktober 2003 - 12:17 #6
Ja, det er en god idé med dobbelttjek af password'et og jeg vil osse give cypermann ret i, du er nød til at bruge sådan et form for login-tjek på dine sider. Du bruger så selvfølgelig $_SESSION['brugernavn'] istedet for $brugernavn. Resultatet er noget i den her stil:

<?php
// Indsæt dit logintjek her!
require("config.php");
mysql_connect($mysql_host, $mysql_user, $mysql_pw);
mysql_select_db($mysql_db);
if (isset($_POST['change'])) {
    extract($_POST);
    if ($password != $passwordigen) die("De to password skal være ens!");
    $result = mysql_query("UPDATE users SET brugernavn='$brugernavn', password='$password', email='$email'  WHERE brugernavn = '$old'")
    or die (mysql_error());
    header('Location: din_side.php');  // Send brugeren til en anden side (udskift 'din_side.php')
} else {
$result = mysql_query("select brugernavn, password, email from users where brugernavn = '$brugernavn'")
or die (mysql_error());
$number = mysql_num_rows($result);
if ($number == 1) {
    $row = mysql_fetch_assoc($result);
    extract($row);
?>
    <html><head></head><body>
    <form action="" method="post">
    Brugernavn: <input type="text" name="brugernavn" value="<?=$brugernavn?>" /><br>
    Password: <input type="password" name="password" value="<?=$password?>" /><br>
    Password igen: <input type="password" name="passwordigen" /><br>
    e-mail: <input type="text" name="e-mail" value="<?=$email?>" /><br>
    <input type="hidden" name="old" value="<?=$brugernavn?>"
    <input type="submit" name="change" value="Ok" />
    </form></body></html>
<?php
} else {
    print "Fejlmeddelelse"; // Vis fejlmeddelelse, hvis ikke brugeren findes i databasen.
}
}
?>
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