login schon vergeben....

Joar so....habe das ganze nochma geändert, damit auch die Fehler im Contentbereich und nicht mit echo ausgegeben werden.

PHP:
$edit = $user->register($_POST['login'], $_POST['email1'], $_POST['email1_2']);
	   if(is_array($edit))
       {
             foreach($edit as $err)
             {
                  $content .= $err.'<br />';
             }
       }

So aber anscheinend wird dort immer noch etwas 2 mal durchlaufen....denn ich bekomme die Fehler nun doppelt ausgegeben... :(

MFG Niels
 
Boah, das gibts doch nich :) Schick (oder häng) mal alle relevanten Dateien (an). Kann doch nicht sein, dass wir das jetzt net hinbekommen ;)
 
ok also hier wird die der ganze Registrationsvorgang gesteuert:
PHP:
// Registrieren
if($_GET['act'] == "register")
{
  if($user->checkuser($_SESSION['user_login'], $_SESSION['user_id']) == FALSE)
  {
     if($_GET['do'] == "write")
     {
	   $edit = $user->register($_POST['login'], $_POST['email1'], $_POST['email1_2']);
	   if(is_array($edit))
       {
             foreach($edit as $err)
             {
                  $content .= $err.'<br />';
             }
       }
     }
     else
     {
       $content = $user->register_form();
     }
  }
  else
  {
    $content = $language['loggedin'];
  }
}

funktion $user->checkuser();
PHP:
function checkuser($user_login, $user_id)
			{
			    if (isset($user_login) && isset($user_id))
				{
				   if(!empty($user_login) && !empty($user_id))
				   {
				      $query = $this->db->query("SELECT * FROM `user` WHERE login='".$user_login."' AND id='".$user_id."'");
					  if($this->db->num_rows($query) <= 0)
					  {
					    return FALSE;
					  }
					  else
					  {
					    return TRUE;
					  }
				   }
				   else
				   {
				      return FALSE;
				   }
				}
				else
				{
				   return FALSE;
				}
			}

Methode $user->register();
PHP:
// Register
			function register($user_login, $user_email1, $user_email2)
            {
                 $fehler = array();

                      // Validierung der Daten
                      if( empty($user_login) || empty($user_email1) || empty($user_email2) ) 
					  {
                          $fehler[] = $this->lang['register_notallfilled'];
                      }
                      if( $user_email1 != $user_email2 ) 
					  {
                          $fehler[] = $this->lang['register_mailsnotsame'];
                      }
                      if( !$this->proof->email_proof($user_email1) ) 
					  {
                          $fehler[] = $this->lang['register_mailnotallowed'];
                      }
                          $result = $this->db->query("SELECT 1 FROM `user` WHERE login='".mysql_real_escape_string($user_login)."'");
                          if( $this->db->num_rows($result) > 0 ) 
						  {
                              $fehler[] = $this->lang['register_useralrexists'];
                          }

                     // war Validierung erfolgreich, wird der neue Benutzer angelegt
                     if( empty($fehler) ) 
					 {
                         $result = $this->db->query("INSERT INTO `user` (login, password, rights, email1) VALUES ('".mysql_real_escape_string($user_login)."', '".md5($this->gen_pw(10))."', '1', '".mysql_real_escape_string($user_email1)."')");
                     
					    $fehler[] = "Vielen Dank für die Registration.<br>Sie werden in kürze eine eMail mit Ihren Zugangsdaten erhalten.";
						header("refresh:3;url=index.php");
                     }

                     $fehler[] = $this->lang['java_back'];

                     return $fehler;
            }

So und hier nochma die db->query-Methode....is halt nur ne stinknormale DB Methode :)
PHP:
public function query($querystring)
        {
            if ($this->connection == false) $this->connect();
            if ($this->connection == false) return;
            $this->sqlquery = @mysql_query($querystring, $this->connection) or die("{query} Database Error : ".mysql_errno()." : ".mysql_error());
        
        return $this->sqlquery;
        }

HMM ich glaube das dürfte soweit alles sein :)

MFG Niels

THX schonmal dass du sonne Ausdauer hast :)

PS: Werde mir antworten erst morgen anschauen können...ich rbauch nun unbedingt eine gehörige Portion Schlaf.... gute Nacht :)
 
Zuletzt bearbeitet:
Sorry, aber ich kann den Fehler einfach nicht finden. Was du noch kürzen kannst ist die checkuser-Funktion, aber ich verstehe auch nicht, warum du da extra in der Datenbank abfragst? Wenn die Session gesetzt ist, dann wird er ja schon eingeloggt sein, das wirst du ja vorher schon geprüft haben, oder? Oder werden für nicht-eingeloggte User auch die $_SESSIONs gesetzt?
PHP:
<?php
function checkuser($user_login, $user_id)
{
	$query = $this->db->query("SELECT 1 FROM `user` WHERE `login`='$user_login' AND `id`='$user_id'");
  if($this->db->num_rows($query) < 1)
  {
    return FALSE;
  }
  else
  {
    return TRUE;
	}
}  
?>
 
So Guten Morgen :)

Also das mit den Session^^

Ich dachte mir es wäre vielleicht sicherer die Sessioninhalte noch zu überprüfen, denn vielleicht ist es ja möglich Sessions zu manipulieren...habe mich mit dem Thema noch nicht auseinandergesetzt.....deswegen....

Aber wenn es auf Sessionebene keine Möglichkeit gibt, dies zu manipulieren ist klar , dass man das ganze vereinfachen kann.

Was ich nur gehört habe ist, dass man auf jeden Fall Cookies beeinflussen kann...sprich sollte ich später noch den Login per Cookies hinzufügen soltle ich die Cookies ja wirklich erstmal überprüfen....

Schade dass du nix findest... :(

Ich hoffe irgendwer kann noch helfen, denn ich weiß ehrlich nicht weiter im mom :)

MFG Niels
 
Also was ich nun noch dazusagen kann ist:

-> Der User wird nur einmal in die Datenbank geschrieben..... aber ich bekomme den Fehler
---> USername existiert bereits, daher denke ich, dass das Script 2 mal durchlaufen wird und beim ersten mal der USer in die DB egschrieben wird beim 2. mal wird er als schon existierend erkannt.

MFG Niels
 
Also das mit der doppelten Ausgabe lag am array...

Habe das array nun entfernt und nun wird die Fehlerausgabe auch nurnoch einmal ausgegeben.

PHP:
// Register
			function register($user_login, $user_email1, $user_email2)
            {

                      // Validierung der Daten
                      if( empty($user_login) || empty($user_email1) || empty($user_email2) ) 
					  {
                          $fehler .= $this->lang['register_notallfilled']."<br>";
                      }
                      if( $user_email1 != $user_email2 ) 
					  {
                          $fehler .= $this->lang['register_mailsnotsame']."<br>";
                      }
                      if( !$this->proof->email_proof($user_email1) ) 
					  {
                          $fehler .= $this->lang['register_mailnotallowed']."<br>";
                      }
                          $result = $this->db->query("SELECT 1 FROM `user` WHERE login='".mysql_real_escape_string($user_login)."'");
                          if( $this->db->num_rows($result) > 0 ) 
						  {
                              $fehler .= $this->lang['register_useralrexists']."<br>";
                          }

                     // war Validierung erfolgreich, wird der neue Benutzer angelegt
                     if( empty($fehler) ) 
					 {
                         $result = $this->db->query("INSERT INTO `user` (login, password, rights, email1) VALUES ('".mysql_real_escape_string($user_login)."', '".md5($this->gen_pw(10))."', '1', '".mysql_real_escape_string($user_email1)."')");
                     
					    $fehler .= "Vielen Dank für die Registration.<br>Sie werden in kürze eine eMail mit Ihren Zugangsdaten erhalten.<br>";
						header("refresh:3;url=index.php");
                     }

                     $fehler .= $this->lang['java_back'];
					 
                     return $fehler;
					 
            }

Nur nun besteht wieder das Problem mit dem User.

Also wenn ich mich registrieren will und nen loginnamen eingebe der in der DB noch nicht vorkommt....so kommt immer der Fehler dass der USer bereits existiert obwohl der user überhaupt net existiert.....trotz der Fehlerausgabe wird der User aber in die Datenbank egschrieben....

Existiert ein User schon in der DB dann bekomm ich auch die Fehlerausgabe dass der USer bereits existiert aber der USer wird nicht überschrieben...

MFG Niels
 
Zurück