Benutzername schon vorhanden - Abfrage

Auf den Fehler mit dem == hatte ich gar nicht mehr geachtet, wenn dir das schwer
fällt probier mal

if(!$_SESSION['angemeldet'])
echo "angemeldet";
else
echo "nicht angemeldet";

Achte hier auf das ! Rufzeichen, dann kannst Du Dir das mit dem ist == TRUE oder FALSE sparen.
 
Vielen Dank, es funktioniert nun endlich :)

Kann gut sein dass ich euch nochmal brauche, aber wollte mich schonmal bei allen bedanken die soviel Geduld mit mir hatten und immer auf meine Fragen geantwortet haben. Vielen Dank! Das ist echt ganz toll.
 
Nun hänge ich am nächsten Problem. Wahrscheinlich ist es aber auch das letzte.
Da sich soviele User mit Fantasie-E-Mail-Adressen anmelden, möchte ich, dass jeder User eine Mail bekommt, mit dessen Hilfe er seinen Account erstmal aktivieren muss.

Geplant ist das so:
Ich habe in der Tabelle eine Spalte "aktiviert" eingefügt, die man auf 0 (für nicht aktiviert) oder auf 1 (für aktiviert) stellen kann.
Nun soll beim Login erstmal überprüft werden, ob der Account des Users aktiviert ist. Da fangen schon die Probleme an.

Der Code sieht so aus:
Code:
		//Abfrage: user aktiviert?
			$abfrage = "SELECT aktiviert FROM fanclub 
			WHERE Nickname='$user_name' AND Passwort='$password'";
		// Ergebnis in Variable schreiben
			$aktiviert = mysql_query($abfrage, $connection) or die('error making query');
		 if($aktiviert == "1") {
...
			}
		else{ 
		 	print 'Dein Account ist nicht aktiviert.';}
Das ganze funktioniert natürlich nicht, weil in der Variable $aktiviert nicht "1" steht, sondern "Resource id #5".
Wie muss der Code also lauten, damit das funktioniert? Was mach ich hier wieder falsch?
 
Danke dir, das funktioniert jetzt alles, die Aktivierung der Accounts funktioniert einwandfrei. Zumindest im alten Design.

Fürs neue Design habe ich jetzt eine Box "Member-Login" gebaut, die immer rechts am Rand jeder Seite angezeigt werden soll und deshalb per php include eingebunden wird. In dieser Box soll entweder das Formular zum einloggen stehen, oder eben "Du bist bereits eingeloggt".
So, nun gehe ich im neuen Design auf eine beliebige Seite, gebe in der Login-Box meine Daten ein, komme auf die validate.php und bekomme die Meldung "Du bist erfolgreich eingeloggt", und rechts daneben in der Box steht auch "Du bist bereits eingeloggt". Alles super.
Nun gehe ich aber auf eine andere beliebige Seite, und schon wird in der Login-Box das Formular zum Einloggen angezeigt, obwohl ich doch eben eingeloggt war :(
Das kann ja eigentlich nur an meiner Session-Variablen liegen, auf der alles basiert. Die wird beim Login gesetzt:
Code:
$_SESSION['angemeldet'] = true;
und dann auf jeder einzelnen Seite überprüft:
Code:
	if(!$_SESSION['angemeldet']) {
		die('Ein Fehler ist aufgetreten. Vermutlich bist du nicht eingeloggt, oder deine Session ist abgelaufen.
		Versuche dich <a href="login.php">nochmal einzuloggen</a>.');
	}
Woran kann es liegen, dass diese Variable auf anderen Seiten scheinbar verloren geht? :(
 
Ich hab den Fehler gefunden. Hatte auf einer Seite vergessen, die Session zu starten :mad:

Nun hänge ich an der Passwort-vergessen-Funktion. Die soll so aussehen, dass der User seine E-Mail-Adresse eingibt und dann sein Passwort per E-Mail zugeschickt bekommt.
(Nicht so sicher, ich weiß, aber bei uns gibt es eh nix auszuspionieren :) )

Der Code sieht so aus:
Code:
	//Überprüfung: eingegebene Adresse überhaupt vorhanden?
		$ueberpruefung = mysql_query('SELECT EMail FROM fanclub WHERE EMail = "'.$email.'" ;') or die(mysql_error()); 
	if(mysql_num_rows($ueberpruefung)== 0) { 
                echo "<font color=red>Sorry, diese E-Mail-Adresse konnte nicht gefunden werden.</font>"; 
				$abgeschickt = 0;
                } 
				
	else{
		$abfrage = "SELECT Passwort FROM fanclub 
			WHERE EMail='".$email."'";
		$result = mysql_query($abfrage, $connection) or die('error making query');
		//Text E-Mail
		$mailpasswort = "Hallo,\nhier ist Dein Passwort: $result\nViele Grüße, Dein Fanclub-Team";
  		mail("$email", "Dein Passwort", $mailpasswort, "From:automailer@fanclub.de"); //Mail an Member
   		$abgeschickt = 1;
		echo "Danke, Dein Passwort wird Dir umgehend per E-Mail zugesendet.";
		}
Nun kriege ich aber die Fehlermeldung "mysql_query(): supplied argument is not a valid MySQL-Link resource in /www/htdocs/xxx/password.php on line 44" :( Line 44 ist diese:
Code:
		$result = mysql_query($abfrage, $connection) or die('error making query');
Vielleicht findet jemand von euch den Fehler, ich finde ihn nicht :(
 
Er scheint das Object $connection nicht zur Verfügung zu haben !?

Hast Du die $connection aufgebaut ?
 
Danke, hab ich natürlich vergessen :rolleyes:
Jetzt versteh ich nur nicht, warum das Passwort des Users dann nicht in $result steht???
 
mysql_query() schickt doch nur "true" oder "false" zurück.
Du musst die Ergebnisse noch "abholen" mit fetch_array oder ähnlichem.
 
Aber wenn ich es so mache:
Code:
		$abfrage = "SELECT * FROM fanclub 
			WHERE EMail='".$email."'";
		$result = mysql_query($abfrage, $link) or die('error making query');
		$zeile = mysql_fetch_array($result);
		$passwort = $zeile['passwort'];
ist $passwort leer :(
 
Nee vergiss es, ich hätte "Passwort" nur einfach mal groß schreiben müssen :rolleyes:
Vielen Dank, jetzt geht es.
 
Kannste laut sagen *grrrr*

Eine wichtige Frage hab ich noch ^^ Momentan basiert ja alles auf der Session-Variable "angemeldet", die true oder false ist. Funktioniert die überhaupt noch, wenn sich jetzt mehrere Leute einloggen?? Oder wird die für jeden User einzeln angelegt?
 
Hab ein großes Problem und hoffe auf schnelle Hilfe!
Meine check.inc.php sollte eigentlich am Anfang checken, ob der User berechtigt ist, die Seite zu sehen:
Code:
	if(!$_SESSION['angemeldet']) {
		die('Ein Fehler ist aufgetreten. Vermutlich bist du nicht eingeloggt, oder deine Session ist abgelaufen.
		Versuche dich <a href="login.php">nochmal einzuloggen</a>.');
		exit();
	}
So, nun ist die check.inc.php halt ein include, auf die dann ganz normaler html-code folgt. Trotz dem "die" wird der html-code komplett angezeigt, auch für die unberechtigten User. Was mache ich jetzt?
 
Z.B. den HTML-Code der nicht sichtbar sein darf in ein else zu hängen?


if(!$_SESSION['angemeldet']) {
blaverbot
}
else{
blubbanzeige
}
 
Letztes Problem gelöst, neues da :(

Ich brauche eine Rundmail-Funktion, d.h. an alle in der Datenbank existierenden User soll eine Rundmail geschrieben werden können per Formular auf der Page. So weit bin ich schon:
Code:
		$abfrage = "SELECT EMail FROM fanclub";
		$result = mysql_query($abfrage, $link) or die('error making query');
		 while($row = mysql_fetch_object($result))
 		   {
  		  echo $row->EMail;
  		  }
Damit gibt er mir jetzt alle E-Mail-Adressen aneinandergereiht aus. Aber das nützt mir ja nichts, ich brauche sie ja durch Kommata getrennt, damit ich die Funktion mail verwenden kann. Kann mir jemand weiterhelfen?
 
Wenn Du nicht als Objekt sondern als Array fetchst, kannst Du das in der Schlaufe ganz einfach machen.

$abfrage = "SELECT EMail FROM fanclub";
$result = mysql_query($abfrage, $link) or die('error making query');
while($row = mysql_fetch_array($result))
{
$blub=$blub.$row['EMail'].",";
}

Oder, wenn das letzte Komma stört:

$abfrage = "SELECT EMail FROM fanclub";
$result = mysql_query($abfrage, $link) or die('error making query');
$cnt = mysql_affected_rows(); // oder auch num_rows, funktioniert aber nicht in allen PHP-Versionen
while($row = mysql_fetch_array($result))
{
$blub=$blub.$row['EMail'];
IF($i+1<$cnt){
$blub .= ", ";
}
$i++;
}

Das aber nur mal so als Denkanstoss.
 
Zuletzt bearbeitet:
Also ich hab jetzt mal Variante 1 probiert, wenn am Ende ein Komma steht scheint das nichts auszumachen (habs mal getestet)
Und um mal zu checken,was dann in der Variable steht, hab ich sie mal per echo ausgeben lassen.
Da stürzen dann sowohl Firefox als auch IE ab. Der Firefox hat mir aber wenigstens noch angezeigt, dass da eine lange Reihe von nur 2 E-Mail-Adressen, die sich immer abwechseln (also so:
E-Mail-Addy1,E-Mail-Addy1,E-Mail-Addy2,E-Mail-Addy1,E-Mail-Addy2,E-Mail-Addy2 ... )
drin steht. Das kann ja nicht sein :(
Mein Code sieht so aus:
Code:
		$abfrage = "SELECT EMail FROM fanclub";
		$result = mysql_query($abfrage, $link) or die('error making query');
		while($row = mysql_fetch_array($result))
			{
		$user=$user.$row['EMail'].",";
		echo $user;
			}
 
Nö, das stimmt an sich schon.

Das ist aber nur Beispielcode, gell.
Das echo in der Schlaufe macht ja keinen Sinn, weil Du so in jedem Durchgang den Inhalt von $User bekommst.

Wenn Du das ausgeben willst, nimmst Du das echo $user sinnvollerweise aus der Schlaufe raus.

$abfrage = mysql_query("SELECT EMail FROM fanclub");
while($row = mysql_fetch_assoc($abfrage))
{
$user = $user.$row['EMail'].",";
}
echo $user;

Wegen dem Absturz:
Ich habe das Snipplet bei mir kurz getestet und es funktioniert einwandfrei.
Resultat ist korrekt und Abstürze gibt es auch keine.

Es ist ja auch irgendwie sinnlos, dass ein Browser wegen PHP-Code (der ja serverseitig läuft) abstürzen sollte.
 
Zuletzt bearbeitet:
Cool, danke, das geht.
Die Browser sind vermutlich abgestürzt weil die Übertragung vom Server überhaupt nicht enden wollte ^^
Jetzt brauche ich vor der 1. E-Mail Adresse aber noch ein " und hinter der letzten auch ein " für die mail-Funktion.
Kannst du mir noch erklären wie man sowas macht?
 
Zurück
Oben