Login: PW ändern

schlurpsel

Gesperrt
Hey,
ich hab nen Login der über Sessions an der URL geht. Das ganz geht auch super bis auf das Passwort ändern.
Die Usernames sind so gespeichert:
PHP:
<?php
/*
utzi1§admin§lauzCqDNcsTxQ§003§
utzi§zeitung§lauzCqDNcsTxQ§003§
*/
?>

Zum PW ändern habe ich bis jetzt das, geht aber leider nicht:
PHP:
#########################################################
#                      CHANGEUSER                       #
#########################################################
if ($_GET['go'] == 'changeuser') {

	echo'<link type="text/css" rel="stylesheet" href="style/site.css" /><table width="90%" border="0" cellspacing="1" cellpadding="0" class="rahmen">
					<tr class="tr2">
						<td><strong>Passwort ändern</br></strong>
								
            </td>	    		</tr>
	    		<tr class="tr1">
	      		<td>';

#########################################################
#                CHANGEUSER - NO ACTION                 #
#########################################################            
            
	if (!$_GET['action']) {

   for ($i=2; $i < $zeilen-2; $i++) { 
    $eintrag = explode('§', $zeile[$i]); 
    if ($eintrag[3] == $_GET['id']) {
	  	echo '
			<form method="POST" action="'.$_SERVER['PHP_SELF'].'?go=changeuser&action=save">
		  	<input type="hidden" name="saveid" value="'.$_GET['id'].'">
        <input type="hidden" name="savepw3" value="'.$eintrag[2].'">
			  <table width="550" border="0" cellspacing="1" cellpadding="0">
			    <tr height="20" class="tr1"> 
			      <td>Loginname:</td>
			      <td>'.$_SESSION['loginuser'].'
			      </td>
			    </tr>
			    <tr class="tr1">
			      <td>Neues Passwort:</td>
			      <td>
			        <input type="password" name="savepw" size="30" maxlength="150">
			      </td>
			    </tr>
			    <tr class="tr1">
			      <td>Passwort wiederholen:</td>
			      <td>
			        <input type="password" name="savepw2" size="30" maxlength="150" >
			      </td>
			    </tr>
			    
			    <tr class="tr1">
			      <td>&nbsp;</td>
			      <td>
			        <input type="submit" value="Speichern" name="submit">
			      </td>
			    </tr>
        </table>
        </td>';
      	}
			}
    }
 
#########################################################
#                  CHANGEUSER - SAVE                    #
######################################################### 

	if($_GET['action'] == 'save') {

		if ($_SESSION['loginlevel'] != 'admin') echo 'Sorry, nur Admins dürfen Userdaten ändern!<br /><a href=javascript:history.back()>Zurück</a>';
		
		else if ($_POST['savepw'] != $_POST['savepw2']) echo 'Unterschiedliche Passwörter angegeben!<br /><a href=javascript:history.back()>Zurück</a>';
		
		else {


			for ($i=0; $i<$zeilen; $i++) {
				$eintrag = explode('§',$zeile[$i]);

				if ($eintrag[3] == $_POST['saveid']) {
					$eintrag[0] = $_POST['saveuser'];
		        	$eintrag[1] = $_POST['savelevel'];


    				if ($_POST['savepw2'] != $_POST['savepw3'])	{
    					$_POST['savepw'] = crypt($_POST['savepw'], 'lala');
              			$eintrag[2] = $_POST['savepw'];
      				}
		        }
          	$zeile[$i] = implode($eintrag,'§');
		    }

      $nl = chr(13).chr(10);
      $fp = fopen($datafile,"w+");
      fwrite($fp, '<?php' .$nl );
      fwrite($fp, '/*'.$nl  );
      for ($i=2; $i<$zeilen-2; $i++)
      fwrite($fp, $zeile[$i]);
      fwrite($fp, '*/' .$nl );
      fwrite($fp, '?>' );
      fclose($fp);
 
		  echo '<meta http-equiv="refresh" content="2; URL=test.php">Passwort geändert!';
			}

	}
#########################################################
	echo'</td>
	    </tr>
	  </table>';

  }

Das ganze soll so gehen, dass ich users.php?go=changeuser öffne und nachher dann wenn ich ein neues PW eingebe, das in der Datei gepseichert wird. Hab ihr ne Ahnung, was ich da ändern muss oder wie ich das am besten mache, oder geht mein Script da gar nicht und ich brauch ein neues?
Danke für eure Hilfe
schlurpsel
 
Hallöchen Schlurpsel,

sorry es ist schon spät und der Quelltext ziemlich lang, also soweit ich es verstehe, möchtest du das Passwort ändern. Ich schätze du benutzt dazu MD5
also ganz normal über die Datenbank ansprechen und ie variable ändern, so in etwa würde es denn aussehen, wenn ich es richtig verstanden hätte

PHP:
$query="UPDATE users SET userpass='".md5($userpass)."' WHERE id='$id';";
mehr dazu wurde gerade besprochen im Forum unter "Login mit MySQL und PHP"
vielleicht konnte ich dir ja helfen;-)
manchmal dauert es halt bis sich einer meldet.
 
Zuletzt bearbeitet:
erstmal danke für deine Hilfe. :):)

Was bei mir aber das Problem ist, dass ich keine Datenbank habe, sondern das über eine Datei funktioniert, also die Zugangsdaten sind in einer Datei gespreichert. Quelltext siehe erster Post.
Daher ist es für mich etwas schwierig, das zu ändern, mit SQL würde ich es ansatzweise wissen, so aber leider nicht. Könntet ihr euch das Ganze vielleicht in Ruhe ansehen und mir versuchen zu helfen.

schonmal recht herzlichen Dank
schlurpsel
 
In deinen Fall würd ich auf Mysql umsteigen. Mit Text datein haste im endefeckt nur schwieriegkeiten und performenc probleme.

Wenn du vor hast sowas komplexes zu schreiben wie eine User Verwaltung.

Mfg Splasch
 
Ein Kompromiss zwischen beidem wäre SQLite, das keine eigenen Datenbankserver benötigt aber aus SQL basiert.
 
Ja da hat Gumbo recht,..falls du sowas noch nicht hast, ich habe glaube ich sowas noch auf dem rechner zu hause, wenn du willst schicke ich es dann per anhang....anfangs hatte mein server auch keine Datenbank zur verfügung gestellt, da habe ich sowas auch verwendet...funktioniert ganz gut. aber umständlich ist es denoch:-)
 
Aber warum ist es nicht mit meiner Datei möglich?
Bei dem was ich jetzt habe geht schon alles, Login, Eintragen von News mit verschiedenen Berechtigungen, etc..
Könnt ihr mir bitte das für die Datei machen, nicht mit i-was andern.
Wäre echt super nett, danke
schlurpsel
 
Aber warum ist es nicht mit meiner Datei möglich?

Möglich ist es schon aber zu aufwendig. Du müßtes dir Praktisch deine eigene Datenbank schreiben.Ansonsten ist das ganze zu starr für die vielen abfragen bzw. suchfunktion (sortieren unsw.)

Mfg Splasch
 
Hmm, also erstmal fällt mir diese Zeile auf

PHP:
$_POST['savepw'] = crypt($_POST['savepw'], 'lala');

1. Wieso verschlüsselst du nicht mit MD5?!
2. Kenne crypt() nicht wirklich, aber laut php.net darf der 2. (optionale!) Parameter nur einmalig verwendet werden...

Was passiert denn genau, wenn du das Script benutzen willst?! Bekommste Fehlermeldungen, wird dir gesagt dass es erfolgreich geändert wurde aber es sind trozdem keine Änderungen zu sehen, ...?! Hab jetzt keine lust das Script nachzubauen ;)

Ganz davon abgesehen rate ich dir auch eindringlichst zu einer Datenbanklösung, aber wenn du es nicht willst, dann helfe ich natürlich auch gerne bei der Datei-Lösung weiter... :-)

Greetz KlamseN
 
Zurück