ilch Forum » Ilch Clan 1.1 » Allgemein » Usersuche anhand von E-Mail

Geschlossen
  1. #1
    User Pic
    Botox84 Mitglied
    Registriert seit
    09.08.2006
    Beiträge
    1.190
    Beitragswertungen
    21 Beitragspunkte
    Halli hallo, wollt mal fragen wie es möglich ist, die User unter admin/verwalten nicht nur nach Usernamen, sondern auch nach e-Mail suchen kann.

    Desweiteren würde mich interessieren wie man es hinbekommt, dass man sich das neue pw nicht nur anhand des nicknamens, sondern auch anhand der e-mail zuschicken lassen kann.

    Ich bekomme ab und zu mal E-Mails, dass die User Ihren Nicknamen + pw vergessen haben.

    Liebe Grüße

    betroffene Homepage: externer Link
    1 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Unknown|User gelöschter User
    include/admin/user.php suchen nach
            $MPL = db_make_sites ($page , "WHERE name LIKE '" . $q . "'" , $limit , '?user' , 'user');
            $anfang = ($page - 1) * $limit;
            $class = '';
            $q = "SELECT name,recht,id FROM `prefix_user` WHERE name LIKE '" . $q . "' ORDER by recht,posts DESC LIMIT " . $anfang . "," . $limit;


    ersetzen durch
            $MPL = db_make_sites ($page , "WHERE name LIKE '" . $q . "' OR email LIKE '".$q."'" , $limit , '?user' , 'user');
            $anfang = ($page - 1) * $limit;
            $class = '';
            $q = "SELECT name,recht,id FROM `prefix_user` WHERE name LIKE '" . $q . "' OR email LIKE '".$q."' ORDER by recht,posts DESC LIMIT " . $anfang . "," . $limit;


    include/contents/user/password_reminder.php suchen nach
    if ( $show ) {
    	$tpl = new tpl ( 'user/new_pass' );
      $tpl->out(0);
    }


    davor einfügen
    if ( isset($_POST['email']) AND !empty($_POST['email']) AND $show === TRUE ) {
    
      $email = escape($_POST['email'],'string');
    	$erg = db_query("SELECT name FROM prefix_user WHERE email = '".$email."'");
    	if ( db_num_rows($erg) == 1 ) {
    		$row = db_fetch_assoc($erg);
    		
    		$new_pass = genkey(8);
    		$md5_pass = md5($new_pass);
    	  $id = md5 (uniqid (rand()));
    		
    		db_query("INSERT INTO prefix_usercheck (`check`,name,email,pass,datime,ak)
    		VALUES ('".$id."','".$row['name']."','".$email."','".$md5_pass."',NOW(),2)");
    		
    	  $page = $_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
    
    		$confirmlinktext = "\n".$lang['registconfirm']."\n\n".sprintf($lang['registconfirmlink'], $page, $id );
        $regmail = sprintf($lang['newpasswordmail'], $name, $confirmlinktext, $new_pass);
    		
    		icmail($row['email'],'Password Reminder',$regmail); # email an user
    		echo $lang['youhavereceivedaemail'];
    		$show = false;
    	} else {
        echo 'E-Mail Adresse nicht in Datenbank gefunden.';
      }
    }


    weiter suchen nach
    if ( isset ( $_POST['name'] ) ) {


    ersetzen durch
    if ( isset($_POST['name']) AND !empty($_POST['name']) ) {


    include/templates/user/new_pass.htm suchen nach
    <form action="index.php?user-13" method="POST">
      <fieldset>   
    	  <legend>{_lang_pleasefillinyournickname}</legend>
    	    <br>
          <input style="margin-left:20px;" type="text" name="name">
          <br /><br />
          <input style="margin-left:20px;" type="submit" value=" {_lang_newpassword} ">
    			<br /><br />
      </fieldset>
    </form>


    ersetzen durch
    <form action="index.php?user-13" method="POST">
      <fieldset>   
    	  <legend>Passwort vergessen</legend>
    	    <br>
          Nickname: <input type="text" name="name"><br />
    oder E-Mail: <input type="text" name="email">
          <br /><br />
          <input type="submit" value=" {_lang_newpassword} ">
    			<br /><br />
      </fieldset>
    </form>


    Nicht getestet


    Zuletzt modifiziert von Unknown|User am 15.08.2010 - 12:29:19
    1 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.638
    Beitragswertungen
    1193 Beitragspunkte
    Nach Emailsuche im Adminbereich. Prüfe mal ob es schon funktioniert einfach auf WHERE email LIKE zuändern:

    admin/user.php
    $MPL = db_make_sites ($page , "WHERE name LIKE '" . $q . "'" , $limit , '?user' , 'user');

    und
    $q = "SELECT name,recht,id FROM `prefix_user` WHERE name LIKE '" . $q . "' ORDER by recht,posts DESC LIMIT " . $anfang . "," . $limit;


    PW per Email einfach das Prinzip der Abfrage umdrehen! Also so in der Art:
    templates/user/new_pass.htm
    <input tabindex="1" type="text" name="email">


    contents/user/passwort_reminder.php
    if ( isset ( $_POST['email'] ) ) {
      $email = escape($_POST['name'],'string');
    	$erg = db_query("SELECT name FROM prefix_user WHERE email = BINARY '".$email."'");
    	if ( db_num_rows($erg) == 1 ) {
    		$row = db_fetch_assoc($erg);
    		
    		$new_pass = genkey(8);
    		$md5_pass = md5($new_pass);
    	  $id = md5 (uniqid (rand()));
    		
    		db_query("INSERT INTO prefix_usercheck (`check`,name,email,pass,datime,ak)
    		VALUES ('".$id."','".$row['name']."','".$email."','".$md5_pass."',NOW(),2)");
    		
    	  $page = $_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
    
    		$confirmlinktext = "\n".$lang['registconfirm']."\n\n".sprintf($lang['registconfirmlink'], $page, $id );
        $regmail = sprintf($lang['newpasswordmail'], $row['name'], $confirmlinktext, $new_pass);
    		
    		icmail($email,'Password Reminder',$regmail); # email an user
    		echo $lang['youhavereceivedaemail'];
    		$show = false;
    	} else {
        echo 'Email wurde nicht gefunden';
      }
    }
    rules :: doku :: faq :: linkus
    1 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Unknown|User gelöschter User
    1. Ich war schneller *ätsch* lachen
    2. Wollte er immer beide Möglichkeiten haben
    1 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.638
    Beitragswertungen
    1193 Beitragspunkte
    Ich bin einfach zu langsam ;-)
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.638
    Beitragswertungen
    1193 Beitragspunkte
    Unknown|User bei Dir ist noch ein kleiner Fehler drin

        $regmail = sprintf($lang['newpasswordmail'], $row['name'], $confirmlinktext, $new_pass);
            
            icmail($email,'Password Reminder',$regmail); # email an user
            echo $lang['youhavereceivedaemail'];
            $show = false;
        } else {
        echo 'E-Mail Adresse nicht in Datenbank gefunden.';
      }
    }
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Botox84 Mitglied
    Registriert seit
    09.08.2006
    Beiträge
    1.190
    Beitragswertungen
    21 Beitragspunkte
    Vielen Dank schonmal für die ausführliche hilfe zwinker
    Nach E-Mail suchen haut hin.

    Nickname Passwort zusenden lassen geht auch einwandfrei, Nickname(falsch angegeben) haut auch hin die Meldung.

    include/contents/user/password_reminder.php

    Die Funktion nach E-Mail zusenden lassen funzt zwar, allerdings die Meldung nicht.

    hat man die richtige E-Mail Adresse angegeben kommt folgende Meldung:
    Nickname nicht gefundenIhnen wurde soeben eine eMail mit dem Link gesendet um das neue Passwort zu bestätigen.

    hat man die falsche E-Mail Adresse angegeben kommt folgende Meldung:
    Nickname nicht gefundenE-Mail Adresse nicht in Datenbank gefunden.

    Sprich: das Nickname nicht gefunden funkt immer dazwischen^^
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.638
    Beitragswertungen
    1193 Beitragspunkte
    Probier es mal so:

    if ( isset ( $_POST['name'] ) AND ( $_POST['name'] ) !='' ) {
      $name = escape($_POST['name'],'string');
    	$erg = db_query("SELECT email FROM prefix_user WHERE name = BINARY '".$name."'");
    	if ( db_num_rows($erg) == 1 ) {
    		$row = db_fetch_assoc($erg);
    		
    		$new_pass = genkey(8);
    		$md5_pass = md5($new_pass);
    	  $id = md5 (uniqid (rand()));
    		
    		db_query("INSERT INTO prefix_usercheck (`check`,name,email,pass,datime,ak)
    		VALUES ('".$id."','".$name."','".$row['email']."','".$md5_pass."',NOW(),2)");
    		
    	  $page = $_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
    
    		$confirmlinktext = "\n".$lang['registconfirm']."\n\n".sprintf($lang['registconfirmlink'], $page, $id );
        $regmail = sprintf($lang['newpasswordmail'], $name, $confirmlinktext, $new_pass);
    		
    		icmail($row['email'],'Password Reminder',$regmail); # email an user
    		echo $lang['youhavereceivedaemail'];
    		$show = false;
    	} else {
        echo $lang['namenotfound'];
      }
    }
    if ( isset ( $_POST['email'] ) AND ( $_POST['email'] ) !='') {
      $email = escape($_POST['email'],'string');
        $erg = db_query("SELECT name FROM prefix_user WHERE email = '".$email."'");
        if ( db_num_rows($erg) == 1 ) {
            $row = db_fetch_assoc($erg);
            
            $new_pass = genkey(8);
            $md5_pass = md5($new_pass);
          $id = md5 (uniqid (rand()));
            
            db_query("INSERT INTO prefix_usercheck (`check`,name,email,pass,datime,ak)
            VALUES ('".$id."','".$row['name']."','".$email."','".$md5_pass."',NOW(),2)");
            
          $page = $_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
     
            $confirmlinktext = "\n".$lang['registconfirm']."\n\n".sprintf($lang['registconfirmlink'], $page, $id );
        $regmail = sprintf($lang['newpasswordmail'], $row['name'], $confirmlinktext, $new_pass);
            
            icmail($email,'Password Reminder',$regmail); # email an user
            echo $lang['youhavereceivedaemail'];
            $show = false;
        } else {
        echo 'E-Mail Adresse nicht in Datenbank gefunden.';
      }
    }
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Botox84 Mitglied
    Registriert seit
    09.08.2006
    Beiträge
    1.190
    Beitragswertungen
    21 Beitragspunkte
    Doppelt bei Nickname:

    Ihnen wurde soeben eine eMail mit dem Link gesendet um das neue Passwort zu bestätigen.Ihnen wurde soeben eine eMail mit dem Link gesendet um das neue Passwort zu bestätigen.

    Bei E-Mail falsch eingegeben:

    Nickname nicht gefundenE-Mail Adresse nicht in Datenbank gefunden.

    Bei E-Mail richtig eingegeben:

    Nickname nicht gefundenIhnen wurde soeben eine eMail mit dem Link gesendet um das neue Passwort zu bestätigen.


    Zuletzt modifiziert von Botox84 am 15.08.2010 - 12:17:06
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.638
    Beitragswertungen
    1193 Beitragspunkte
    Dann hast Du aber nicht den letzten von mir geposteten Code benutzt, oder?
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Unknown|User gelöschter User
    Doch, hat er. Deiner ist aber Fehlerhaft. Zudem hat er eine Anweisung von meinem Post oben vergessen. Dadurch ging es nicht :p

    Ich habe nun noch trim, hinzugefügt. Damit wird das ganze noch etwas sauberer.
    1 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Botox84 Mitglied
    Registriert seit
    09.08.2006
    Beiträge
    1.190
    Beitragswertungen
    21 Beitragspunkte
    Doch, hab ick zwinker
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Unknown|User gelöschter User
    Nochmals verbessert. Viel Spaß lachen
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.638
    Beitragswertungen
    1193 Beitragspunkte
    Da ich nur ein Hobbybastler bin würde mich jetzt interessieren was bei meinem letzten Post fehlerhaft ist?

    Wenn ich das richtig sehe hast Du es jetzt genauso geändert wie ich es vorgeschlagen hatte, nur das Du !empty() und ich !='' benutzt!


    Zuletzt modifiziert von Lord|Schirmer am 15.08.2010 - 12:37:09
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    Unknown|User gelöschter User
    if ( isset ( $_POST['name'] ) AND ( $_POST['name'] ) !='' ) {

    Siehe dir diese zeile mal genauer an zwinker

    ( $variable ) = ''
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    Botox84 Mitglied
    Registriert seit
    09.08.2006
    Beiträge
    1.190
    Beitragswertungen
    21 Beitragspunkte
    Vielen Dank

    Der erste Post von Unknown|User ist sauber und haut bestens hin.
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.638
    Beitragswertungen
    1193 Beitragspunkte
    Sorry, ich steh auf dem Schlauch!
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    Unknown|User gelöschter User
    Warum setzt du die Variable in Klammern? Die gehören da nicht hin.

    Zumal die Funktion empty genau das glaube macht, wie $variable = '' zwinker
    0 Mitglieder finden den Beitrag gut.
  19. #19
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.638
    Beitragswertungen
    1193 Beitragspunkte
    Achso, ja stimmt, haha...
    Mich hat es nur gewundert das mein Code für falsch hingestellt wurde, obwohl es bei mir bestens funktioniert hat!
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  20. #20
    User Pic
    Unknown|User gelöschter User
    Ja, bin recht pingelig, sry lachen
    0 Mitglieder finden den Beitrag gut.
  21. #21
    User Pic
    Botox84 Mitglied
    Registriert seit
    09.08.2006
    Beiträge
    1.190
    Beitragswertungen
    21 Beitragspunkte
    Komisch, dass es bei dir ging und bei mir nicht^^
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten