kostenloser Webspace werbefrei: lima-city


Funktion 'Passwort ändern'

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    darkaurora

    darkaurora hat kostenlosen Webspace.

    Hallo zusammen!

    Ich bastel gerade an einem Script, wo die User ihr Passwort ?ndern k?nnen.

    Ich habe das mit

    $anfrage="UPDATE login SET pass='";
    $anfrage.=$aktuell;
    $anfrage.="'";
    $ergebnis=mysql_query($anfrage)


    gemacht, wobei $aktuell das neue Passwort darstellen soll.

    Allerdings gibt er mir dann einen Fatal Error aus und ?ndert das Passwort aller User auf das, welches nur bei einem User ge?ndert werden soll.

    Reichen diese Infos oder braucht ihr das gesamte Script dazu?

    Bye bye
    DarkAurora
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. n********r

    Du musst eine Where Bedinug mit einbringen

    $anfrage="UPDATE login SET pass='' WHERE username = '".$username."'"
  4. Autor dieses Themas

    darkaurora

    darkaurora hat kostenlosen Webspace.

    Meinst du das dann ungef?hr so:

    $anfrage="UPDATE login SET pass='".$aktuell."' WHERE user = '".$user."'";

    Ich meine, weil bei dem, was du hier reingesetzt hast, fehlt ja irgendwie das neue Passwort ...

    Beitrag ge?ndert am 3.05.2006 16:12 von darkaurora
  5. n********r

    Also bei ist es so ich zeige dir mal meinen Script, hier m?ssen die User ihre E-mail adresse angeben und bekommen dann ein neues Passwort per Mail:

    formular.php:

    <form action="lost_password.php" method="post">
    <table class="login">
    <tr>
    <td colspan="2"><center>Benutzerdaten vergessen</center><br></td>
    </tr>
    <tr>
    <td style="text-align:right"><i>E-Mail: </i></td>
    <td><input type="text" name="user_email" class="login" size="55"></td>
    </tr>
    <tr>
    <td colspan="2"><br><center><input type="submit" name="login" value="Passwort senden >>" class="login"></center><br><bR></td>
    </tr>
    </table
    </form>

    lost_passwort.php

    <?php
    error_reporting(E_ALL);
    
    include ('connection.php');
    
    $user_email = mysql_real_escape_string($_POST['user_email']);
    $sql1="SELECT username FROM user WHERE email = '".$user_email."'";
    $result = mysql_query ($sql1) or die(mysql_error());
    if (mysql_num_rows ($result) > 0)
    {
      $acceptedChars = 'azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789';
      $max = strlen($acceptedChars)-1;
      $password = null;
      for($i=0; $i < 8; $i++) {
       $password .= $acceptedChars{mt_rand(0, $max)};
      }
    
    
      $sql2="UPDATE user SET password = '".$password."'";
      mysql_query ($sql2) or die(mysql_error());
    
    $empfaenger = $user_email;
    $sender = "Malte Kiefer Admin";
    $sendermail = "kiefer-malte@web.de";
    $betreff = "Neues Passwort";
    $text = "Hallo ,
    
    Wir senden dir mit dieser E-Mail ein neues Passwort:
     
    Passwort: ".$password."
    
    Wir raten dir nach dem erneuten Einloggen mit diesem Passwort,
    dein Passwort zu ?ndern.
    
    Mit freundlichen Gr??en
    Dein Admin";
    
    mail($empfaenger, $betreff, $text,
           "From: '".$sender."' <'".$sendermail."'>"); 
      
    echo 'neues Passwort wurde versendet';
     
     }
    
    else
    {
    echo 'keinen User mit dieser E-Mail afresse gefunden';
    }
    
    ?>


    Kannst du ja f?r deine Zwecke umschreiben
  6. Autor dieses Themas

    darkaurora

    darkaurora hat kostenlosen Webspace.

    Nein, per E-Mail ein neues Passwort bekommen, ist schlecht. Weil sich die User selbst eines aussuchen sollen, das sie nutzen m?chten. Ich habe ihnen einfach zu Anfang eines gegeben (sind nur 4 User und es werden nicht mehr, weshalb sich mehr Aufwand nicht lohnt) und das sollen sie nun eben ?ndern.

  7. darkaurora schrieb:
    $anfrage='UPDATE login SET pass=''.$aktuell.'' WHERE user = ''.$user.''';


    Das geht so nicht. Du musst verschiedene Anf?hrungsstrichel verwenden, damit da innerhalb des String Anf?hrungsstrichel sind ;O)

    $anfrage="UPDATE login SET pass='".$aktuell."' WHERE user = '".$user."'";

    So m?sste es funktionieren.

    Beitrag ge?ndert am 3.05.2006 16:41 von ku-shi
  8. "register_globals" und "magic_quotes" lassen gr??en...
    Sauber (und einigerma?en sicher) programmieren ist doch eignetlich nicht so schwierig.

    $query = 'UPDATE `login` SET `pass` = ''.mysql_real_escape_string ($_POST['pass']).'' WHERE `user` = ''.mysql_real_escape_string ($user);
    $result = mysql_query ($query);


    MfG Lucas

    edit :
    Mal ein paar Leerzeichen in den Code-Bereich reingehauen.

    Beitrag ge?ndert am 3.05.2006 16:42 von lucas9991

    Beitrag ge?ndert am 3.05.2006 16:43 von lucas9991
    edit2 :
    Die Code-Funktion spinnt mal wieder. -.-
    Gibt doch sogar ein extra Tutorial dazu in der Tut-Sektion. Aber Aroganz gabs ja schon immer.

    Beitrag ge?ndert am 3.05.2006 16:44 von lucas9991
  9. Autor dieses Themas

    darkaurora

    darkaurora hat kostenlosen Webspace.

    Wenn man schon zitiert, sollte man dies auch richtig tun ... denn du hast genau das gleiche unter das falsche Zitat geschrieben, was ich oben bereits geschrieben habe.

    Bringt mir also nichts weiter, weil ich soweit bereits war.
  10. lucas9991 schrieb:
    edit2 :
    Die Code-Funktion spinnt mal wieder. -.-
    Gibt doch sogar ein extra Tutorial dazu in der Tut-Sektion. Aber Aroganz gabs ja schon immer.

    :megarofl:
    Die scheiss Funktion spinnt schon seit ein paar Tagen...

    Wie w?re es einfach, wenn man eigentlich so gut wie immer folgendes benutzt:
    <?php
      function magic_quotes_strip($mixed) { 
        if(is_array($mixed)) 
            return array_map('magic_quotes_strip', $mixed); 
        return stripslashes($mixed); 
      }
      
      function magic_quotes_off(){
        if(get_magic_quotes_gpc() || ini_get('magic_quotes_sybase')) { 
          $_GET             = magic_quotes_strip($_GET); 
          $_POST            = magic_quotes_strip($_POST); 
          $_COOKIE          = magic_quotes_strip($_COOKIE);
          $_SERVER          = magic_quotes_strip($_SERVER);
          $_FILES           = magic_quotes_strip($_FILES);
          $_ENV             = magic_quotes_strip($_ENV);
          $_REQUEST         = magic_quotes_strip($_REQUEST);
          $HTTP_SERVER_VARS = magic_quotes_strip($HTTP_SERVER_VARS);
          $HTTP_GET_VARS    = magic_quotes_strip($HTTP_GET_VARS);
          $HTTP_POST_VARS   = magic_quotes_strip($HTTP_POST_VARS);
          $HTTP_COOKIE_VARS = magic_quotes_strip($HTTP_COOKIE_VARS);
          $HTTP_POST_FILES  = magic_quotes_strip($HTTP_POST_FILES);
          $HTTP_ENV_VARS    = magic_quotes_strip($HTTP_ENV_VARS);
         
          if (isset($_SESSION)) {    #These are unconfirmed (?)
            $_SESSION = magic_quotes_strip($_SESSION, '');
            $HTTP_SESSION_VARS = magic_quotes_strip($HTTP_SESSION_VARS, '');
          }
        }
      } 
    ?>
  11. Du entwertest zu viele Arrays. ;-)
    Folgende superglobalen Arrays reichen :
    $_GET, $_POST, $_COOKIE und $_REQUEST

    Ggf. noch die hier :
    HTTP_GET_VARS, HTTP_POST_VARS und HTTP_COOKIE_VARS

    MfG Lucas

    P.S.:
    if ($GLOBALS['CONF']['register_globals']) {
    while (list ($global) = each ($GLOBALS)) {
    if (!preg_match('/^(_SERVER|_ENV|_COOKIE|_GET|_POST|_FILES|_REQUEST|HTTP.*)$/', $global)) {
    unset($$global);
    }
    }
    }
    Und "register_globals" ist "deaktiviert". :-)
  12. n********r

    Wof?r die viele Arbeit mit den register_globals?

    Also mach es doch so:

    formular.php

    <form action="new.php" method="post">
    username: <input type="text" name="user" size="55">
    neues password: <input type="password" name="pass" size="55">

    <input type="submit" value="senden" name="senden">
    </form>

    new.php

    $query = 'UPDATE `login` SET `pass` = ''.mysql_real_escape_string ($_POST['pass']).'' WHERE `user` = ''.mysql_real_escape_string ($_POST['user']);
    
    $result = mysql_query ($query);



    Beitrag ge?ndert am 4.05.2006 05:27 von newwarrior
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!