benutzerdaten ändern

ben_19

Mitglied
hallo!

ich habe ein script geschrieben mit hilfe dessen sich benutzer selbst benutzername, passwort und email adresse ändern können.

habe leider zwei probleme:

1. im textfeld sollte der bisherige benutzername und die email stehen, aber leider findet er sie nicht, was ich nicht verstehe. ### EDIT: hab das problem gelöst .. aktueller code unten. allerdings habe ich noch immer das problem, dass nix geändert wird, wenn ich auf "speichern" klicke ..

2. ich habe eine überprüfung eingebaut, ob im passwort nichts anderes eingegeben wurden als zahlen und buchstaben, allerdings gibt er mir jetzt immer eine fehlermeldung aus.

admin_edit.php
PHP:
<?
$fehlerdatenbank = "<p>Die Anmeldung bei der Datenbank schlug fehl, bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.";
$datenbanknichtda = "Die Datenbank wurde nicht gefunden.";

$server = "localhost";

$user = "benutzername";

$pass = "passwort";

$db = "datenbank";

$conn = @mysql_connect($server, $user, $pass);
if (!$conn)
	{echo "$fehlerdatenbank";}
$verbindung = @mysql_select_db($db);
if (!$verbindung)
	{echo "$datenbanknichtda";}
	

?>
<?php
    if(isset($_POST['submit']) AND "Speichern" == $_POST['submit']) {
        if(!preg_match('/^\w+$/', trim($_POST['name']))) {
            echo "<p>\n";
            echo "    Bitte benutzen Sie nur einen Namen aus alphanumerischen\n";
            echo "    Zeichen (Zahlen und Buchstaben).\n";
            echo "</p>\n";
        } else {

            $sql = "UPDATE
                        benutzerdaten
                    SET
                        Nickname = '".trim($_POST['name'])."',
                        Email = '".addslashes(trim($_POST['email']))."',
						Vorname = '".trim($_POST['vorname'])."',
						Nachname = '".trim($_POST['nachname'])."',
                    WHERE
                        Id = '".$_SESSION['Id']."';";
            // bei Name kein addslashes(), da Name eh
            // nur \w+ sein kann.
            mysql_query($sql) OR die(mysql_error());
            echo "<p>\n";
            echo "    Ihre Daten wurden gespeichert\n";
            echo "</p>\n";
        }
    }
    if(isset($_POST['submit']) AND "Neues Password speichern" == $_POST['submit']) {
        if(trim($_POST['password']) == "") {
            echo "<p class=\"error\">\n";
            echo "    Bitte geben Sie ein Passwort ein, welches das\n";
            echo "    System verarbeiten kann.\n";
            echo "</p>\n";
        } elseif(trim($_POST['password']) != trim($_POST['password2'])) {
            echo "<p class=\"error\">\n";
            echo "    Bitte geben Sie zwei übereinstimmende Passwörter ein! Achten Sie auf Groß- und Kleinschreibung!\n";
            echo "</p>\n";
        } else {
            $sql = "UPDATE
                        benutzerdaten
                    SET
                        Kennwort = MD5('".trim($_POST['password'])."')
                    WHERE
                        Id = '".$_SESSION['Id']."';";
            mysql_query($sql) OR die(mysql_error());
            echo "<p>\n";
            echo "    Das Passwort wurde gespeichert. Sie brauchen sich nicht\n";
            echo "    neu einloggen.\n";
            echo "</p>\n";
        }
    }
    $sql = "SELECT
                Nickname,
                Email,
				Vorname,
				Nachname
            FROM
                benutzerdaten
            WHERE
                Id = '".$_SESSION['Id']."';";
    $result = mysql_query($sql) OR die(mysql_error());
    $row = mysql_fetch_assoc($result);

    echo "<form action=\"admin_edit.php?n=1\" method=\"post\" class=\"formular\">\n";
    echo "    <p>\n";
    echo "        <b>Eigene Daten bearbeiten</b>\n";
    echo "    </p>\n";
    echo "    <ol>\n";
    echo "        <li>\n";
    echo "            <label for=\"name\">Name:</label>\n";
    echo "            <br><input type=\"text\" name=\"name\" value=\"".$_SESSION['user_nickname']."\"/>\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <label for=\"email\">Emailadresse:</label>\n";
    echo "            <br><input type=\"text\" name=\"email\" value=\"".$_SESSION['user_email']."\"/>\n";
    echo "        </li>\n";
	echo "        <li>\n";
    echo "            <label for=\"email\">Vorname:</label>\n";
    echo "            <br><input type=\"text\" name=\"vorname\" value=\"".$_SESSION['user_vorname']."\"/>\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <label for=\"email\">Nachname:</label>\n";
    echo "            <br><input type=\"text\" name=\"nachname\" value=\"".$_SESSION['user_nachname']."\"/>\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <input type=\"image\" src=\"button_speichern.jpg\" />\n";
    echo "            <input type=\"hidden\" name=\"".session_name()."\" value=\"".session_id()."\" />\n";
    echo "        </li>\n";
    echo "    </ol>\n";
    echo "</form>\n";
    echo "<form action=\"admin_edit.php?n=2\" method=\"post\" class=\"formular\">\n";
    echo "    <p>\n";
    echo "        <b>Neues Passwort erstellen</b>\n";
    echo "    </p>\n";
    echo "    <ol>\n";
    echo "        <li>\n";
    echo "            <label for=\"password\">Neues Passwort:</label>\n";
    echo "            <br><input type=\"password\" name=\"password\" id=\"password\" />\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <label for=\"password2\">Passwortbestätigung:</label>\n";
    echo "            <br><input type=\"password\" name=\"password2\" id=\"password2\" />\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <input type=\"image\" src=\"button_speichern.jpg\" />\n";
    echo "            <input type=\"hidden\" name=\"".session_name()."\" value=\"".session_id()."\" />\n";
    echo "        </li>\n";
    echo "    </ol>\n";
    echo "</form>\n";
    echo "<p>\n";
    echo "    <a href=\"admin_index1.php\">Zurück</a>\n";
    echo "</p>\n";
?>


könnte da bitte mal jemand drübersehen?

vielen Dank!
 
Zuletzt bearbeitet:
PHP:
 if(isset($_POST['submit']) AND "Speichern" == $_POST['submit']) {

Das sieht irgendwie komisch aus, du musst doch wendern die Variable $Speichern vergleichen oder?

Lg Sascha
 
hallo!

ich habe ein script geschrieben mit hilfe dessen sich benutzer selbst benutzername, passwort und email adresse ändern können.

habe leider zwei probleme:

1. im textfeld sollte der bisherige benutzername und die email stehen, aber leider findet er sie nicht, was ich nicht verstehe. ### EDIT: hab das problem gelöst .. aktueller code unten. allerdings habe ich noch immer das problem, dass nix geändert wird, wenn ich auf "speichern" klicke ..

2. ich habe eine überprüfung eingebaut, ob im passwort nichts anderes eingegeben wurden als zahlen und buchstaben, allerdings gibt er mir jetzt immer eine fehlermeldung aus.

admin_edit.php
PHP:
<?
$fehlerdatenbank = "<p>Die Anmeldung bei der Datenbank schlug fehl, bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.";
$datenbanknichtda = "Die Datenbank wurde nicht gefunden.";

$server = "localhost";

$user = "benutzername";

$pass = "passwort";

$db = "datenbank";

$conn = @mysql_connect($server, $user, $pass);
if (!$conn)
	{echo "$fehlerdatenbank";}
$verbindung = @mysql_select_db($db);
if (!$verbindung)
	{echo "$datenbanknichtda";}
	

?>
<?php
    if(isset($_POST['submit']) AND "Speichern" == $_POST['submit']) {
        if(!preg_match('/^\w+$/', trim($_POST['name']))) {
            echo "<p>\n";
            echo "    Bitte benutzen Sie nur einen Namen aus alphanumerischen\n";
            echo "    Zeichen (Zahlen und Buchstaben).\n";
            echo "</p>\n";
        } else {

            $sql = "UPDATE
                        benutzerdaten
                    SET
                        Nickname = '".trim($_POST['name'])."',
                        Email = '".addslashes(trim($_POST['email']))."',
						Vorname = '".trim($_POST['vorname'])."',
						Nachname = '".trim($_POST['nachname'])."',
                    WHERE
                        Id = '".$_SESSION['Id']."';";
            // bei Name kein addslashes(), da Name eh
            // nur \w+ sein kann.
            mysql_query($sql) OR die(mysql_error());
            echo "<p>\n";
            echo "    Ihre Daten wurden gespeichert\n";
            echo "</p>\n";
        }
    }
    if(isset($_POST['submit']) AND "Neues Password speichern" == $_POST['submit']) {
        if(trim($_POST['password']) == "") {
            echo "<p class=\"error\">\n";
            echo "    Bitte geben Sie ein Passwort ein, welches das\n";
            echo "    System verarbeiten kann.\n";
            echo "</p>\n";
        } elseif(trim($_POST['password']) != trim($_POST['password2'])) {
            echo "<p class=\"error\">\n";
            echo "    Bitte geben Sie zwei übereinstimmende Passwörter ein! Achten Sie auf Groß- und Kleinschreibung!\n";
            echo "</p>\n";
        } else {
            $sql = "UPDATE
                        benutzerdaten
                    SET
                        Kennwort = MD5('".trim($_POST['password'])."')
                    WHERE
                        Id = '".$_SESSION['Id']."';";
            mysql_query($sql) OR die(mysql_error());
            echo "<p>\n";
            echo "    Das Passwort wurde gespeichert. Sie brauchen sich nicht\n";
            echo "    neu einloggen.\n";
            echo "</p>\n";
        }
    }
    $sql = "SELECT
                Nickname,
                Email,
				Vorname,
				Nachname
            FROM
                benutzerdaten
            WHERE
                Id = '".$_SESSION['Id']."';";
    $result = mysql_query($sql) OR die(mysql_error());
    $row = mysql_fetch_assoc($result);

    echo "<form action=\"admin_edit.php?n=1\" method=\"post\" class=\"formular\">\n";
    echo "    <p>\n";
    echo "        <b>Eigene Daten bearbeiten</b>\n";
    echo "    </p>\n";
    echo "    <ol>\n";
    echo "        <li>\n";
    echo "            <label for=\"name\">Name:</label>\n";
    echo "            <br><input type=\"text\" name=\"name\" value=\"".$_SESSION['user_nickname']."\"/>\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <label for=\"email\">Emailadresse:</label>\n";
    echo "            <br><input type=\"text\" name=\"email\" value=\"".$_SESSION['user_email']."\"/>\n";
    echo "        </li>\n";
	echo "        <li>\n";
    echo "            <label for=\"email\">Vorname:</label>\n";
    echo "            <br><input type=\"text\" name=\"vorname\" value=\"".$_SESSION['user_vorname']."\"/>\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <label for=\"email\">Nachname:</label>\n";
    echo "            <br><input type=\"text\" name=\"nachname\" value=\"".$_SESSION['user_nachname']."\"/>\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <input type=\"image\" src=\"button_speichern.jpg\" />\n";
    echo "            <input type=\"hidden\" name=\"".session_name()."\" value=\"".session_id()."\" />\n";
    echo "        </li>\n";
    echo "    </ol>\n";
    echo "</form>\n";
    echo "<form action=\"admin_edit.php?n=2\" method=\"post\" class=\"formular\">\n";
    echo "    <p>\n";
    echo "        <b>Neues Passwort erstellen</b>\n";
    echo "    </p>\n";
    echo "    <ol>\n";
    echo "        <li>\n";
    echo "            <label for=\"password\">Neues Passwort:</label>\n";
    echo "            <br><input type=\"password\" name=\"password\" id=\"password\" />\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <label for=\"password2\">Passwortbestätigung:</label>\n";
    echo "            <br><input type=\"password\" name=\"password2\" id=\"password2\" />\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <input type=\"image\" src=\"button_speichern.jpg\" />\n";
    echo "            <input type=\"hidden\" name=\"".session_name()."\" value=\"".session_id()."\" />\n";
    echo "        </li>\n";
    echo "    </ol>\n";
    echo "</form>\n";
    echo "<p>\n";
    echo "    <a href=\"admin_index1.php\">Zurück</a>\n";
    echo "</p>\n";
?>


könnte da bitte mal jemand drübersehen?

vielen Dank!

Wo holst du die Variable $_POST['submit'] her?

Den diese ist im Formular nicht vorhanden da müsstest du den IMAGE Button einen name-attribut vergeben und dieses dann mit beispiel:

PHP:
<?php
if(isset($_POST['image'])) {
echo "IMAGE-Button gedrückt";
// Weitere Befehle
}
?>

Code:
<input type="image" src="bild.jpg" name="image" />

nun siehst du ja das $_POST['image'] vergeben ist!

Du versuchst ja auf eine Variable zuzugreifen die es nicht gibt in deinem Formular woher soll dann PHP wissen das du den submit den IMAGE-Input ansprichst ;)
 
hey! vielen dank für eure hilfe. daran lag es aber scheinbar nicht.
ich habe <input> nun name=submit gegeben, wie es vorher war (habs aus versehen raus gelöscht).

nach klick auf speichern, wenn ich beispielsweise die email ändern will .. lädt er admin_edit.php?n=1 aber die änderungen werden nicht übernommen. hat jemand noch ideen?

admin_edit.php

PHP:
// Verbindung zur Datenbank hab ich weggelassen - siehe oben
<?php
    if(isset($_POST['submit']) AND "Speichern" == $_POST['submit']) {
        if(!preg_match('/^\w+$/', trim($_POST['name']))) {
            echo "<p>\n";
            echo "    Bitte benutzen Sie nur einen Namen aus alphanumerischen\n";
            echo "    Zeichen (Zahlen und Buchstaben).\n";
            echo "</p>\n";
        } else {

            $sql = "UPDATE
                        benutzerdaten
                    SET
                        Nickname = '".trim($_POST['name'])."',
                        Email = '".addslashes(trim($_POST['email']))."',
						Vorname = '".trim($_POST['vorname'])."',
						Nachname = '".trim($_POST['nachname'])."',
                    WHERE
                        Id = '".$_SESSION['user_id']."';";
            // bei Name kein addslashes(), da Name eh
            // nur \w+ sein kann.
            mysql_query($sql) OR die(mysql_error());
            echo "<p>\n";
            echo "    Ihre Daten wurden gespeichert\n";
            echo "</p>\n";
        }
    }
    if(isset($_POST['submit']) AND "Neues Password speichern" == $_POST['submit']) {
        if(trim($_POST['password']) == "") {
            echo "<p class=\"error\">\n";
            echo "    Bitte geben Sie ein Passwort ein, welches das\n";
            echo "    System verarbeiten kann.\n";
            echo "</p>\n";
        } elseif(trim($_POST['password']) != trim($_POST['password2'])) {
            echo "<p class=\"error\">\n";
            echo "    Bitte geben Sie zwei übereinstimmende Passwörter ein! Achten Sie auf Groß- und Kleinschreibung!\n";
            echo "</p>\n";
        } else {
            $sql = "UPDATE
                        benutzerdaten
                    SET
                        Kennwort = MD5('".trim($_POST['password'])."')
                    WHERE
                        Id = '".$_SESSION['user_id']."';";
            mysql_query($sql) OR die(mysql_error());
            echo "<p>\n";
            echo "    Das Passwort wurde gespeichert. Sie brauchen sich nicht\n";
            echo "    neu einloggen.\n";
            echo "</p>\n";
        }
    }
    $sql = "SELECT
                Nickname,
                Email,
				Vorname,
				Nachname
            FROM
                benutzerdaten
            WHERE
                Id = '".$_SESSION['user_id']."';";
    $result = mysql_query($sql) OR die(mysql_error());
    $row = mysql_fetch_assoc($result);

    echo "<form action=\"admin_edit.php?n=1\" method=\"post\" class=\"formular\">\n";
    echo "    <p>\n";
    echo "        <b>Eigene Daten bearbeiten</b>\n";
    echo "    </p>\n";
    echo "    <ol>\n";
    echo "        <li>\n";
    echo "            <label for=\"name\">Benutzername:</label>\n";
    echo "            <br><input type=\"text\" name=\"name\" id=\"name\" value=\"".$_SESSION['user_nickname']."\"/>\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <label for=\"email\">Emailadresse:</label>\n";
    echo "            <br><input type=\"text\" name=\"email\" id=\"email\" value=\"".$_SESSION['user_email']."\"/>\n";
    echo "        </li>\n";
	echo "        <li>\n";
    echo "            <label for=\"vorname\">Vorname:</label>\n";
    echo "            <br><input type=\"text\" name=\"vorname\" id=\"vorname\" value=\"".$_SESSION['user_vorname']."\"/>\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <label for=\"nachname\">Nachname:</label>\n";
    echo "            <br><input type=\"text\" name=\"nachname\" id=\"nachname\" value=\"".$_SESSION['user_nachname']."\"/>\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <input type=\"image\" src=\"button_speichern.jpg\" name=\"submit\" />\n";
    echo "            <input type=\"hidden\" name=\"".session_name()."\" value=\"".session_id()."\" />\n";
    echo "        </li>\n";
    echo "    </ol>\n";
    echo "</form>\n";
    echo "<form action=\"admin_edit.php?n=2\" method=\"post\" class=\"formular\">\n";
    echo "    <p>\n";
    echo "        <b>Neues Passwort erstellen</b>\n";
    echo "    </p>\n";
    echo "    <ol>\n";
    echo "        <li>\n";
    echo "            <label for=\"password\">Neues Passwort:</label>\n";
    echo "            <br><input type=\"password\" name=\"password\" id=\"password\" />\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <label for=\"password2\">Passwortbestätigung:</label>\n";
    echo "            <br><input type=\"password\" name=\"password2\" id=\"password2\" />\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <input type=\"image\" src=\"button_speichern.jpg\" name=\"submit\" />\n";
    echo "            <input type=\"hidden\" name=\"".session_name()."\" value=\"".session_id()."\" />\n";
    echo "        </li>\n";
    echo "    </ol>\n";
    echo "</form>\n";
    echo "<p>\n";
    echo "    <a href=\"admin_index1.php\">Zurück</a>\n";
    echo "</p>\n";
?>
 
Hi

ich glaube, Du verstehst nicht, was gemeint war.

"Speichern" ist ein Wert, der mit dem Submit-Feld abgefragt wird. Aber dieser Wert kommt bei Dir nicht vor. Aber um Dein Script ausführen zu können, MUSS dieser WERT vorhanden sein und der Wert ist "Speichern", zumindest für Dein 1. Beispiel.

Gib dem Input-Feld den Wert mit, dann kannst Du ihn auch abfragen. Man kann nur das abfragen, was auch wirklich vorhanden ist.

value=\"Speichern\"

Ich kann mir nicht vorstellen, dass das Script die Meldung auswirft, dass der Datensatz gespeichert wurde. In Wirklichkeit stoppt das Ganze schon nach der 1. Abfrage, denn diese Bedingung

PHP:
    if(isset($_POST['submit']) AND "Speichern" == $_POST['submit']) {

ist, so wie ich das jetzt überflogen haben, wohl nicht erfüllt.
 
achssoooo .. jetzt hab ich verstanden was ihr gemeint habt. tut mir leid.

ok, das hab ich nun geändert, aber nach klick auf speichern gibt er mir folgende fehlermeldung aus:

Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen (diese kann für verschiedene Server-Versionen unterschiedlich sein) bei 'WHERE Id = '1'' in Zeile

hab ich persönlich noch nie gesehen, weiß also damit nichts anzufangen. hat jemand ne idee?
 
thx für die info...

interessant, jetzt gibt er zwar aus dass er die daten geändert hat, aber er speichert die änderungen nicht in die datenbank. es steht dasselbe dort wie vor dem abspeichern.

ist noch ein fehler im script?

EDIT: hab den fehler gefunden .. ich sag ihm ja, dass er die aktuelle in der session reingespeicherte email anzeigen soll. deshalb muss man sich neu einloggen um die änderungen zu sehen.

gehts auch eleganter?
 
Zuletzt bearbeitet:
Zurück