Avatar billede michaeljuul Nybegynder
16. marts 2004 - 16:45 Der er 10 kommentarer og
1 løsning

Login redigering

Jeg har et login script (se scripet efter ***) hvor admin kan logge ind og oprette bruger eller redeigere en bruger. Men når admin er logget ind, så er det kun muligt at redigere enten: Brugernavn, Email, Status. Jeg kunne godt tænke mig at man også kunne redigere i password, istedet for at man skal slette en bruger og oprette denne igen, hvis man skal give dem et nyt password.

***
Her kommer det script man redigere bruger i.

<?php
if(isset($ok_incl) && $_SESSION["status"] == 2 && basename($_SERVER["PHP_SELF"]) == $filnavn) {

$getuser = mysql_query("SELECT * FROM `". $db_navn ."` ORDER BY `brugernavn`") or die (mysql_error());
?>

<div style="margin-left: 100px; margin-right: 100px;">
<center><h2>Brugeredit:</h2></center>
<form action="<?php echo $actionfil; ?>" method="post">
<table border="0" cellspacing="4" align="left"><tr>
    <td><b>Slet</b></td>
    <td><b>Brugernavn</b></td>
    <td><b>Email</b></td>
    <td><b>Status</b></td>
    <td><b>Rediger</b></td>
</tr><?php
while($vis = mysql_fetch_object($getuser)) {
echo"<tr>\n";
echo"    <td><input type=\"checkbox\" name=\"deluser[]\" value=". toForm($vis->brugernavn) ."></td>\n";
echo"    <td>". toHtml($vis->brugernavn) ."</td>\n";
echo"    <td>". toHtml($vis->email) ."</td>\n";
echo"    <td align=\"center\">". toHtml($vis->status) ."</td>\n";
echo"    <td><a href=\"". $actionfil ."?edit=". urlencode($vis->brugernavn) ."\">rediger</a></td>\n";
echo"</tr>";
    }
mysql_free_result($getuser);
?>
<tr>
    <td colspan="5" align="center"><input type="submit" value="Slet markeret"></td>
</tr></table>
</form>

<form action="<?php echo $actionfil; ?>" method="post">
<div align="right">
<?php
if(isset($_SESSION["besked"])) {
echo"<b>". $_SESSION["besked"] ."</b>";
unset($_SESSION["besked"]);
}
if(isset($_SESSION["edit"])) {
$useredit = mysql_query("SELECT * FROM `". $db_navn ."` WHERE `brugernavn` = '". $_SESSION["edit"] ."' LIMIT 1") or die (mysql_error());
    if(mysql_num_rows($useredit) !=0) {
$vis = mysql_fetch_object($useredit);
?>
<input type="hidden" name="editbruger" value=<?php echo toForm($vis->brugernavn); ?>>
<table align="right"><tr>
    <td><a href="<?php echo $actionfil; ?>?annuller=edit">Annuller redigering</a></td>
</tr><tr>
    <td>Brugernavn:<br>
<input type="text" name="bruger" value=<?php echo toForm($vis->brugernavn); ?>></td>
</tr><tr>
    <td>Email:<br>
<input type="text" name="mail" value=<?php echo toForm($vis->email); ?>></td>
</tr><tr>
    <td>Status:<br>
<input type="text" name="admin" value=<?php echo toForm($vis->status); ?>></td>
</tr><tr>
    <td align="center"><input type="submit" value="Gem &aelig;ndringer"></td>
</tr></table>
<?php
mysql_free_result($useredit);
    }else{
echo"Brugeren kunne IKKE findes i DB'en";
    }
}else{
?>
<input type="hidden" name="nybruger" value="nybruger">
<table align="right"><tr>
    <th>Opret ny bruger:</th>
</tr><tr>
    <td>Brugernavn:<br>
<input type="text" name="bruger"></td>
</tr><tr>
    <td>Email:<br>
<input type="text" name="mail"></td>
</tr><tr>
    <td>Password:<br>
<input type="text" name="passw"></td>
</tr><tr>
    <td>Status:<br>
<input type="text" name="admin"></td>
</tr><tr>
    <td align="center"><input type="submit" value="Gem ny bruger"></td>
</tr></table>
<?php
    }
echo"</form></center>\n</div></div>";
}
?>
Avatar billede sukos Juniormester
16. marts 2004 - 17:02 #1
Du laver endnu et tekstfelt til password i formen, når du redigerer.

Og bruger:

mysql_query("UPDATE `". $db_navn ."` set `password` = '". md5($_POST["password"]) ."' WHERE `brugernavn` = '". urldecode($_POST["editbruger"]) ."'") or die (mysql_error());


i $actionfil

ehh, tror jeg! :O)
Avatar billede michaeljuul Nybegynder
16. marts 2004 - 17:41 #2
Skal der så laves en ny sql fil også?
Kan du fortælle hvor i filen?
Her er min action.php fil

<?php
include($_SERVER["DOCUMENT_ROOT"] ."/login/files/main.php");

if(isset($_GET["logud"])) {
    $_SESSION = array();
    session_destroy();
    header("Location:". $redirect ."");
    exit;
    }

if(isset($_POST["bruger"], $_POST["pass"])) {

$check = mysql_query("SELECT `brugernavn`, `status` FROM `". $db_navn ."` WHERE `brugernavn` = '". $_POST["bruger"] ."' AND `password` = md5('". $_POST["pass"] ."')") or die (mysql_error());

    if(mysql_num_rows($check) != 0) {
$user = mysql_fetch_object($check);

    $_SESSION["id"] = session_id();
    $_SESSION["bruger"] = $user->brugernavn;
    $_SESSION["status"] = $user->status;
    $_SESSION["outtime"] = $logudtid;

mysql_query("UPDATE `". $db_navn ."` set `temp` = '". $_SESSION["id"] ."' WHERE `brugernavn` = '". $_SESSION["bruger"] ."' LIMIT 1") or die (mysql_error());
    }else{

    $_SESSION["error"] = "Forkert brugernavn eller password";

    }

mysql_free_result($check);

    header("Location:". $redirect ."");
    exit;
}

//Er alle sessions sat?
if(false !== tjek_login()) {

//Ok, så kan div. POST og GET behandles

    if(isset($_POST["passigen"])) {

$check = mysql_query("SELECT `brugernavn` FROM `". $db_navn ."` WHERE `brugernavn` = '". $_SESSION["bruger"] ."' AND `password` = '". md5($_POST["passigen"]) ."' AND `temp` = '". $_SESSION["id"] ."'") or die (mysql_error());

    if(mysql_num_rows($check) != 0) {
    $_SESSION["outtime"] = $logudtid;
    }else{
    $_SESSION = array();
    session_destroy();
    }

    header("Location:". $redirect ."");
    exit;
    } //slut med POST passigen

if(isset($_GET["action"])) {
    while(list($key, $value) = each($brugerfiler)) {
        if(urldecode($_GET["action"]) == $key) {
            if($_SESSION["status"] != $adminstatus && $_GET["action"] == $adminfil) {
continue;
}
        $_SESSION["fil"] = $key;
        }
    }
    header("Location:". $redirect ."");
    exit;
    } //slut med GET action


//Er den rigtige session sat til at redigere brugere?
if($_SESSION["status"] == $adminstatus) {

    //Editburger
    if(isset($_GET["edit"])) {
    $_SESSION["edit"] = $_GET["edit"];
    header("Location:". $redirect ."");
    exit;
    } //slut med GET edit

    //annuller editbruger
    if(isset($_GET["annuller"]) && $_GET["annuller"] = "edit") {
    unset($_SESSION["edit"]);
    header("Location:". $redirect ."");
    exit;
    } //slut med GET annuller

//Opret en ny bruger
if(isset($_POST["nybruger"])) {

    foreach($_POST as $tjek) {
    if(trim($tjek) == "") {
$_SESSION["besked"] = "Alle felter skal udfyldes!";
    header("Location:". $redirect ."");
    exit;
        }
    }

$tjeknavn = mysql_query("SELECT `brugernavn` FROM `". $db_navn ."` WHERE `brugernavn` = '". $_POST["bruger"] ."'") or die (mysql_error());

    if(mysql_num_rows($tjeknavn) != 1) {
mysql_query("INSERT INTO `". $db_navn ."` (`brugernavn`, `password`, `email`, `status`) VALUES (". toData($_POST["bruger"]) .",'". md5($_POST["passw"]) ."',". toData($_POST["mail"]) .",". toData($_POST["admin"]) .")") or die (mysql_error());
$_SESSION["besked"] = "Ny bruger er oprettet";
    }else{
$_SESSION["besked"] = "Brugernavnet findes allerede!";
    }
    header("Location:". $redirect ."");
    exit;
}//Slut med nybruger

//Slet en bruger
if(isset($_POST["deluser"])) {

    if (is_array($_POST["deluser"])) {
while (list($key1, $key2) = each($_POST["deluser"])) {
    mysql_query("DELETE FROM `". $db_navn ."` WHERE `brugernavn` = '". $key2 ."'") or die (mysql_error());
        }
    }else{
    mysql_query("DELETE FROM `". $db_navn ."` WHERE `brugernavn` = '". $_POST["deluser"] ."'") or die (mysql_error());
    }

    unset($_SESSION["edit"]);

    header("Location:". $redirect ."");
    exit;
}//Slut med sletbruger

//Edit bruger
if(isset($_POST["editbruger"])) {

mysql_query("UPDATE `". $db_navn ."` set `brugernavn` = ". toData($_POST["bruger"]) .", `email` = ". toData($_POST["mail"]) .", `status` = ". toData($_POST["admin"]) ." WHERE `brugernavn` = '". $_POST["editbruger"] ."' LIMIT 1") or die (mysql_error());


    unset($_SESSION["edit"]);

    header("Location:". $redirect ."");
    exit;
}//Slut med edit bruger

    //Slut på tjek om der er adminstatus
    }
//slut på tjek om sessions er sat
}
?>
Avatar billede michaeljuul Nybegynder
16. marts 2004 - 17:46 #3
Det er et script du har lavet engang Sukos
Avatar billede sukos Juniormester
16. marts 2004 - 18:41 #4
som sagt, i den form hvor du redigerer en bruger, kan du lave et nyt felt til at indtaste nyt password, og kalde det for "nytpassword"

<input type="text" name="nytpassword">

Derefter:
//Edit bruger
if(isset($_POST["editbruger"])) {

mysql_query("UPDATE `". $db_navn ."` set `brugernavn` = ". toData($_POST["bruger"]) .",  `password` = '". md5($_POST["nytpassword"]) ."', `email` = ". toData($_POST["mail"]) .", `status` = ". toData($_POST["admin"]) ." WHERE `brugernavn` = '". $_POST["editbruger"] ."' LIMIT 1") or die (mysql_error());
Avatar billede michaeljuul Nybegynder
16. marts 2004 - 18:50 #5
Nu er jeg ikke nogen haj til det. Er det i brugeredit.php disse linjer skal ind?
De andre linjer med input ser sådan. <td>Email:<br>
<input type="text" name="mail" value=<?php echo toForm($vis->email); ?>></td>
</tr><tr>

Kunne du sætte det ind i filen for mig der hvor det skal være?
Avatar billede sukos Juniormester
16. marts 2004 - 18:58 #6
Ja, du bruger bare endnu et felt:

<td>Email:<br>
<input type="text" name="mail" value=<?php echo toForm($vis->email); ?>></td>
</tr><tr>

<td>Nyt pass:<br>
<input type="text" name="nytpassword"></td>
</tr><tr>
Avatar billede michaeljuul Nybegynder
16. marts 2004 - 19:03 #7
ok tak jeg prøver lige om ca 15 min.
Avatar billede michaeljuul Nybegynder
16. marts 2004 - 19:15 #8
Jeg kan ikke lige se hvor der her under skal ind.

//Edit bruger
if(isset($_POST["editbruger"])) {

mysql_query("UPDATE `". $db_navn ."` set `brugernavn` = ". toData($_POST["bruger"]) .",  `password` = '". md5($_POST["nytpassword"]) ."', `email` = ". toData($_POST["mail"]) .", `status` = ". toData($_POST["admin"]) ." WHERE `brugernavn` = '". $_POST["editbruger"] ."' LIMIT 1") or die (mysql_error());
Avatar billede sukos Juniormester
16. marts 2004 - 19:19 #9
I action.php, altså

mysql_query("UPDATE `". $db_navn ."` set `brugernavn` = ". toData($_POST["bruger"]) .",  `password` = '". md5($_POST["nytpassword"]) ."', `email` = ". toData($_POST["mail"]) .", `status` = ". toData($_POST["admin"]) ." WHERE `brugernavn` = '". $_POST["editbruger"] ."' LIMIT 1") or die (mysql_error());

skal bruges i stedet for det gamle, lige under

//Edit bruger
if(isset($_POST["editbruger"])) {
Avatar billede michaeljuul Nybegynder
16. marts 2004 - 19:28 #10
Mange mange tak
Nu virker det :-)

Send lige et svar så du kan få lidt point
Avatar billede sukos Juniormester
16. marts 2004 - 19:31 #11
Ok! :O)
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