 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
23.05.2005, 14:07
|
#1
|
|
Registered User
Registriert seit: Mar 2003
|
$_Session ungewollt verändert!
Hi,
ich habe folgenden Code:
Code:
<?php
if($_SESSION['rang'] != 'admin' || $_SESSION['userID'] == '') {
header("location: index.php?aktion=keineberechtigung");
exit;
}
// Daten auslesen
mysql_connect("$host","$dbuser","$dbpasswort") or die("Connect nicht möglich: ".mysql_error());
mysql_select_db($dbName) or die ("Connect nicht möglich: ".mysql_error());
$result = mysql_query("Select * FROM $tabellenName WHERE userID=$mitglied");
$row = mysql_fetch_assoc($result);
$checklogin = stripslashes(trim(strtolower($_POST['login'])));
$resultlogin = mysql_db_query("$dbName","Select * FROM $tabellenName WHERE login='$checklogin'");
$rowlogin = mysql_fetch_assoc($resultlogin);
$checkmail = trim(strtolower($_POST['email']));
$resultemail = mysql_db_query("$dbName","Select * FROM $tabellenName WHERE email='$checkmail'");
$rowemail = mysql_fetch_assoc($resultemail);
$array = explode(".",$row['geburtstag']);
if($array[0] < '10') {
$readtag = substr($array[0], 1, 2);
}
else {
$readtag = substr($array[0], 0, 2);
}
if($array[1] < '10') {
$readmonat = substr($array[1], 1, 2);
}
else {
$readmonat = substr($array[1], 0, 2);
}
$readjahr = $array[2];
if(!stripslashes(trim($_POST['name'])) || !stripslashes(trim($_POST['vorname'])) || !stripslashes(trim($_POST['vorname'])) || !$_POST['tag'] || !$_POST['monat'] || !$_POST['jahr'] || !stripslashes(trim($_POST['strasse'])) || !stripslashes(trim($_POST['plz'])) || !stripslashes(trim($_POST['wohnort'])) || !stripslashes(trim($_POST['geschlecht'])) || !stripslashes(trim($_POST['email'])) || !stripslashes(trim($_POST['login'])) || stripslashes(trim($_POST['passwort'])) != stripslashes(trim($_POST['passwortwiederholen'])) || $checkmail == $rowemail['email'] && $checkmail != $row['email'] || $checklogin == $rowlogin['login'] && $checklogin != $row['login'] || !eregi("^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,3}\$", $_POST['email'])) {
//Daten wurden noch nicht vollständig ausgefüllt
if($rowlogin['login'] == strtolower($_POST['login'])) {
$status = ($_POST['aendern']) ?"<font color='red'>Der Login ist bereits vergeben oder verschiedene Passwörter eingegeben!</font>" :
"Bitte füllen Sie alle Felder, die mit * gekennzeichnet sind, aus!<br>Beim Login sowie beim Passwort dürfen keine Leerzeichen oder Sonderzeichen verwendet werden!";
}
elseif($rowemail['email'] == strtolower($_POST['email'])) {
$status = ($_POST['aendern']) ?"<font color='red'>Die E-Mail Adresse ist bereits vergeben! Doppel-Anmeldungen sind nicht erlaubt!</font>" :
"Bitte füllen Sie alle Felder, die mit * gekennzeichnet sind, aus!<br>Beim Login sowie beim Passwort dürfen keine Leerzeichen oder Sonderzeichen verwendet werden!";
}
else {
$status = ($_POST['aendern']) ?"<font color='red'>Es wurden nicht alle Felder ausgefüllt!</font>" :
"Bitte füllen Sie alle Felder, die mit * gekennzeichnet sind, aus!<br>Beim Login sowie beim Passwort dürfen keine Leerzeichen oder Sonderzeichen verwendet werden!";
}
}
else
{
mysql_connect("$host","$dbuser","$dbpasswort") or die("Connect nicht möglich: ".mysql_error());
$sql = "SELECT * from $tabellenName WHERE userID=$mitglied";
$result = mysql_db_query("$dbName",$sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);
if($_POST['tag'] < '10') {
$_POST['tag'] = "0".$_POST['tag'];
}
if($_POST['monat'] < '10') {
$_POST['monat'] = "0".$_POST['monat'];
}
$userID = strtolower($row['userID']);
$name = trim(strtolower($_POST['name']));
$vorname = trim(strtolower($_POST['vorname']));
$geburtstag = $_POST['tag'].".".
$_POST['monat'].".".$_POST['jahr'];
$strasse = strtolower($_POST['strasse']);
$plz = $_POST['plz'];
$wohnort = strtolower($_POST['wohnort']);
$rufnummer = $_POST['rufnummer'];
$geschlecht = $_POST['geschlecht'];
$familienstand = $_POST['familienstand'];
$berufsstand = $_POST['berufsstand'];
$hobbies = strtolower($_POST['hobbies']);
$ueberdich = strtolower($_POST['ueberdich']);
$email = trim(strtolower($_POST['email']));
$homepage = trim(strtolower($_POST['homepage']));
$login = stripslashes(trim(strtolower($_POST['login'])));
if(!stripslashes(trim($_POST['passwort']))) {
$passwort = $row['passwort'];
}
else {
$passwort = stripslashes(trim(strtolower($_POST['passwort'])));
}
$rang = strtolower($_POST['rang']);
$gruppe = strtolower($_POST['gruppe']);
if($passwort != $row['passwort']) {
mysql_query("UPDATE $tabellenName set name='$name', vorname='$vorname', geburtstag='$geburtstag', strasse='$strasse', plz='$plz', wohnort='$wohnort', rufnummer='$rufnummer', geschlecht='$geschlecht', familienstand='$familienstand', berufsstand='$berufsstand', hobbies='$hobbies', ueberdich='$ueberdich', email='$email', homepage='$homepage', login='$login', passwort='$passwort', rang='$rang', gruppe='$gruppe' WHERE userID='$mitglied'");
}
else {
mysql_query("UPDATE $tabellenName set name='$name', vorname='$vorname', geburtstag='$geburtstag', strasse='$strasse', plz='$plz', wohnort='$wohnort', rufnummer='$rufnummer', geschlecht='$geschlecht', familienstand='$familienstand', berufsstand='$berufsstand', hobbies='$hobbies', ueberdich='$ueberdich', email='$email', homepage='$homepage', login='$login', rang='$rang', gruppe='$gruppe' WHERE userID='$mitglied'");
}
echo "
<center>
<fieldset>
<legend>Profil geändert!</legend>
<br>
<div class='abstandtop' align='left'>
Ihr Profil wurde erfolgreich geändert!<br><a href='index.php?aktion=steckbrief&mitglied=".$mitglied."'>Zurück</a>
</div>
</fieldset>
</center>";
exit;
}
echo "
<form name='profilform' action='index.php?aktion=profilbearbeitenadmin&mitglied=".$mitglied."' method='post'>
<center>
<fieldset>
<legend>Profil bearbeiten</legend>
<br>
<div class='abstandtop' style='font-size:11px' align='left'>".$status."<br><br></div>
<div class='abstand'>
<span class='loginform2'>User-ID:</span>
<span class='formcheck3'>".$row[userID]."</span>
</div>
<div class='abstand'>
<span class='loginform2'>Name*:</span>
<span class='formcheck'><input size='30' type='text' name='name' value='".$row['name']."'></span>
</div>
<div class='abstand'>
<span class='loginform2'>Vorname*:</span>
<span class='formcheck'><input size='30' type='text' name='vorname' value='".$row['vorname']."'></span>
</div>
<div class='abstand'>
<span class='loginform2'>Geburtsdatum*:</span>
<span class='formcheck3'><select name='tag' size='1'>
<option selected>- tag -</option>";
for($ztag=1;$ztag<=31;$ztag++) {
if($readtag == $ztag) {
echo "<option value='".$ztag."' selected>".$ztag."</option>";
}
else {
echo "<option value='".$ztag."'>".$ztag."</option>";
}
}
echo "
</select>
<select name='monat' size='1'>
<option>- monat -</option>";
for($zmonat=1;$zmonat<=12;$zmonat++) {
if($readmonat == $zmonat) {
echo "<option value='".$zmonat."' selected>".$lng['months'][$zmonat]."</option>";
}
else {
echo "<option value='".$zmonat."'>".$lng['months'][$zmonat]."</option>";
}
}
echo "
</select>
<select name='jahr' size='1'>
<option>- jahr -</option>";
for($zjahr=1970;$zjahr<=2004;$zjahr++) {
if($readjahr == $zjahr) {
echo "<option value='".$zjahr."' selected>".$zjahr."</option>";
}
else {
echo "<option value='".$zjahr."'>".$zjahr."</option>";
}
}
echo "</select>
</span>
</div>
<div class='abstand'>
<span class='loginform2'>Straße*:</span>
<span class='formcheck'><input size='30' type='text' name='strasse' value='".$row['strasse']."'></span>
</div>
<div class='abstand'>
<span class='loginform2'>PLZ*:</span>
<span class='formcheck'><input size='30' type='text' name='plz' value='".$row['plz']."' maxlength='5'></span>
</div>
<div class='abstand'>
<span class='loginform2'>Wohnort*:</span>
<span class='formcheck'><input size='30' type='text' name='wohnort' value='".$row['wohnort']."'></span>
</div>
<div class='abstand'>
<span class='loginform2'>Rufnummer:</span>
<span class='formcheck'><input size='30' type='text' name='rufnummer' value='".$row['rufnummer']."'></span>
</div>
<div class='abstand'>
<span class='loginform2'>Geschlecht*:</span>
<span class='formcheck'>
<select name='geschlecht' size='1'>
<option>- geschlecht -</option>";
if($row['geschlecht'] == 'männlich') {
echo "<option value='männlich' selected>männlich</option>
<option value='weiblich'>weiblich</option>";
}
else {
echo "
<option value='männlich'>männlich</option>
<option value='weiblich' selected>weiblich</option>";
}
echo "
</select></span>
</div>
<div class='abstand'>
<span class='loginform2'>Familienstand:</span>
<span class='formcheck'>
<select name='familienstand' size='1'>
<option selected>- Familienstand -</option>";
if($row['familienstand'] == 'keine angabe') {
echo "<option value='keine angabe' selected>- keine angabe -</option>";
}
else {
echo "<option value='keine angabe'>- keine angabe -</option>";
}
if($row['familienstand'] == 'ledig/single') {
echo "<option value='ledig/single' selected>ledig/single</option>";
}
else {
echo "<option value='ledig/single'>ledig/single</option>";
}
if($row['familienstand'] == 'feste partnerschaft') {
echo "<option value='feste partnerschaft' selected>feste Partnerschaft</option>";
}
else {
echo "<option value='feste partnerschaft'>feste Partnerschaft</option>";
}
if($row['familienstand'] == 'verheiratet') {
echo "<option value='verheiratet'>verheiratet</option>";
}
else {
echo "<option value='verheiratet'>verheiratet</option>";
}
echo "
</select></span>
</div>
<div class='abstand'>
<span class='loginform2'>Berufsstand:</span>
<span class='formcheck'><select name='berufsstand' size='1'>
<option selected>- Berufsstand -</option>";
if($row['berufsstand'] == 'schule') {
echo "<option value='keine angabe' selected>- keine angabe -</option>";
}
else {
echo "<option value='keine angabe'>- keine angabe -</option>";
}
if($row['berufsstand'] == 'schule') {
echo "<option value='schule' selected>schule</option>";
}
else {
echo "<option value='schule'>schule</option>";
}
if($row['berufsstand'] == 'studium') {
echo "<option value='studium' selected>studium</option>";
}
else {
echo "<option value='studium'>studium</option>";
}
if($row['berufsstand'] == 'ausbildung') {
echo "<option value='ausbildung' selected>ausbildung</option>";
}
else {
echo "<option value='ausbildung'>ausbildung</option>";
}
if($row['berufsstand'] == 'angestellt') {
echo "<option value='angestellt' selected>angestellt</option>";
}
else {
echo "<option value='angestellt'>angestellt</option>";
}
if($row['berufsstand'] == 'selbstständig') {
echo "<option value='selbstständig' selected>selbstständig</option>";
}
else {
echo "<option value='selbstständig'>selbstständig</option>";
}
if($row['berufsstand'] == 'bund/zivi') {
echo "<option value='bund/zivi' selected>bund/zivi</option>";
}
else {
echo "<option value='bund/zivi'>bund/zivi</option>";
}
if($row['berufsstand'] == 'sonstiges') {
echo "<option value='sonstiges' selected>sonstiges</option>";
}
else {
echo "<option value='sonstiges'>sonstiges</option>";
}
echo "
</select></span>
</div>
<div class='abstand'>
<span class='loginform2'>Hobbies:</span>
<span class='formcheck'><input size='30' type='text' name='hobbies' value='".$row['hobbies']."'></span>
</div>
<div class='abstand'>
<span class='loginform2'>E-Mail*:</span>
<span class='formcheck'><input size='30' type='text' name='email' value='".$row['email']."'></span>
</div>
<div class='abstand'>
<span class='loginform2'>Homepage:</span>
<span class='formcheck'><input size='30' type='text' name='homepage' value='".$row['homepage']."'></span>
</div>
<div class='abstand'>
<span class='loginform2'>Über dich:</span>
<span class='formcheck'><input size='30' type='text' name='ueberdich' value='".$row['ueberdich']."'></span>
</div>
<div class='abstand'>
<hr>
</div>
<div class='abstand'>
<span class='loginform2'>Login*:</span>
<span class='formcheck'><input size='30' type='text' name='login' value='".$row['login']."'></span>
</div>
<div class='abstand'>
<span class='loginform2'>Passwort*:</span>
<span class='formcheck'><input size='30' type='text' name='passwort' value=''></span>
</div>
<div class='abstand'>
<span class='loginform2'>Passwort (wdh.)*:</span>
<span class='formcheck'><input size='30' type='text' name='passwortwiederholen' value=''></span>
</div>
<div class='abstand'>
<span class='loginform2'>Rang:</span>
<span class='formcheck'><select name='rang' size='1'>";
if($row['familienstand'] == '') {
echo "<option value='' selected>- keine angabe -</option>
<option value='user'>user</option>
<option value='moderator'>moderator</option>
<option value='superuser'>superuser</option>
<option value='admin'>admin</option>";
}
elseif($row['rang'] == 'user') {
echo "<option value=''>- keine angabe -</option>
<option value='user' selected>user</option>
<option value='moderator'>moderator</option>
<option value='superuser'>superuser</option>
<option value='admin'>admin</option>";
}
elseif($row['rang'] == 'moderator') {
echo "<option value=''>- keine angabe -</option>
<option value='user'>user</option>
<option value='moderator' selected>moderator</option>
<option value='superuser'>superuser</option>
<option value='admin'>admin</option>";
}
elseif($row['rang'] == 'superuser') {
echo "<option value=''>- keine angabe -</option>
<option value='user'>user</option>
<option value='moderator'>moderator</option>
<option value='superuser' selected>superuser</option>
<option value='admin'>admin</option>";
}
else {
echo "<option value=''>- keine angabe -</option>
<option value='user'>user</option>
<option value='moderator'>moderator</option>
<option value='superuser'>superuser</option>
<option value='admin' selected>admin</option>";
}
echo "
</select></span>
</div>
<div class='abstand'>
<span class='loginform2'>Gruppe:</span>
<span class='formcheck'><input size='30' type='text' name='gruppe' value='".$row['gruppe']."'></span>
</div>
<input size='30' type='hidden' name='anmeldedatum' value='".$row['anmeldedatum']."'>
<input size='30' type='hidden' name='letzterlogin' value='".$row['letzterlogin']."'>
<div class='abstand'>
<span class='loginform2'> </span>
<span class='formcheck3'><input type='submit' name='aendern' value='Ändern'></span>
</div>
</div>
</fieldset>
</form>
</center>";
?>
Sobald ich nun die Daten ändere, verändert sich auch meine Session! Sobald ich beispielsweise als $mitglied den Wert 2 übergebe, bekomme ich diesen nach dem Abschicken in der Variable $_SESSION['userID'] zugewiesen.
Genauso ist es auch mit der Variable $_SESSION['login'], welche auch mit verändert wird.
Ich finde den Fehler einfach nicht.
Kann mir jemand helfen bzw. findet den Fehler jemand?
Danke im Voraus.
Gruß Kuhnibert 
|
|
|
23.05.2005, 14:16
|
#2
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
ich sehe nicht, das Du überhaupt die Session aufnimmst mit session_start();
Dadurch verlierst Du die Session.
Ausserdem musst Du nach dem Update auch die Sessionvariabeln ändern (die die betroffen sind)
|
|
|
23.05.2005, 14:20
|
#3
|
|
Registered User
Registriert seit: Mar 2003
|
Sorry, hab vergessen ein paar Dinge zu erwähnen 
Also die Session wird auf der index.php gestartet. Ich rufe die oben genannte Seite über die index.php auf und übergebe ihr den $mitglied-Variablen-Wert.
Was meinst du mit dem Ändern der Session-Variablen?
Es sollten ja keine Session Variablen verändert werden. Das ist ja der Springende Punkt. Die Sessions sollten unverändert bleiben!
Hast du ne Idee?
|
|
|
23.05.2005, 14:49
|
#4
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
was meinst Du mit Aufruf - include ? Nur dann hättest Du die Session noch. Wenn nicht, hast Du sie nicht.
Ansonsten sorgt obiges Script nicht für eine Veränderung, der Fehler muss an anderer Stelle sein, z.B. index.php
|
|
|
23.05.2005, 15:02
|
#5
|
|
Registered User
Registriert seit: Mar 2003
|
Ja ich meine includieren 
Der Fehler muss wohl oder übel in dem Script sein. Ich verstehe es auch nicht. Aber in der index.php kann es nicht sein, da NUR die Datei includiert wird. Der Rest ist HTML. Und durch html kann ich mir nicht vorstellen, dass das Script die Sessions verändert....
|
|
|
23.05.2005, 15:17
|
#6
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
wie übergibst Du die Variabel ?
füg doch mal vor includieren und nach includieren die Zeile ein
echo '<pre>'.$print_r($_SESSION,true).'</pre>';
|
|
|
23.05.2005, 15:20
|
#7
|
|
Registered User
Registriert seit: Mar 2003
|
Also ich habe das Problem gelöst. Es sieht zwar richtig unschön aus aber es geht wohl nicht anders. Ich habe einfach am Anfang des Scriptes die Session-Daten in je eine andre Variable gespeichert und nach dem Update der jeweiligen Session-Variable wieder zugewiesen.
Wie gesagt. Sieht besch***eiden aus im Quellcode aber was solls
Wenn jemand ne bessere Idee hat, kanns hier ja noch mal posten.
Bin für jeden Tipp dankbar
Gruß Kuhnibert
|
|
|
23.05.2005, 15:22
|
#8
|
|
Registered User
Registriert seit: Mar 2003
|
Die Variable wird mittels der Globals übergeben, welche auf dem Test-Server angeschaltet sind. Auf der Page funktioniert es ja sonst überall. Nur bei diesem Script nicht :-/
|
|
|
23.05.2005, 15:29
|
#9
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
wenn Globals on sind, dann reicht es, eine Variabel des gleichen Namens zu ändern.
Also eine $_SESSION['user'] wird auch mit der Variabel $user überschrieben.
Vermeide solch Überschneidungen.
|
|
|
23.05.2005, 15:34
|
#10
|
|
Registered User
Registriert seit: Mar 2003
|
Oh, das könnte natürlich der Fehler sein! Danke für die schnelle Antwort 
Solche Überschneidungen gibt es nämlich gerade bei den Bezeichnungen der Sessions 
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 Uhr.
|
 |