Hi,
Seit zwei Tagen hält mich jetzt schon ein für mich unverständliches Problem auf:
Ich habe mir ein relativ einfaches User Management System gebastelt, die Informationen über die Benutzer werden in einer MySQL DB gespeichert. Die Mitglieder meiner Seite können sich einloggen und selbst ihr "Mitglieds-Profil" verändern und ich als Admin User kann von allen Mitgliedern die Profile verändern. Einige Infos eines eingeloggten Mitglieds werden in einer Session gespeichert.
Eigentlich klappt das "updaten" der Profile gut, ausser in einem bestimmten Fall: Ich kann, wenn ich als Admin eingeloggt bin, die Profile der Mitglieder nicht mehr verändern, meins (also das Profil des AdminUsers) aber schon noch. Als Fehlermeldung kommt folgendes:
Duplicate entry 'tschecutto' for key 3.
Wenn ich aber das session_start am Anfang der Profil-Update-Seite entferne, dann funktioniert das updaten der Mitglieder Infos wieder perfekt, ebenso wenn ich in nicht eingeloggtem Zustand Mitglieder Profile bearbeite.
Das ist die Profil-Update-Seite; die Variable $uid durch einen Link übergeben; die
changeUserProfile_Admin Funktion beinhaltet im Wesentlichen ein Formular, in dem die aktuellen Infos aus der DB angezeigt werden und nun verändert werden können.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44: |
include "functions.php";
connectToDB();
session_start();
if (loggedIn()) {
if ($_SESSION['level'] == 1) {
if ($update == 1) {
$uid = $_SESSION['id'];
updateUserProfile ($uid);
}
else {
$uid = $_SESSION['id'];
echo ("");
changeUserProfile_User ($uid);
echo (" | | ");
}
}
elseif ($_SESSION['level'] == 4) {
if ($update == 1) {
$uid = $_GET['uid'];
updateUserProfile ($uid);
}
elseif ($del == 1) {
$uid = $_GET['uid'];
deleteUser ($uid);
}
else {
$uid = $_GET['uid'];
echo ("
");
changeUserProfile_Admin ($uid);
echo (" |
");
}
}
else {echo "fehler";}
}
else {
print <<< END
Du bist nicht eingeloggt, bitte erneut anmelden!
END;
}
Das ist die die Profil-Update Funktion, die von der UpdateSeite aufgerufen wird:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12: |
function updateUserProfile ($uid) {
global $TABLES, $username, $vorname, $nachname, $email, $homepage, $icon, $level, $kommentar;
$query = "UPDATE " . $TABLES['user'] . " SET UserName='$username', Vorname='$vorname', Nachname='$nachname', eMail='$email', Homepage='$homepage', Icon='$icon', Level='$level', Kommentar='$kommentar' WHERE ID='$uid'";
$result = mysql_query($query);
$msg = "Änderungen wurden erfolgreich durchgeführt!";
if ($result) {
header ("Location: test.php?msg=$msg");
}
echo (mysql_error());
}
|
Das Problem muss meiner Meinung nach mit den Sessions zu tun haben, weil ohne die funktioniert ja alles wie gewollt. Vielleicht hat ja jemand von euch ne Idee, warum immer die Fehlermeldung erscheint.