Problem mit Fehlerausgabe bei Benutzeranmeldungsscript

Jan-Frederik Stieler

Monsterator
Moderator
Hallo,
ich habe dieses Formular geschrieben um einen Benutzeraccount anzulegen.
Nun habe ich aber ein Problem mit der Fehlerausgabe, es wird immer $login1 ausgegeben, auch wenn ich das Formular leer abschicke.
Ich raffs einfach nicht. Hab schon echt lange vor dem Fehler zugebracht. Vielleicht kann sich das mal jemand anschauen.

index.php
PHP:
<div class="tab-pane fade in" id="create">
				<?php
					if ((isset($_GET["error1"])) && (!empty($_GET["error1"]))){
						echo "
							<div class='alert alert-error fade in'>
		 						<button type='button' class='close' data-dismiss='alert'>&times;</button>
								Eingabefehler. Bitte alle Felder korekt ausfüllen!
							</div>";
					}
					elseif ((isset($_GET["error2"])) && (!empty($_GET["error2"]))){
						echo "
							<div class='alert alert-error fade in'>
		 						<button type='button' class='close' data-dismiss='alert'>&times;</button>
								Fehler beim Speichern des Benutzernames.
							</div>";
					}
					elseif ((isset($_GET["error3"])) && (!empty($_GET["error3"]))){
						echo "
							<div class='alert alert-error fade in'>
		 						<button type='button' class='close' data-dismiss='alert'>&times;</button>
								Benutzername schon vorhanden.
							</div>";
					}
					else {
						echo "";
					}
				?>
				<form class="validate form-horizontal" action="eintragen.php" method="post">
					<fieldset>
						<div id="legend">
	                        <legend class="">Create Account</legend>
						</div>
	                    <div class="control-group"> 
							<label class="control-label" for="username_create">Benutzername</label>
							<div class="controls">
								<input type="text" id="username_create" name="username_create" placeholder="Benutzername eintragen" class="input-xlarge">
							</div>
						</div>
						<div class="control-group">
							<label class="control-label" for="password_create">Passwort</label>
							<div class="controls">
								<input type="text" id="password_create" name="password_create" placeholder="Passwort eintragen" class="input-xlarge">
							</div>
						</div>
						<div class="control-group">
							<label class="control-label" for="password_create2">Passwort wiederholen</label>
							<div class="controls">
								<input type="text" id="password_create2" name="passwort_create2" placeholder="Passwort wiederholen" class="input-xlarge">
							</div>
						</div>
						<div class="control-group">
							<div class="controls">
								<button class="btn" type="submit">Create Account</button>
							</div>
						</div>
					</fieldset>
				</form>
			</div>

eintragen.php
PHP:
<?php
	//Datenbankverbindung herstellen und Datenbank auswählen
	include('config/database.php');

	$username = $_POST["username_create"]; 
	$passwort = $_POST["passwort_create"]; 
	$passwort2 = $_POST["passwort_create2"]; 
	
	$error1 = header("location: index.php?error1=alert#create");
	$error2 = header("location: index.php?error2=alert#create");
	$error3 = header("location: index.php?error3=alert#create");
	
	$login1 = header("location: index.php?login1=alert#login");


	if($passwort != $passwort2 OR $username == "" OR $passwort == "") 
    { 
	    echo $error1; 
		exit; 
    } 

	$passwort = md5($passwort); 
	
	$result = mysql_query("SELECT id FROM login WHERE username LIKE '$username'"); 
	$menge = mysql_num_rows($result); 
	
	if($menge == 0){ 
	    $eintrag = "INSERT INTO login (username, passwort) VALUES ('$username', '$passwort')"; 
	    $eintragen = mysql_query($eintrag); 
	
		if($eintragen == true){ 
			echo $login1; 
		} 
		else { 
			echo $error2; 
		}
	} 
	
	else { 
		echo $error3; 
	} 
?>

Und ich hab da mal eine grundsätzliche Frage, muss ich auf allen PHP-Seiten wo ich was in die Datenbank schreibe bzw. abrufe diese ganz am Anfang die Verbindung zur Datenbank herstellen
oder kann man das irgendwie global machen?

Viele Grüße
 
Und ich hab da mal eine grundsätzliche Frage, muss ich auf allen PHP-Seiten wo ich was in die Datenbank schreibe bzw. abrufe diese ganz am Anfang die Verbindung zur Datenbank herstellen
oder kann man das irgendwie global machen?

Um kurz nur darauf schnell zu antworten:

DB-Connection natürlich immer aufbauen, bevor man irgendwie mit der DB interagieren möchte. Ansonsten gibt es noch persistente Verbindungen ("The mysqli Extension and Persistent Connections"). Da könntest du dich mal einlesen wg. Vor- und Nachteile.
 
Zum Fehler:
Er gibt $login1 aus und vermutich auch $error2, weil die nie belegt wurden, also nicht existieren und er sie deswegen als String ausgibt.

€dit, ich sehe gerade, sie sind oben definiert, nun denn:

Hast du statt den Variablen einfach mal die header anweisung hingeschrieben?
Leitet er dann weiter?
 
Zuletzt bearbeitet:
Zurück