Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Login-Script - Passwort ändern..? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Login-Script - Passwort ändern..?


 
Skymaker
18-06-2005, 20:35 
 
Hi,

bin neu hier - genauso wie ich in PHP auch ein Anfänger bin ;)

Habe das Login-Script ausprobiert. Läuft auch ganz gut und habe auch schon nen Script zum registrieren (Username freiwählbar, automatisch generiertes Passwort wird an die Mail-Adresse vom User gesandt) programmiert. Doch jetzt krieg ich mit den Skript Probleme...
Wenn man ja ein automatisch generiertes Passwort kriegt, möchte man das ja auch ändern, oder? Klar möchte man es ändern... und deshalb hab ich versucht ein Script fürs Passwort ändern zu programmieren. Doch das klappt nich... ich geb euch mal den Code:
<?php
session_start();
error_reporting(E_ALL);
include 'sessionhelpers.inc.php';
$_POST['username'] = $username;
$_POST['oldpass'] = $oldpass;
$_POST['password'] = $password;
$_POST['passwordh'] = $passwordh;
$userid = check_user($username, $oldpass);
if(check_user($username, $oldpass)==false) {
echo 'Deine Daten waren nicht korrekt';
} else
{
if($password==$passwordh) {
change_pass($userid, $password);
echo 'Dein Passwort wurde geändert, du musst dich neueinloggen!';
logout();
}
else {
echo 'Passwort wiederholung falsch!';
}
}
?>
Ich weiß, das mit den $_POST-Variablen ist schwachsinn, aber ich wollts mir nen bisschen einfacher machen...
Das Formular dazu:
<?php
session_start();
include 'sessionhelpers.inc.php';
echo '<form method="post" action="passchange2.php"><br>';
echo '<label>Username</label><input name="username" type="text" id="username"><br>';
echo '<label>Altes Passwort: </label><input name="oldpass" type="password" id="oldpass"><br>';
echo '<label>Neues Passwort: </label><input name="password" type="password" id="password"><br>';
echo '<label>Neues Passwort (wiederholen): </label><input name="passwordh" type="password" id="passwordh"><br>';
echo '<input name="passaendern" type="submit" id="passaendern" value="Passwort ändern">';
?>
Dann noch meine Sessionhelpers.inc.php:
<?
function connect()
{
$con= mysql_connect('Server','User','PASS') or die(mysql_error());
mysql_select_db('DB',$con) or die(mysql_error());
}

function check_user($name, $pass)
{
$sql="SELECT UserId
FROM users
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
LIMIT 1";
$result= mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($result)==1)
{
$user=mysql_fetch_assoc($result);
return $user['UserId'];
}
else
return false;
}

function change_pass($userid, $password)
{
$sql="UPDATE users SET UserPass=MD5('".$password."') WHERE UserId='".$userid;
mysql_query($sql);
}

function login($userid)
{
$sql="UPDATE users
SET UserSession='".session_id()."'
WHERE UserId=".$userid;
mysql_query($sql);
}

function logged_in()
{
$sql="SELECT UserId
FROM users
WHERE UserSession='".session_id()."'
LIMIT 1";
$result= mysql_query($sql);
return ( mysql_num_rows($result)==1);
}

function logout()
{
$sql="UPDATE users
SET UserSession=NULL
WHERE UserSession='".session_id()."'";
mysql_query($sql);
}

function check_pass($username, $oldpass)
{
$sql="SELECT UserId
FROM users
WHERE UserName='".$username."' AND UserPass=MD5('".$oldpass."')
LIMIT 1";
$result= mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($result)==1)
{
return true;
}
else
return false;
}

connect();
?>
So... Wenn ich das Passwort vom User falsch eingebe, krieg ich als Meldung das meine Daten falsch waren. Wenn die Wiederholung vom Passwort falsch ist, krieg ich auch ne Fehlermeldung. Aber wenn beides richtig ist, kriege ich die Meldung, dass mein Passwort geändert wurde. Doch das wurde es nicht... ist immernoch alles beim alten :-/

Ach, und bitte seid nicht sooo sauer auf mich, wenn ihr die Codes seht.... ich bin wirklich noch ein totaler Anfänger ;)

Danke schonmal für eure Hilfe :)

Sky

 
mrhappiness
18-06-2005, 22:05 
 
Vergleiche dein mysql_query in deiner Funktion mla mit meinen...

Du hast da was vergessen, was ich mit voller Absicht hingeschrieben habe; damit bekommst du nämlich hilfreiche Meldungen ausgespuckt...

 
Skymaker
18-06-2005, 23:14 
 
Hmmm...
Also ich weiß jetzt nicht genau was du meinst.
Habe mal, so wie du es auch gemacht hast, die MySQL Befehle untereinander geschrieben, also so:
function change_pass($userid, $password)
{
$sql="UPDATE users
SET UserPass=MD5'".$password."'
WHERE UserId=".$userid;
mysql_query($sql);
}

Doch da krieg ich keine hilfreichen Meldungen?!

 
mrhappiness
18-06-2005, 23:16 
 
Du verwendest kein mysql_error!

 
Skymaker
18-06-2005, 23:20 
 
Okay okay, hat sich erledigt.
Habe mal folgendes probiert:
function change_pass($userid, $password)
{
$sql="UPDATE users
SET UserPass=MD5('".$password."')
WHERE UserId=".$userid;
mysql_query($sql);
}

Und jetzt geht es einwandfrei *g*

Danke trotzdem :)

Sky

 
mrhappiness
18-06-2005, 23:24 
 
Wenn du mit mysql_error gearbietet hättest, wärst du da früher draufgekommen ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:53 Uhr.