[PHP & MySQL] neues Passwort eintragen anhand der email

cille

Erfahrenes Mitglied
Hi ho,
wie das Thema schon sagt möchte ich ein neues Passwort in eine Tabelle speichern,
habe da nur den Usernamen bzw. die email Adressen,
dass Passwort wird automatisch generiert (Das funktioniert).
Aber wie kann ich ein Eintrag machen wo ich nur den Usernamen bzw, die Email habe von dem jenigen?.

Hier mal der Code vom Password Reminder:
PHP:
<?php
	include("config.php");		
	$sql1 = "SELECT username FROM user WHERE username='".mysql_real_escape_string($_POST['username'])."'";
	$sql2 = "SELECT email FROM user WHERE email='".mysql_real_escape_string($_POST['email'])."'";
	$result1 = mysql_query($sql1);
	$result2 = mysql_query($sql2);
	$row1 = mysql_fetch_assoc($result1);
	$row2 = mysql_fetch_assoc($result2);
	
	if (isset($_POST['submit'])) {	
		
		$fehler = false;
		$fehlertext = "";
		
		if (empty($_POST['username'])) {
			$fehler = true;
			$fehlertext .= "Bitte Username angeben!<br>\n";
		}
		$muster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2,4}$/";
  	if (empty($_POST['email'])) {
    	$fehler = true;
    	$fehlertext .= "<b>Die E-Mail-Adresse fehlt!</b><br>\n";
  	}
 		elseif (preg_match($muster, $_POST['email']) == 0) {
    	$fehler = true;
    	$fehlertext .= "Die E-Mail Adresse ist ungültig!<br>\n";
  	}
		if ($fehler) {
			echo "<p>$fehlertext</p>";
		}			
		if ($row1['username'] != $_POST['username']) {
			echo "User existiert nicht!<br>";
		}
		if ($row2['email'] != $_POST['email']) {
			echo "E-Mail existiert nicht!<br>";
		}		
		else {
			if (!empty($_POST['username']) && !empty($_POST['email']) >= 3) {
				if ($row1['username'] == $_POST['username'] && $row2['email'] == $_POST['email']) {
				}	
				else {
					include("inc/new_pass.php");
					$mailbody = "Hallo,\n\n";
					$mailbody .= "Sie haben ein neuest Password verlangt,\n";
					$mailbody .= "falls nicht, benachichtigen Sie uns bitte <a href='mailto:****@****.de'>****@****.de</a>.\n";
					$mailbody .= "------------------------------------------------\n";
					$mailbody .= "Hier Ihr neues Password:\n";
					$mailbody .= "Password: ".getpass();
					$mailbody .= "------------------------------------------------\n";
					$mailbody .= "Sie können dieses Password ändern wenn Sie möchten,\n";
					$mailbody .= "gehen Sie einfach im Optionsmenü auf Password ändern.\n";
			    $mailbody = stripslashes($mailbody);
			    $absender = $_POST['email'];
			    if (@mail("admin@localhost", "Kontakt", $mailbody, "From: $absender")) {
			      echo "<p><b>Danke! Die Nachicht wurde weitergeleitet!</b></p>\n";
			    } 
					else {
			      echo "<p>Leider gab es einen Sendefehler!</p>\n";
			    } 
				}
			}
		} 
	}
}
?>
Das neue Passwort kann mit:
getpass()

ausgegeben werden.

Hoffe Ihr wisst eine lösung, würde mich auf jedenfall freuen.
[EDIT]
Ich brauche nur den Code um einzufügen,
da der mir grade nicht einfällt und ich den nicht finde :)
der Oben genante code ist nur Übersichtsweise ^^

mfg,
cille
 
Zuletzt bearbeitet:
cille hat gesagt.:
Aber wie kann ich ein Eintrag machen wo ich nur den Usernamen bzw, die Email habe von dem jenigen?
Hallo,
das sollte ungefähr so funktionieren:
PHP:
mysql_query('UPDATE tabelle SET passwort = "'.getpass().'" WHERE username = "'.mysql_real_escape_string($_POST['username']).'"');
mfg
forsterm
 
Hi,
thx für deine Antwort aber es funktioniert komischerweise nicht:
hier mal der code vom passwordgenerator:
PHP:
<?php
function getpass() {
    $newpass = "";
    $laenge=10;
    $string="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    mt_srand((double)microtime()*1000000);

    for ($i=1; $i <= $laenge; $i++) {
        $newpass .= substr($string, mt_rand(0,strlen($string)-1), 1);
    }
    
    return $newpass;
}
?>

mit
echo setpass();

gibt er immer was anderes aus, wie halt erwartet
habe die datei includet in meinem password reminder,
aber er ändert das passwort net in der Datenbanktabelle,
aber per Email kriege ich das neue Passwort :(
 
Zuletzt bearbeitet:
cille hat gesagt.:
aber er ändert das passwort net in der Datenbanktabelle,
Hallo,
mach mal folgendes:
Verwende mal folgenden Code
PHP:
$sql = 'UPDATE tabelle SET passwort = "'.getpass().'" WHERE username = "'.mysql_real_escape_string($_POST['username']).'"';
echo $sql;
mysql_query($sql) or die(mysql_error());
und poste 1. eine eventuelle Fehlermeldung die ausgegeben wird
und 2. führst du denn Query, der ja mit [phpf]echo[/phpf] ausgegeben wird in phpMyAdmin
aus und berichtest, ob das funktioniert hat.

mfg
forsterm
 
hiho,
jo dies Funktioniert,
aber habe jetzt ein neues Problem,
er Speichert ein anderes Passwort,
also das, was er mir per email geschickt hat,
wie kann ich das gleiche Password schicken lassen?
Hier nochmal der Code zum versand:

PHP:
					include("inc/new_pass.php");
					$sql_pass = 'UPDATE user SET password = "'.getpass().'" WHERE username = "'.mysql_real_escape_string($_POST['username']).'"';
						mysql_query($sql_pass) or die(mysql_error());
					
					$mailbody = "Hallo,\n\n";
					$mailbody .= "Sie haben ein neuest Password verlangt,\n";
					$mailbody .= "falls nicht, benachichtigen Sie uns bitte auf <a href='mailto:support@****.de'>support@****.de</a>.\n";
					$mailbody .= "------------------------------------------------\n";
					$mailbody .= "Hier Ihre neues Password:\n";
					$mailbody .= "Password: ".getpass()."\n";
					$mailbody .= "------------------------------------------------\n";
					$mailbody .= "Sie können dieses Password ändern wenn Sie möchten,\n";
					$mailbody .= "gehen Sie ainfach im Optionsmenü auf Password ändern.\n";
			    $mailbody = stripslashes($mailbody);
			    $absender = "reminder@****.de";
			    if (@mail("admin@localhost", "Kontakt", $mailbody, "From: $absender")) {
			      echo "<p><b>Danke! Ihr neues Password wurde Ihnen zugesendet!</b></p>\n";

Und hier der passwordgenerator:
PHP:
<?php
function getpass() {
    $newpass = "";
    $laenge=10;
    $string="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    mt_srand((double)microtime()*1000000);

    for ($i=1; $i <= $laenge; $i++) {
        $newpass .= substr($string, mt_rand(0,strlen($string)-1), 1);
    }
    
    return $newpass;
}
?>

hoffe Ihr wist was,
aso das Password wird in der Datenbank geHascht(md5)

mfg,
cille
 
Wie waere es denn einfach einmal den Wert den getpass() liefert in eine Variable zu setzen und diese dann sowohl in den Query als auch in die Mail einzufuegen? :rolleyes:
 
hi ho und danke,
hät ich selber drauf kommen müssen ^^,
naja bin grad erst aufgestanden :D.

Ich bedanke mich für die goile hilfe von euch.


mfg,
cille
 
Zurück