PHP-Passwortänderungsseite

Alt 19.01.2011, 15:23   # 1
Gian1307
 
Registriert seit: 06.10.2010
Beiträge: 97
Hallo erstmal,
ich bin noch ein Anfänger in PHP, deswegen nicht böse sein wenn alles schief und krumm ist.
Bei einer seite die ich als Praktikant basteln muss weiß ich nicht so wirklich ob alles richtig ist

index.php

PHP-Code:
<?php
session_start
();
include 
'sessionhelpers.inc.php';
?>
<html>
 <head>
  <title>Geheim</title>
 </head>
 <body>
  <h1 style="color:#556B2F; font-size:50px;" align="center">Passwortänderung</h1>
  </br></br></br>
  <center>
   <form name="input" action="passchange2.php" method="post">
    <table border="0" width="500" height="150">
     <tr>
      <td><b>Nutzername:</b></td>
      <td><input type="text" name="username" /></td>
     </tr>
     <tr>
      <td><b>altes Passwort:</b></td>
      <td><input type="password" name="oldpass" /></td>
     </tr>
     <tr>
      <td><b>neues Passwort:</b></td>
      <td><input type="password" name="password" /></td>
     </tr>
     <tr>
      <td><b>neues Passwort bestätigen:</b></td>
      <td><input type="password" name="passwordh" /></td>
     </tr>
    </table>
     </br></br></br>
    </form>
   <input type="submit" value="Absenden" />
  </center>
 </body>
</html>
Ich bin mir nicht sicher wie ich diesen html Teil in in den PHP Teil einbinden soll.

passchange2.php


PHP-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=ceck_user($username,$oldpass);
if(
check_user($username,$oldpass)==false){
echo
'Deine Daten waren nicht korrekt';
}else
{
if(
$password==$password){
change_pass($uderid,$password);
echo
'Dein Passwort wurde geändert';
}
else{
echo
'Passwortbestätigung falsch!';
}
}
?>
sessionhelpers.inc.php

PHP-Code:
<?php
function connect()
{
$conmysql_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"
;
$resultmysql_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"
;
$resultmysql_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"
;
$resultmysql_query($sql) or die(mysql_error());
if ( 
mysql_num_rows($result)==1)
{
return 
true;
}
else
return 
false;
}

connect();
?>
(Wenn irgendwelche fehler verhanden sind sagt es mir bitte.)
Ich hab über PuTTY eine Linux-Maschine angezapft zum reinstellen(von win zu linux halt, nur lokal nicht online)

Leider weiß ich nicht wie ich eine MySQL-Datenbank auf Linux erstelle oder insgesamt anwende um das hier zu testen.
  Mit Zitat antworten
Alt 19.01.2011, 15:37   # 2
.:Philipp:.
 
Benutzerbild von .:Philipp:.
 
Registriert seit: 05.11.2008
Beiträge: 1.826
So ich habe das jetzt erstmal ein wenig aufgeräumt

Brauchst du nun Hilfe beim erstellen der Datenbank oder bei deinem Script selbst?


Grüße
  Mit Zitat antworten
Alt 20.01.2011, 08:47   # 3
Gian1307
Threadstarter
 
Registriert seit: 06.10.2010
Beiträge: 97
Danke erstmal.
1.Ich muss wissen ob das was ich geschrieben hab richtig ist und was ich noch verändern muss.
2.Ich möchte eine MySQL-Datenbank auf einer Linux-Kiste erstellen (MySQL ist schon installiert) um die ganze Sache zu testen (d.h. mit 2-3 "Usern", das ich mal gucken kann ob das script einwandfrei funktioniert und ob sich das Passwort tatsächlich ändert).
  Mit Zitat antworten
Alt 20.01.2011, 09:04   # 4
FreewareGuide
Moderator
 
Benutzerbild von FreewareGuide
 
Registriert seit: 31.10.2002
Ort: Oldenburg
Beiträge: 5.432
Wie richtig der komplette Code ist können wir Dir so jetzt auch kaum sagen, nur vom angucken übersieht man doch gerne Probleme, d.h. da müsstest Du schon konkretere Fehler melden.

Um die Datenbank zu bearbeiten gibt es drei Wege, über Kommandozeile ("PuTTY"), über ein Desktop-Programm wie HeidiSQL (wenn der Server überhaupt so konfiguriert ist, dass er Anfragen "von außen" entgegen nimmt) oder über Weboberfläche wie phpMyAdmin, da Du ja eh gerade an einer Website bastelst.

Alles nichts was man mal so aus dem Ärmel schüttelt, insbesondere kennen wir Deine Einschränkungen nicht, wo der Server steht, wie er abgeschottet ist und wofür der eigentlich dient bzw. wie der bereits konfiguriert ist?

Grüße,
Thorsten
  Mit Zitat antworten
Alt 20.01.2011, 09:22   # 5
.:Philipp:.
 
Benutzerbild von .:Philipp:.
 
Registriert seit: 05.11.2008
Beiträge: 1.826
Bastel dir eine PHP Datei in der du deine Daten sendest / überprüfst:

PHP-Code:
<?php 
    session_start
(); 

    
$username     $_POST['username'];
    
$oldpass     $_POST['oldpass'];
    
$password     $_POST['password'];
    
$passwordh     $_POST['passwordh']; 
    
    
//mysql connect
    
$conmysql_connect('Server','User','PASS') or die(mysql_error());
    
mysql_select_db('DB',$con) or die(mysql_error());    
    
    
$userid    ceck_user($username,$oldpass);
    
    ...
restlichen Funktionen

    
//mysql verbindung schließen
    
mysql_close($con);
?>
Das include aus der index.php herrausnehmen und im formular dein PHP Script angeben.
  Mit Zitat antworten
Alt 20.01.2011, 09:52   # 6
Gian1307
Threadstarter
 
Registriert seit: 06.10.2010
Beiträge: 97
Zum Server:
Ich greife über PuTTY auf die Linux_Kiste und da hört es bei meinen Wissensstand schon auf. Ich weiß nur das dort MySQL drauf ist und mehr nicht. Ich bräuchte eine Anleitung oder ein HowTo damit ich mal weiß wo und wie ich dort anfangen muss,

Zum Script:
Das meiste davon hab mir schon in anderen Foren zusammen "geklaut", zum Beispiel die sessionhelper weiß ich garnicht was da alles steht. Deswegen muss ich genau wissen wo was hinein kommt.
Also das was du geschrieben hast in die passchange2.php Datei und die sessionhelper brauche garnicht?

Ich bin wirklich noch ein ganz blutiger Anfänger, bitte nicht böse sein oder anfangen mich zu beleidigen, weil ich das meiste vom Script kopiert habe.
Entweder helfen (bis jetzt sehr hilfreich, danke leute) oder bitte den Mund halten.

---------- Doppelpost zusammengeführt am 20.01.2011 um 08:53 ----------

Sorry wegen Mund halten, aber ich hatte deswegen schon schlechte Erfahrung.
  Mit Zitat antworten
Alt 20.01.2011, 10:22   # 7
.:Philipp:.
 
Benutzerbild von .:Philipp:.
 
Registriert seit: 05.11.2008
Beiträge: 1.826
Zitat:
Zitat von Gian1307 Beitrag anzeigen
Ich bin wirklich noch ein ganz blutiger Anfänger, bitte nicht böse sein oder anfangen mich zu beleidigen, weil ich das meiste vom Script kopiert habe.
Entweder helfen (bis jetzt sehr hilfreich, danke leute) oder bitte den Mund halten.
Ist ja kein Problem, dafür ist ein Forum ja da

Eine Grundlegende Frage habe ich noch. Sollen verschiedene Personen ein bzw. das eigene Passwort ändern können oder gibt es ein "Admin" der das alleine ändert?
__________________
"Wer kämpft, kann verlieren. Wer nicht kämpft, hat schon verloren." - Bertolt Brecht
  Mit Zitat antworten
Alt 20.01.2011, 10:28   # 8
Gian1307
Threadstarter
 
Registriert seit: 06.10.2010
Beiträge: 97
Jeder Nutzer sollte sein Passwort ändern können.
  Mit Zitat antworten
Alt 20.01.2011, 13:06   # 9
Gian1307
Threadstarter
 
Registriert seit: 06.10.2010
Beiträge: 97
Falls ihr mir ein komplett anderes Script anbieten würdet (was auch eine große Hilfe wäre und ich unteranderem brüßen würde), muss das Formular in dieser Tabellenform sein wie bei meinem.
  Mit Zitat antworten
Alt 20.01.2011, 13:11   # 10
.:Philipp:.
 
Benutzerbild von .:Philipp:.
 
Registriert seit: 05.11.2008
Beiträge: 1.826
Das Problem liegt nun darin das es 1000 verschiedene Varianten gibt so etwas zu programmieren. Um soetwas zu programmieren muss man wissen wie die webseite aufgebaut ist usw.

Das mache ich zwar ungerne aber ich empfehle dir mal einen PHP, MySql Grundkurs durchzulesen. Was du nacher können musst ist nur den User identifizieren, Daten an ein PHP Script senden dass dann das Passwort in die Datenbank einträgt.

Falls du Hilfe in einzelnen Bereichen benötigst kannst du dich aber gerne melden.

Grüße
__________________
"Wer kämpft, kann verlieren. Wer nicht kämpft, hat schon verloren." - Bertolt Brecht
  Mit Zitat antworten
Alt 20.01.2011, 13:12   # 11
FreewareGuide
Moderator
 
Benutzerbild von FreewareGuide
 
Registriert seit: 31.10.2002
Ort: Oldenburg
Beiträge: 5.432
Also ich bin hier halbwegs raus, kann kaum noch folgen. Willst Du Schritt zwei vor dem ersten machen? Hast Du jetzt ein System, auf dem man sich bereits mit einem Passwort einloggen kann, wo bestimmte Inhalte/Funktionen nur eingeloggt verfügbar sind und Du willst es nur noch dahin gehend erweitern, dass die Nutzer ihr eigenes Passwort auch noch ändern können? Das passt nicht damit zusammen, dass Du anfangs nicht mal auf die Datenbank zugreifen konntest, oder habe ich das missverstanden?

Mir würde helfen, wenn Du grundsätzlich erst mal erklären würdest, was Du bereits hast und was ganz am Ende rauskommen soll. Danach kann man dann besser schauen wie man die einzelnen Schritte dahin am besten geht. Nur "Passwort ändern" ist ja reichlich unsinnig, solange nichts Passwort-geschützt ist. Oder ist dir vielleicht mit einem fertigen "Produkt" besser geholfen, z.B. einem einfachen CMS, bei dem auch eine Nutzverwaltung mitgeliefert wird?
  Mit Zitat antworten
Alt 20.01.2011, 13:20   # 12
Gian1307
Threadstarter
 
Registriert seit: 06.10.2010
Beiträge: 97
Also,
ich hab eine HTML-Seite geschreiben, die die Felder Nutzername, altes Passwort, neues Passwort und neues Passwort bestätigen in tabellenform enthält.
Im Prinzip brauche ich jetzt nur ein Script,Tutorial oder eine Anleitung wie ich die Seite praktisch zum leben erwecke.
D.h. PHP-Scripten.
Das wegen der Datenbank habe ich gefragt um das Script wenn dann irgendwann vorhanden zesten zu können.
Ich möchte das jetzt auch nicht zu einer Lebensaufgabe machen und auch nicht unbedingt einen Grundkurs dazu machen, desswegen habe ich das aus andern Foren mir zusammengereimt und ich wollte hlt wissen obs richtig ist.
  Mit Zitat antworten
Alt 20.01.2011, 13:23   # 13
.:Philipp:.
 
Benutzerbild von .:Philipp:.
 
Registriert seit: 05.11.2008
Beiträge: 1.826
Wie FreewareGuide aber schon schrieb, was kann denn ein User auf deiner HTML Seite schon machen? Wenn er sich nicht einloggen kann und somit kein "privater" Bereich vorhanden ist, macht deine Passwortänderungstool keinen Sinn.
__________________
"Wer kämpft, kann verlieren. Wer nicht kämpft, hat schon verloren." - Bertolt Brecht
  Mit Zitat antworten
Alt 20.01.2011, 13:31   # 14
Gian1307
Threadstarter
 
Registriert seit: 06.10.2010
Beiträge: 97
Dafür ist ja das Nutzername und altes Passwort Feld da wenn die Daten verglichen wurden und richtig sind wird vom User das Passwort geändert.
  Mit Zitat antworten
Alt 20.01.2011, 13:37   # 15
.:Philipp:.
 
Benutzerbild von .:Philipp:.
 
Registriert seit: 05.11.2008
Beiträge: 1.826
Dies bedeutet das sich der Benutzer über die kombination von Name und altem Passwort identifizieren soll und das auf einer "statischen" Seite wo jeder Zugriff drauf hat?
  Mit Zitat antworten
Alt 20.01.2011, 13:40   # 16
FreewareGuide
Moderator
 
Benutzerbild von FreewareGuide
 
Registriert seit: 31.10.2002
Ort: Oldenburg
Beiträge: 5.432
@.hilipp:. und ich sind uns da ziemlich einig. Etwas Grundverständnis von HTML/PHP/SQL wirst du auch in jedem Fall brauchen, nur mit Copy&Paste wirst Du Dein (mir immer noch unbekanntes) Ziel nicht erreichen. Heißt nicht, dass Du da erst Wochen und Monate lernen musst, etwas Grundverständnis, den Rest kann man dann nachschlagen und lernt beim tun.

Die Struktur Deiner HTML-Tabelle ist völlig egal, Du hast darin Formularfelder mit passenden Namen, dann kannst Du ihre Inhalte nach Abschicken des Formulars zuordnen und so in eine Datenbank abbilden wie Du möchtest. Die Idee, erst mal so was mit HTML/PHP zu machen und die Datenbank später ist schon mal nicht schlecht. Darum würde ich aber nicht die Passwortänderung zuerst machen sondern mich zuallererst um ein- und ausloggen kümmern. Ich hatte hier mal ein Stück Code veröffentlicht, mit dem sowas geht: (PHP) Passwortabfrage funzt nicht :( Wenn Du da die "index.php" wirklich verstanden hast und weißt, wie die "Configuration" in der "login.php" zu machen ist, dann hast Du schon mal was in der Hand, wo Du die wichtigen Dinge im Griff hast. Das dann später mit Datenbank zu machen ist dann gar nicht so schwer, aber der zweite Schritt erst...

Grüße,
Thorsten
  Mit Zitat antworten
Alt 20.01.2011, 13:43   # 17
Gian1307
Threadstarter
 
Registriert seit: 06.10.2010
Beiträge: 97
Die Seite soll nicht ins Internet sondern in ein internes Netztwerk.

---------- Doppelpost zusammengeführt am 20.01.2011 um 13:08 ----------

Könnt ihr mir vieleicht noch eine Anleitungs-Link geben wo ich eine MySQL Datenbank anlegen kann (für Linux über PuTTY), damit ich mal das Script, was ich schon hab, testen kann.
Wie gesagt das einzige was ich weiß, ist das MySQL schon installiert ist.
  Mit Zitat antworten
Alt 20.01.2011, 14:09   # 18
FreewareGuide
Moderator
 
Benutzerbild von FreewareGuide
 
Registriert seit: 31.10.2002
Ort: Oldenburg
Beiträge: 5.432
Zitat:
Zitat von Gian1307 Beitrag anzeigen
Die Seite soll nicht ins Internet sondern in ein internes Netztwerk.
Ja und? D.h. es geht nur darum irgendwas in einer Datenbank zu ändern (was zufällig Passwörter sind), Login/Logout ist unnötig?

Entschuldige, konnte ich nicht ahnen, dann ist in Deinem Ausgangsposting der ganze "sessionhelpers.inc.php"-Kram eigentlich völlig überflüssig, oder?

Das ist das Problem mit Copy&Paste und der Reduzierung eines Problems auf einen kleinen Teilaspekt, ohne um das große Ganze zu wissen.

Dann solltest Du für einen Anfang Dein Problem noch weiter reduzieren, nämlich einfache Formularverarbeitung mit HTML/PHP, Du machst eine leere neue PHP-Seite mit einem einfachen Eingabefeld und einen Button und lernst, wie Du dort Inhalte einträgst, den Button drückst und danach in der PHP-Seite die Inhalte empfängst, sie z.B. einfach auf der Seite ausgibst. Dass es sich um Login/Passwort handelt ist für Deine Aufgabe erst einmalö völlig unerheblich.

Erster Google-Treffer bei Tutorial-Suche: PHP Tutorial: PHP Formular senden und auswerten
  Mit Zitat antworten
Alt 20.01.2011, 14:17   # 19
Gian1307
Threadstarter
 
Registriert seit: 06.10.2010
Beiträge: 97
Danke,
also brauch ich den ganzen Plunder nicht, großes Kino.
Dann mach ich das mal.
  Mit Zitat antworten
Alt 20.01.2011, 14:18   # 20
FreewareGuide
Moderator
 
Benutzerbild von FreewareGuide
 
Registriert seit: 31.10.2002
Ort: Oldenburg
Beiträge: 5.432
Zitat:
Zitat von Gian1307 Beitrag anzeigen
Könnt ihr mir vieleicht noch eine Anleitungs-Link geben wo ich eine MySQL Datenbank anlegen kann (für Linux über PuTTY), damit ich mal das Script, was ich schon hab, testen kann.
Wie gesagt das einzige was ich weiß, ist das MySQL schon installiert ist.
Ehrlich gesagt wäre es besser, Du versuchst Dich an einer der beiden anderen Lösungen die ich Dir oben genannt habe, es wird ja wohl einen Sysadmin geben bei euch, oder?

Als Einstieg trotzdem: 5.9.7.6. Verbinden mit einem entfernten MySQL-Server von Windows mit SSH aus
  Mit Zitat antworten

Alt 28.05.2012, 21:17 # --
News Flash
 
Benutzerbild von News Flash
 
 
 

Das könnte Dich auch noch interessieren:

Nicht fündig geworden? Dann ohne Anmeldung in unserem Gast-Forum nachfragen.

   
Antwort
Themen-Optionen



Alle Zeitangaben in WEZ +2. Es ist jetzt 21:17 Uhr.