Benutzername schon vorhanden - Abfrage

Virginia

Ensign
Dabei seit
Aug. 2005
Beiträge
133
Hi,
ich habe ein Anmeldeformular für meinen Fanclub gemacht, was die eingetragenen Daten sofort an eine Datenbank-Tabelle namens "fanclub" weitergibt. Nun müsste ich die Spalte "Nickname" ja eigentlich auf UNIQUE stellen, allerdings brauche ich dazu eine Funktion, die dem Besucher meldet, wenn der Benutzername schon vorhanden ist. Da hänge ich nun und weiß nicht, warum es nicht funktioniert :( Poste euch mal den Code.

PHP:
	<?php


if (isset ($_POST['abgeschickt'])) { 

$geburtsdatum = $_POST["geburtsdatum"];
$email = $_POST["email"]; 
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"]; 
$website = $_POST["website"];
$nickname = $_POST["nickname"]; 
$passwort = $_POST["passwort"];
$plz = $_POST["plz"];
$wohnort = $_POST["wohnort"];
$strasse = $_POST["strasse"];

$mailGesendet = false;
$error = false;

//zurück-link
$referer = getenv("HTTP_REFERER");

// E-Mail an Team
$mail = "Name: $vorname $nachname\nE-Mail: $email\nNachricht: $Nachricht\n\n\nWebsite: $website\nNickname: $nickname";

// E-Mail an neuen Member
$mailmitglied = "Hallo $vorname,\ndu hast dich soeben beim Fanclub angemeldet.\nHier findest du noch einmal die wichtigsten von dir eingetragenen Daten.\n\n Name: $nachname, $vorname.\n\n E-Mail: $email\n Benutzername: $nickname\n Passwort: $passwort\n\nVielen Dank für deine Anmeldung. Das Fanclub-Team heißt dich herzlich Willkommen und wünscht Dir viel Spaß im Club.";

//Fehlermeldungen Text
$fehlermail = "Bitte gib eine gültige E-Mail-Adresse an.\n";
$fehlerfelder = "Du hast ein oder mehrere erforderliche Felder nicht ausgefüllt. Bitte korrigiere deine Angaben.\n";

//Fehlermeldung
if ($vorname == "" || $email == "" || $nachname == "" || $nickname == "" || $plz == "" || $wohnort == "" || $passwort == "") {
  $error = true; 
  echo "$fehlerfelder";}

 else {
    if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $email)) {
            $mailGesendet = true;
            $error = false; 
			$sql="INSERT INTO fanclub (Vorname,Nachname,Nickname,Passwort,Email,PLZ,Ort,Strasse,geboren,website,Anmeldedatum) VALUES('$vorname', '$nachname', '$nickname', '$passwort', '$email', '$plz', '$wohnort', '$strasse', '$geburtsdatum', '$website', now())";
			//Datenbank-Verbindung
			$link = mysql_connect('localhost', 'benutzername', 'passwort');
			if (!$link) {
   			die('keine Verbindung möglich: ' . mysql_error());
			}
			// Verbindung da
				 $ueberpruefung = @mysql_query("SELECT Nickname FROM fanclub WHERE Nickname = '$nickname'");
  $result = @mysql_fetch_array($ueberpruefung);
 if($_POST['nickname'] == $result['Nickname']) {
				echo "Dieser Benutzername ist bereits vergeben. Bitte wähle einen anderen.";
				}
			// mysql_select_db("v072544", $link);
			
			echo "Vielen Dank für deine Anmeldung.";
			mail("test@test.de", "Neues Fanclub-Mitglied", $mail, "From:$email"); //Mail an Team
			mail("$email", "Deine Anmeldung im Fanclub", $mailmitglied, "From:automailer@test.de"); //Mail an Member
    }
    else {  
        $error = true;
        echo "$fehlermail";
    }
}  

}

if(!$mailGesendet) { //Formular nur anzeigen, wenn noch keine Mail gesendet ?> 

Hier kannst Du dich unverbindlich für den Fanclub anmelden. Du gehst mit deiner Anmeldung keinerlei Verpflichtungen ein. 
<br>Deine Daten werden nicht an Dritte weitergegeben, sie werden nur zur genauen Verwaltung unserer Mitgliederkartei benötigt. 
<br><b>Leider können wir fehlerhafte Anmeldungen nicht berücksichtigen! </b>
<p>

<em>Die mit 
<font color=red>*</font> markierten Felder m&uuml;ssen ausgef&uuml;llt werden.</em><br>
		
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post"> 
<table width="95%" border="0" cellpadding="2" class="Schrift"> 
  <tr>
    <td width="33%">Vorname<font color=red>*</font></td>
    <td width="67%"><input type="text" name="vorname" value="<?php if (isset($_POST['vorname'])) echo $_POST['vorname']; ?>" size="40"></td>
  </tr>
usw.

"Benutzername" und "Passwort" bei der Datenbank-Verbindung sind im Original natürlich richtig eingetragen.
 
Zuletzt von einem Moderator bearbeitet: ([code] -> [php])

AlbertLast

Lieutenant
Dabei seit
Juni 2002
Beiträge
715
PHP:
	<?php


if (isset ($_POST['abgeschickt'])) { 

$geburtsdatum = $_POST["geburtsdatum"];
$email = $_POST["email"]; 
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"]; 
$website = $_POST["website"];
$nickname = $_POST["nickname"]; 
$passwort = $_POST["passwort"];
$plz = $_POST["plz"];
$wohnort = $_POST["wohnort"];
$strasse = $_POST["strasse"];

$mailGesendet = false;
$error = false;

//zurück-link
$referer = getenv("HTTP_REFERER");

// E-Mail an Team
$mail = "Name: $vorname $nachname\nE-Mail: $email\nNachricht: $Nachricht\n\n\nWebsite: $website\nNickname: $nickname";

// E-Mail an neuen Member
$mailmitglied = "Hallo $vorname,\ndu hast dich soeben beim Fanclub angemeldet.\nHier findest du noch einmal die wichtigsten von dir eingetragenen Daten.\n\n Name: $nachname, $vorname.\n\n E-Mail: $email\n Benutzername: $nickname\n Passwort: $passwort\n\nVielen Dank für deine Anmeldung. Das Fanclub-Team heißt dich herzlich Willkommen und wünscht Dir viel Spaß im Club.";

//Fehlermeldungen Text
$fehlermail = "Bitte gib eine gültige E-Mail-Adresse an.\n";
$fehlerfelder = "Du hast ein oder mehrere erforderliche Felder nicht ausgefüllt. Bitte korrigiere deine Angaben.\n";

//Fehlermeldung
if ($vorname == "" || $email == "" || $nachname == "" || $nickname == "" || $plz == "" || $wohnort == "" || $passwort == "") {
  $error = true; 
  echo "$fehlerfelder";}

 else {
    if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $email)) {
            $mailGesendet = true;
            $error = false; 
			$sql="INSERT INTO fanclub (Vorname,Nachname,Nickname,Passwort,Email,PLZ,Ort,Strasse,geboren,website,Anmeldedatum) VALUES('$vorname', '$nachname', '$nickname', '$passwort', '$email', '$plz', '$wohnort', '$strasse', '$geburtsdatum', '$website', now())";
			//Datenbank-Verbindung
			$link = mysql_connect('localhost', 'benutzername', 'passwort');
			if (!$link) {
   			die('keine Verbindung möglich: ' . mysql_error());
			}
			// Verbindung da
				 $ueberpruefung = @mysql_query('SELECT Nickname FROM fanclub WHERE Nickname = "'.$nickname.'" ;');
 if(mysql_num_rows($ueberpruefung)!='0') {
				die ("Dieser Benutzername ist bereits vergeben. Bitte wähle einen anderen.");
				}
			// mysql_select_db("v072544", $link);
			
			echo "Vielen Dank für deine Anmeldung.";
			mail("test@test.de", "Neues Fanclub-Mitglied", $mail, "From:$email"); //Mail an Team
			mail("$email", "Deine Anmeldung im Fanclub", $mailmitglied, "From:automailer@test.de"); //Mail an Member
    }
    else {  
        $error = true;
        echo "$fehlermail";
    }
}  

}

if(!$mailGesendet) { //Formular nur anzeigen, wenn noch keine Mail gesendet ?> 

Hier kannst Du dich unverbindlich für den Fanclub anmelden. Du gehst mit deiner Anmeldung keinerlei Verpflichtungen ein. 
<br>Deine Daten werden nicht an Dritte weitergegeben, sie werden nur zur genauen Verwaltung unserer Mitgliederkartei benötigt. 
<br><b>Leider können wir fehlerhafte Anmeldungen nicht berücksichtigen! </b>
<p>

<em>Die mit 
<font color=red>*</font> markierten Felder m&uuml;ssen ausgef&uuml;llt werden.</em><br>
		
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post"> 
<table width="95%" border="0" cellpadding="2" class="Schrift"> 
  <tr>
    <td width="33%">Vorname<font color=red>*</font></td>
    <td width="67%"><input type="text" name="vorname" value="<?php if (isset($_POST['vorname'])) echo $_POST['vorname']; ?>" size="40"></td>
  </tr>
hab jetz frei nach schnauze verändert
 

Virginia

Ensign
Ersteller dieses Themas
Dabei seit
Aug. 2005
Beiträge
133
Cool, danke, das geht! Nun erscheint allerdins IMMER die Meldung "Benutzername schon vergeben"! Egal was man eingibt!
Darüber steht dann

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/htdocs/v..../anmeldung2.php on line 91

line 91 = if(mysql_num_rows($ueberpruefung)!='0') {
 
Zuletzt bearbeitet:

davidbaumann

Commodore
Dabei seit
Aug. 2004
Beiträge
4.864
Kann dir jetzt nicht den Code hinschreiben :)
aber vl erst ein Select drauf ausführen und testen, ob was zurück kommt?
Wenn zB ein Benutzer nicht gelöscht sondern storniert wurde (weiss ja nicht ob du das unterstützt) dann kannste ja den select ausführen und auf nen Rückgabewert testen

Code:
select username, storniert from userdb where usernam='$username' and (not(storniert=true))
David
 

AlbertLast

Lieutenant
Dabei seit
Juni 2002
Beiträge
715
PHP:
<?php


if (isset ($_POST['abgeschickt'])) { 

$geburtsdatum = $_POST["geburtsdatum"];
$email = $_POST["email"]; 
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"]; 
$website = $_POST["website"];
$nickname = $_POST["nickname"]; 
$passwort = $_POST["passwort"];
$plz = $_POST["plz"];
$wohnort = $_POST["wohnort"];
$strasse = $_POST["strasse"];

$mailGesendet = false;
$error = false;

//zurück-link
$referer = getenv("HTTP_REFERER");

// E-Mail an Team
$mail = "Name: $vorname $nachname\nE-Mail: $email\nNachricht: $Nachricht\n\n\nWebsite: $website\nNickname: $nickname";

// E-Mail an neuen Member
$mailmitglied = "Hallo $vorname,\ndu hast dich soeben beim Fanclub angemeldet.\nHier findest du noch einmal die wichtigsten von dir eingetragenen Daten.\n\n Name: $nachname, $vorname.\n\n E-Mail: $email\n Benutzername: $nickname\n Passwort: $passwort\n\nVielen Dank für deine Anmeldung. Das Fanclub-Team heißt dich herzlich Willkommen und wünscht Dir viel Spaß im Club.";

//Fehlermeldungen Text
$fehlermail = "Bitte gib eine gültige E-Mail-Adresse an.\n";
$fehlerfelder = "Du hast ein oder mehrere erforderliche Felder nicht ausgefüllt. Bitte korrigiere deine Angaben.\n";

//Fehlermeldung
if ($vorname == "" || $email == "" || $nachname == "" || $nickname == "" || $plz == "" || $wohnort == "" || $passwort == "") {
  $error = true; 
  echo "$fehlerfelder";}

 else {
    if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $email)) {
            $mailGesendet = true;
            $error = false; 
            $sql='INSERT INTO fanclub (Vorname,Nachname,Nickname,Passwort,Email,PLZ,Ort,Strasse,geboren,website,Anmeldedatum) VALUES("'.$vorname.'", "'.$nachname.'", "'.$nickname.'", "'.$passwort.'", "'.$email.'", "'.$plz.'", "'.$wohnort.'", "'.$strasse.'", "'.$geburtsdatum.'", "'.$website.'", now()) ;';
            //Datenbank-Verbindung
            $link = mysql_connect('localhost', 'benutzername', 'passwort');
            if (!$link) {
               die('keine Verbindung möglich: ' . mysql_error());
            }
            // Verbindung da
                 $ueberpruefung = mysql_query('SELECT Nickname FROM fanclub WHERE Nickname = "'.$nickname.'" ;') or die(mysql_error());
 if(mysql_num_rows($ueberpruefung)!='0') {
                die ("Dieser Benutzername ist bereits vergeben. Bitte wähle einen anderen.");
                }
            // mysql_select_db("v072544", $link);
            
            echo "Vielen Dank für deine Anmeldung.";
            mail("test@test.de", "Neues Fanclub-Mitglied", $mail, "From:$email"); //Mail an Team
            mail("$email", "Deine Anmeldung im Fanclub", $mailmitglied, "From:automailer@test.de"); //Mail an Member
    }
    else {  
        $error = true;
        echo "$fehlermail";
    }
}  

}

if(!$mailGesendet) { //Formular nur anzeigen, wenn noch keine Mail gesendet ?> 

Hier kannst Du dich unverbindlich für den Fanclub anmelden. Du gehst mit deiner Anmeldung keinerlei Verpflichtungen ein. 
<br>Deine Daten werden nicht an Dritte weitergegeben, sie werden nur zur genauen Verwaltung unserer Mitgliederkartei benötigt. 
<br><b>Leider können wir fehlerhafte Anmeldungen nicht berücksichtigen! </b>
<p>

<em>Die mit 
<font color=red>*</font> markierten Felder m&uuml;ssen ausgef&uuml;llt werden.</em><br>
        
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post"> 
<table width="95%" border="0" cellpadding="2" class="Schrift"> 
  <tr>
    <td width="33%">Vorname<font color=red>*</font></td>
    <td width="67%"><input type="text" name="vorname" value="<?php if (isset($_POST['vorname'])) echo $_POST['vorname']; ?>" size="40"></td>
  </tr>
versuch mal mit diesen script diese sollte dir eine bessere fehler ausgabe geben so das du dan besser das mylsq query anpassen kannst
hab gerade noch mal dein script über flogen udn muss dir sagen das es so nicht geht weil du kannst nicht einfach ein $var rein hauen in ein text schau dir an wie ich es bei den mysql query gemacht habe und über nimm das auf dein restlichen script teil
 
Zuletzt bearbeitet:

Virginia

Ensign
Ersteller dieses Themas
Dabei seit
Aug. 2005
Beiträge
133
Ääääh *nichts versteht* Bin Anfänger auf dem Gebiet PHP/MySQL...
Welche "$var in einem Text" meinst du?
 

AlbertLast

Lieutenant
Dabei seit
Juni 2002
Beiträge
715
so machst du das
PHP:
mail("test@test.de", "Neues Fanclub-Mitglied", $mail, "From:$email"); //Mail an Team
            mail("$email", "Deine Anmeldung im Fanclub", $mailmitglied, "From:automailer@test.de"); //Mail an Member
und so würde dein script dan auch funktionieren
PHP:
mail("test@test.de", "Neues Fanclub-Mitglied", $mail, "From:".$email); //Mail an Team
            mail($email, "Deine Anmeldung im Fanclub", $mailmitglied, "From:automailer@test.de"); //Mail an Member
 

Virginia

Ensign
Ersteller dieses Themas
Dabei seit
Aug. 2005
Beiträge
133
Mit diesem Code:

PHP:
                 $ueberpruefung = mysql_query('SELECT Nickname FROM fanclub WHERE Nickname = "'.$nickname.'" ;') or die(mysql_error());
 if(mysql_num_rows($ueberpruefung)!='0') {
                die ("Dieser Benutzername ist bereits vergeben. Bitte wähle einen anderen.");
                }
krieg ich jetzt die Meldung "No Database selected".

Deine Änderung, AlbertLast, habe ich übernommen. Muss ich jetzt alle Variablen in Texten ändern? Also auch z.b. hier:

PHP:
$mailmitglied = "Hallo $vorname,\ndu hast dich soeben beim Fanclub angemeldet.\nHier findest du noch einmal die wichtigsten von dir eingetragenen Daten.\n\n Name: $nachname, $vorname.\n\n E-Mail: $email\n Benutzername: $nickname\n Passwort: $passwort\n\nVielen Dank für deine Anmeldung. Das Fanclub-Team heißt dich herzlich Willkommen und wünscht Dir viel Spaß im Club.";
?? Und wie genau mach ich das in diesem Fall?
 

Virginia

Ensign
Ersteller dieses Themas
Dabei seit
Aug. 2005
Beiträge
133
So, hier mal der neuste Stand, nachdem ich rumgetüftelt habe :) Er meldet mir mit folgendem Code tatsächlich, wenn ein Benutzername schon vergeben ist. Allerdings trägt er die eingetragenen Daten nicht mehr in die Datenbank ein :( Woran liegt das jetzt??

PHP:
		<?php


if (isset ($_POST['abgeschickt'])) { 

$geburtsdatum = $_POST["geburtsdatum"];
$email = $_POST["email"]; 
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"]; 
$website = $_POST["website"];
$nickname = $_POST["nickname"]; 
$passwort = $_POST["passwort"];
$plz = $_POST["plz"];
$wohnort = $_POST["wohnort"];
$strasse = $_POST["strasse"];

$mailGesendet = false;
$error = false;

//zurück-link
$referer = getenv("HTTP_REFERER");

// E-Mail an Team
$mail = "Name:$vorname $nachname\nE-Mail: $email\nNachricht: $Nachricht\n\n\nWebsite: $website\nNickname: $nickname";

// E-Mail an neuen Member
$mailmitglied = "Hallo $vorname,\ndu hast dich soeben beim Fanclub angemeldet.\nHier findest du noch einmal die wichtigsten von dir eingetragenen Daten.\n\n Name: $nachname, $vorname.\n\n E-Mail: $email\n Benutzername: $nickname\n Passwort: $passwort\n\nVielen Dank für deine Anmeldung. Das Fanclub-Team heißt dich herzlich Willkommen und wünscht Dir viel Spaß im Club.";

//Fehlermeldungen Text
$fehlermail = "<font color=red>Bitte gib eine gültige E-Mail-Adresse an.</font>\n\n";
$fehlerfelder = "<font color=red>Du hast ein oder mehrere erforderliche Felder nicht ausgefüllt. Bitte korrigiere deine Angaben.</font>\n\n";
$fehlerplz = "<font color=red>Ungueltige Postleitzahl!</font>\n\n";

//Fehlermeldung
if ($vorname == "" || $email == "" || $nachname == "" || $nickname == "" || $plz == "" || $wohnort == "" || $passwort == "") {
  $error = true; 
  echo "$fehlerfelder";}
  
elseif ($plz <= 1000 || $plz >= 99999) {
	$error = true;
	echo "$fehlerplz";}

else {
    if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $email)) {
//wenn KEIN Fehler vorhanden:
            $error = false; 
			//Datenbank-Verbindung aufbauen
			$link = mysql_connect('localhost', 'benutzer', 'passwort');
		if (!$link) {
   			die('keine Verbindung möglich: ' . mysql_error());
			}
			mysql_select_db("datenbankname", $link) or die ("Verbindungsversuch fehlgeschlagen");
            // Verbindung da
            $ueberpruefung = mysql_query('SELECT Nickname FROM fanclub WHERE Nickname = "'.$nickname.'" ;') or die(mysql_error());
			if(mysql_num_rows($ueberpruefung)!='0') {
             	   die ("Dieser Benutzername ist bereits vergeben. Bitte wähle einen anderen.");
                	}
            else {
			$sql='INSERT INTO fanclub (Vorname,Nachname,Nickname,Passwort,Email,PLZ,Ort,Strasse,geboren,website,Anmeldedatum) VALUES("'.$vorname.'", "'.$nachname.'", "'.$nickname.'", "'.$passwort.'", "'.$email.'", "'.$plz.'", "'.$wohnort.'", "'.$strasse.'", "'.$geburtsdatum.'", "'.$website.'", now()) ;';
			echo "Vielen Dank für deine Anmeldung.";
			mail("test@test.de", "Neues Fanclub-Mitglied", $mail, "From:".$email); //Mail an Team
			mail($email, "Deine Anmeldung im Fanclub", $mailmitglied, "From:automailer@fanclub.de"); //Mail an Member
			$mailGesendet = true;
			}
    }
    else {  
        $error = true;
        echo "$fehlermail";
    }
}
usw....
 

AlbertLast

Lieutenant
Dabei seit
Juni 2002
Beiträge
715
Ja den text muss du auch an passen und musst es nur so machen wie ich es bei der mail gemacht habe. Und ich sehe den fehler nicht wieso dieser Db fehler kommt ...
 

Virginia

Ensign
Ersteller dieses Themas
Dabei seit
Aug. 2005
Beiträge
133
Zitat von AlbertLast:
Ja den text muss du auch an passen und musst es nur so machen wie ich es bei der mail gemacht habe. Und ich sehe den fehler nicht wieso dieser Db fehler kommt ...
Der DB-Fehler kommt nicht mehr, weil ich das mysql_select_db als Kommentar gesetzt hatte. Das habe ich korrigiert und nun kommt keine Fehlermeldung mehr. Aber mit dem jetzigen Code (der letzte, den ich gepostet hatte) werden die eingetragenen Daten nicht mehr in die Datenbank übernommen, und ich verstehe nicht wieso :(
 

merv

Lt. Commander
Dabei seit
Juni 2002
Beiträge
1.540
Das liegt eindeutig daran, dass du garkeinen mysql_query()-Befehl in deinem Code hast, der die Daten eintragen würde ;)
Übrigens, $mailGesendet = true; würde ich auch wirklich nur dann setzen, wenn die beiden mail()-Befehle wirklich erfolgreich waren. Das wird ja aber überhaupt nicht überprüft.
 

Virginia

Ensign
Ersteller dieses Themas
Dabei seit
Aug. 2005
Beiträge
133
Nun hänge ich an einem Login-Script fest und brauche nochmal Eure Hilfe :(

Meine Datei login.php, die ein einfaches HTML-Formular enthält, gibt den eingetragenen Daten an die Datei validate.php weiter. Hier die validate.php:
Code:
...
	session_start();
	$db_user = 'benutzername';
	$db_pass = 'passwort';
	$user_name = $_POST['user_name'];
	$password = $_POST['password'];

	//connect to the DB and select the database
	$connection = mysql_connect('localhost', $db_user, $db_pass) or die(mysql_error());
	mysql_select_db('datenbank', $connection) or die(mysql_error());

	//set up the query
	$query = "SELECT * FROM fanclub 
			WHERE user_name='$user_name' AND password='$password'";
			
	//run the query and get the number of affected rows
	$result = mysql_query($query, $connection) or die('error making query');
	$affected_rows = mysql_num_rows($result);

	//if there's exactly one result, the user is validated. Otherwise, he's invalid
	if($affected_rows == 1) {
		print 'validated';
	}
	else {
		print 'not valid';
	}
...
Wenn man in der login.php was einträgt und es abschickt, erhalte ich folgende Fehlermeldungen:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /www/htdocs/...) in /www/htdocs/xxx/validate.php on line 38

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /www/htdocs/xxx/validate.php:10) in /www/htdocs/xxx/validate.php on line 38

error making query
Was mache ich falsch??
 

AlbertLast

Lieutenant
Dabei seit
Juni 2002
Beiträge
715
A)Du hast schon ein session gestartet
B)Du startes die session zu spät-> erste zeile deiner index.php
 

Virginia

Ensign
Ersteller dieses Themas
Dabei seit
Aug. 2005
Beiträge
133
Es war B) ...
Jetzt kommt nur noch "error making query"... aber was kann denn am query schon falsch laufen?
 

Virginia

Ensign
Ersteller dieses Themas
Dabei seit
Aug. 2005
Beiträge
133
Wieder ne Frage. Wahrscheinlich werdet Ihr mich nie mehr los :p

Also der Login funktioniert jetzt einwandfrei. Nun brauche ich logischerweise auch ein Logout. Ich habe mal angefangen mit Session-IDs zu arbeiten und habe dafür meine validate.php leicht geändert (und natürlich eine Spalte SessionID in meine Tabelle eingefügt):
Code:
	//connect to the DB and select the database
	$connection = mysql_connect('localhost', $db_user, $db_pass) or die(mysql_error());
	mysql_select_db('datenbank', $connection) or die(mysql_error());

	//set up the query
	$query = "SELECT * FROM fanclub 
			WHERE Nickname='$user_name' AND Passwort='$password'";
			
	//run the query and get the number of affected rows
	$result = mysql_query($query, $connection) or die('error making query');
	$affected_rows = mysql_num_rows($result);

	//if there's exactly one result, the user is validated. Otherwise, he's invalid
	if($affected_rows == 1) {
		// User erhält eine Session-ID
		$sql="UPDATE fanclub SET SessionID='".session_id()."' WHERE Nickname='$user_name' AND Passwort='$password'"; 
     	mysql_query($sql) or die('Session-ID konnte nicht eingetragen werden'); 
		print 'Du bist erfolgreich eingeloggt.';
		$eingeloggt=true; ?>
		<a href="logout.php">Logout</a>
	<?
	}
	else {
		print 'Falscher Benutzername oder falsches Passwort';
	}
So, das Eintragen der Session-ID funktioniert auch wunderbar. Nun die Logout.php:
Code:
<?
    $sql="UPDATE fanclub 
    SET SessionID=NULL 
    WHERE SessionID='".session_id()."'"; 
     mysql_query($sql);
print 'Du bist erfolgreich ausgeloggt. Tschüß, bis bald!';
?>
So, wenn man die Logout.php aufruft, setzt er die SessionID aber leider nicht auf Null. Woran kann das liegen?
 

AlbertLast

Lieutenant
Dabei seit
Juni 2002
Beiträge
715
PHP:
<?
    $sql="UPDATE fanclub 
    SET SessionID='aussicherheitsgründen wirde ich die id drin lassen' 
    WHERE SessionID='".session_id()."'"; 
     mysql_query($sql);
session_destroy();
print 'Du bist erfolgreich ausgeloggt. Tschüß, bis bald!';
?>
ich würde lieber eien extra spalte machen wo vieleicht drin steht wann sich der user ausgelogt hat!
 

Virginia

Ensign
Ersteller dieses Themas
Dabei seit
Aug. 2005
Beiträge
133
Okay. Wenn ich das dann so mache, wie du es sagst, und die Session ID drin lasse, kann ich den ganzen Kram von wegen UPDATE aber weglassen, oder?
 
Top