Login und Registration

Zack

cookies vader
Hallo,
folgendes Problem:
Ich habe ein Loginformular und ein Loginformular geschreiben. Es hängt ein Bild der Seite an, denn es ist schwer zu erklären warum der Fehler entsteht.

Jetzt zu meinem Problem: Sobald ich auf "Absenden" meines Registerformulars klicke erfolgt ein automatischer login, egal ob alle Felder richtig und vollständig ausgefüllt wurden oder nicht. Aber warum?

Hier die URL: http://www.fussball-in-geising.de/test/index.php?section=register

PHP:
<?php
    // Wenn bereits eingeloogt

 	if (!empty($_SESSION)){
 		echo "<table border=\"0\"  cellspacing=\"2\" cellpadding=\"2\" background=\"http://www.tutorials.de/forum/images/menu_bg.jpg\">";

	// Adminmenü

    $sql = "SELECT
                Recht
            FROM
                user_rights
            WHERE
               UserID = '".$_SESSION['ID']."';";
    		$result = mysql_query($sql) OR die(mysql_error());
		    $rights = array();
  			while($row = mysql_fetch_assoc($result)) {
       		 $rights[] = $row['Recht'];
            }
            if (in_array("Admin", $rights)){
   			 {
    		 	echo "<tr><td><a class=\"menu\" href=\"index.php?section=admin&site=adminb\">Adminbereich</li></td></tr>\n";
    		 }
            }

	// Usermenu
   	 		foreach ($menu_admin as $dateien => $caption )
   			 {
    		 	echo "<tr><td><a class=\"menu\" href=\"index.php?section=admin&site=".$dateien."\">".$caption."</li></td></tr>\n";
    		 }
			echo "</table>";
 			}

  else{

    // Loginversuch?

  if(isset($_POST['user']) and ($_POST['passwd']))
 {
  $user = $_POST['user'];
  $passwd =md5($_POST['passwd']);
 	$sql = "SELECT * FROM user WHERE name='$user' AND password='$passwd' LIMIT 1";

 	$result = mysql_query($sql) OR die(mysql_error());

	// Session füllen

    if( mysql_num_rows($result) == 1 ){
      $_SESSION['user'] = $user;
      $_SESSION['passwd'] = $passwd;

    $sql = "SELECT id, name, Email
    		FROM user
            WHERE name = '".$_SESSION['user']."';";

    $result = mysql_query($sql) OR die(mysql_error());
    $row = mysql_fetch_assoc($result);

    $_SESSION['ID'] = $row['id'];

    // weiterleiten

	  echo "<script type=\"text/javascript\">
 				location.href=\"index.php?section=admin\";
			</script>";
    }else{
      echo "<p class=\"error\">Falscher Benutzername oder Passwort.</p>".
	  		"	<center>
		    		<form action=\"index.php?section=login\" method=\"POST\">
      					<input type=\"text\" name=\"user\" value=\"Name\">
      					<input type=\"password\" Name=\"passwd\" value=\"Password\"> <br />
      					<input type=\"submit\" name=\"login\" value=\" Einloggen \"> <br />
    				</form>" .
    	 "<a href=\"index.php?section=register\"> Jetzt registrieren </a>".
    			"</center>";  			};
 }else{

 	// wenn nicht eingeloggt

	  echo "
	  	<center>
		    	<form action=\"index.php?section=login\" method=\"POST\">
      			<input type=\"text\" name=\"user\" value=\"Name\"><br />
      			<input type=\"password\" Name=\"passwd\" value=\"Password\"> <br />
      			<input type=\"submit\" name=\"login\" value=\" Einloggen \"> <br />
    			</form>".

    	 "<a href=\"index.php?section=register\"> Jetzt registrieren </a>".
      "</center>";
      }}
?>

register.php
PHP:
<h1> Registrierung </h1>
<?php
$tdnick = 'white';
$tdnam  = 'white';
$tdvnam = 'white';
$tdmail = 'white';
$tdcapt = 'white';

if (!empty($_POST)){

/* Überprüfung */

if(isset($_POST['nick']) AND
		($_POST['nam']) AND
		($_POST['vnam']) AND
		($_POST['mail']) AND
		($_POST['mail2']) AND
		($_POST['captcha'])
		)
		{
        /* bedingungen überprüfen */

		/* mail prüfuen */
			if(($_POST['mail']==$_POST['mail2']))
			{
			/* In Datenbank eintaragen */

			/* E-Mail senden */

			$nick = $_POST['nick'];
			$nam  = $_POST['nam'];
			$vnam = $_POST['vnam'];
			$mail = $_POST['mail'];
				/* Passwort zusammen bauen	 */
				$passwort = zahl().buchstabe().zahl().zahl().buchstabe().zahl().zahl().buchstabe().zahl();


				/* Empfänger */
				$empfaenger = array('Damir<'.$mail.'>');

				/* Empfänger CC */
				$empfaengerCC = array('Damir CC<'.$mail.'>');

				/* Empfänger BCC */
				$empfaengerBCC = array('Damir BCC<'.$mail.'');

				/* Absender */
				$absender = 'Anmeldung@fussball-in-geising.de<anmeldung@fussball-in-geising.de>';

				/* Rueckantwort */
				$reply = 'Anmeldung@fussball-in-geising.de<anmeldung@fussball-in-geising.de>';

				/* Betreff */
				$subject = 'Registrierung';

				/* Nachricht */
				$message = '<html>
	    			<head>
    	    			<title>Vielen dank für Ihre Registrierung</title>
    				</head>
    				<body>' .
    					'Vielen Danke für ihre Registrierung bei www.fussball-in-Geising.de<br />' .
    					'Hier Ihre Benutzerdate:<br />
        					<table width="214" border="0" cellspacing="0" cellpadding="0">
            					<tr>
                					<td>Benutzername</td>
	                				<td>'.$nick.'</td>
    	        				</tr>
        	    				<tr>
            	    				<td>Passwort</td>
                					<td>'.$passwort.'</td>
            					</tr>
	        				</table>' .
    	    			'Sie können ihr Passwort in den Eigenen Daten ändern.<br />' .
        				'<br />' .
        				'Dies ist eine automatische E-Mail, bitte senden Sie keine Antwort.
	    			</body>
					</html>
				';

				/* Baut Header der Mail zusammen */
				$headers .= 'From:' . $absender . "\n";
				$headers .= 'Reply-To:' . $reply . "\n";
				$headers .= 'X-Mailer: PHP/' . phpversion() . "\n";
				$headers .= 'X-Sender-IP: ' . $REMOTE_ADDR . "\n";
				$headers .= "Content-type: text/html\n";

				// Extrahiere Emailadressen
				$empfaengerString = implode(',', $empfaenger);
				$empfaengerCCString = implode(',', $empfaengerCC);
				$empfaengerBCCString = implode(',', $empfaengerBCC);

				$headers .= 'Cc: ' . $empfaengerCCString . "\n";
				$headers .= 'Bcc: ' . $empfaengerBCCString . "\n";

				/* Verschicken der Mail */
				mail($empfaengerString, $subject, $message, $headers);

				/* Automatische weiterleitung */
				echo "Erfolgrei registriert. Ihnen wird in wenigen Minuten ein Passwort an die angegebene Email-Adresse gesendet. Bitte überprüfen Sie ihr Postfach.";
				}else{
					$tdmail = 'red';
				/* Mail stimmt nicht */
	  	    	echo "<p class=\"error\">Die eingegebenen E-Mailadressen oder Passwörter stimmen nicht überein.</p>";
				}
  	    	}else{
  	    	/* Pflichtfelder stimmen nicht */
  	    	$tdnick = 'red';
			$tdnam  = 'red';
			$tdvnam = 'red';
			$tdmail = 'red';
			$tdcapt = 'red';
  	    	echo "<p class=\"error\">Bitte füllen Sie alle Pflichtfelder aus!</p>";
  	    }
}
/* Wenn noch nicht "senden" gedrückt wurde */


/* Registerformular*/
 echo"<center>" .
 		"<form action=\"index.php?section=register\" method=\"POST\"> <br />" .
 		"<table border=\"0\" width=\"100%\">" .
		"<tr>" .
		"<td>" .
			"<p class=\"rot\">Pflicht Angaben:</p>" .
		"</td>" .
		"<td>" .
		"</td>" .
		"</tr>" .
/* Pflichtfelder */
 		"<tr>" .
		"<td id=\"".$tdnick."\">" .
 			"Benutzername" .
 		"</td>" .
 		"<td>" .
 			"<input type=\"text\" name=\"nick\" > <br />" .
 		"</td>" .
		"</tr>" .
 		"<tr>" .
		"<td id=\"".$tdnam."\">" .
 			"Name" .
 		"</td>" .
 		"<td>" .
 			"<input type=\"text\" name=\"nam\" > <br />" .
 		"</td>" .
		"</tr>" .
 		"<tr>" .
		"<td id=\"".$tdvnam."\">" .
 			"Vorname" .
 		"</td>" .
 		"<td>" .
 			"<input type=\"text\" name=\"vnam\" > <br />" .
 		"</td>" .
		"</tr>" .
		"<tr>" .
		"<td id=\"".$tdmail."\">" .
		"E-Mail" .
 		"</td>" .
 		"<td>" .
 			"<input type=\"text\" name=\"mail\" > <br />" .
 		"</td>" .
		"</tr>" .
		"<tr>" .
		"<td id=\"".$tdmail."\">" .
		"E-Mail wiederholen" .
 		"</td>" .
 		"<td>" .
 			"<input type=\"text\" name=\"mail2\" > <br />" .
 		"</td>" .
		"</tr>" .
		"<tr height=\"10px\">" .
		"</tr>" .
		"<tr>" .
		"<td id=\"".$tdcapt."\">" .
			"<img src=\"capt/mccapt.php\" alt=\"\" />" .
		"</td>" .
		"<td>" .
			"<input type=\"text\" name=\"captcha\" >" .
		"</td>" .
		"</tr>".
		"<tr>" .
		"<td>" .
			"<p class=\"rot\">Persönliche Angaben:</p>" .
		"</td>" .
		"<td>" .
		"</td>" .
		"</tr>" .
/* Optionale Felder */

		"<tr>" .
		"<td>" .
 			"Spiel-Position" .
 		"</td>" .
		"<td>" .
 			"<input type=\"text\" Name=\"position\"> <br />" .
 		"</td>" .
		"</tr>" .

		"<tr>" .
		"<td>" .
 			"Telefonnummer (Vorwahl / Nummer)" .
 		"</td>" .
		"<td>" .
 			"<input type=\"text\" Name=\"tele\" <br />" .
 		"</td>" .
		"</tr>" .

		"<tr>" .
		"<td>" .
 			"Wohnort" .
 		"</td>" .
		"<td>" .
 			"<input type=\"text\" Name=\"wohnort\" > <br />" .
 		"</td>" .
		"</tr>" .

		"<tr>" .
		"<td>" .
 			"Straße / Nr." .
 		"</td>" .
		"<td>" .
 			"<input type=\"text\" Name=\"stra\" > <br />" .
 		"</td>" .
		"</tr>" .

		"<tr>" .
		"<td>" .
 			"Homepage:" .
 		"</td>" .
		"<td>" .
 			"<input type=\"text\" Name=\"homepage\" > <br />" .
 		"</td>" .
		"</tr>" .

		"<tr>" .
		"<td>" .
 			"ICQ-Nr." .
 		"</td>" .
		"<td>" .
 			"<input type=\"text\" Name=\"icq\" > <br />" .
 		"</td>" .
		"</tr>" .

		"<tr>" .
		"<td>" .
 			"MSN-Name" .
 		"</td>" .
		"<td>" .
 			"<input type=\"text\" Name=\"msn\" > <br />" .
 		"</td>" .
		"</tr>" .
		"</table>" .
		"<br />" .
 			"Ja, ich habe die <a href=\"index.php?section=bedingung \">allgemeinen Bedingungen</a> gelesen und akzeptiere diese." .

 			"<input type=\"checkbox\" name=\"bedingung\" value=\"1\" /> <br /><br />" .

 			"<input type=\"submit\" name=\"send\" value=\" Absenden \">" .
 		"</form>" .
     "</center>";
?>

functions.php
PHP:
function buchstabe()
{
   $buchstaben = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
         $random = rand(0,25);

         return $buchstaben[$random];
}

function zahl()
{
	$zahl = rand(0,9);

	return $zahl;
}
?>
Ich habe extra darauf geachtet unterschiedliche POST Indexe zu verwenden.
 

Anhänge

  • hp.jpg
    hp.jpg
    117,3 KB · Aufrufe: 54
In den angegebenen Dateien konnte ich so keinen Fehler finden, daher kann ich auch nur raten. Wahrscheinlich ist deine Abfrage empty($_SESSION) zu allgemein, arbeitet das Captcha vielleicht mit Sessions und löst damit den Teil aus? Änder die mal in

if (isset($_SESSION['user'])

Wenn das nicht hilft könntest du dir mal mit print_r($_SESSION) den Inhalt anzeigen lassen, dann weißt du immerhin schon mal auf welchen Wert die Variablen sind und kannst daran vielleicht ablesen woher die Daten kommen.

EDIT:
Mit deaktiviertem Javascript funktioniert zwar der Login, aber nicht der Logout... eine etwas sicherere Weiterleitung erreichst du mit

PHP:
header('Location: index.php?section=admin&site=logout');
exit;

Das kann zwar genauso vom Browser ignoriert werden wie das Javascript, wird aber wahrscheinlich häufiger angenommen.
 
Zuletzt bearbeitet:
Danke, dass hat den Fehler behoben.

Ja das Captcha arbeitet mit Sessions, irgendwie muss ja der Inhalt der Grafik wieder gegeben werden damit ich diese überprüfen kann, das war warscheinlich das Problem.
 
Zurück