Immer noch Probleme mit dem eigenen Register-Script

  • Themenstarter Themenstarter giga-cooperation
  • Beginndatum Beginndatum
G

giga-cooperation

Hi Tutorials-Community,

ich habe immernoch Probleme mit dem eigenen Register-Script, welches immernoch keine Daten an die Datenbank schickt. Zu mindest habe ich es jetzt geschafft, dass die Daten bis zum step 2 geschickt wird. Ich hoffe, Ihr könnt mir helfen, wie ich das schaffe, das die Daten bis zum step 3 und dann zur Datenbank geschickt wird.

Das Script:
PHP:
 <HTML>
<HEAD>
<TITLE>GIGA COOPERATION - ADMINISTRATOR</TITLE>
</HEAD>
<BODY bgColor=#3d3d3d topmargin=0 leftmargin=0 marginheight=0 marginwidth=0>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY><TR><TD>
<?php
echo "";
### Formular zum ausfüllen, der Daten
if ($_GET['step'] == '1') {
echo "
<FORM action='http://admin.giga-cooperation.de/register.php?step=2' method=post>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY><TR><TD>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY>
<TR><TD align=right>Benutzername:</TD><TD width=5>&nbsp;</TD><TD><INPUT type=text name=benutzername></TD></TR>
<TR><TD align=right>Passwort:</TD><TD width=5>&nbsp;</TD><TD><INPUT type=password name=password></TD></TR>
</TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY>
<TR><TD align=right>Vorname:</TD><TD width=5>&nbsp;</TD><TD><INPUT type=text name=vorname></TD></TR>
<TR><TD align=right>Nachname:</TD><TD width=5>&nbsp;</TD><TD><INPUT type=text name=nachname></TD></TR>
<TR><TD align=right>E-Mailadresse</TD><TD width=5>&nbsp;</TD><TD><INPUT type=text name=email></TD></TR>
</TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY>
<TR><TD width=100%></TD><TD><INPUT type=submit name=submit value='Registrieren'></TD></TR>
</TBODY></TABLE>
</TD></TR></TBODY></TABLE>
</FORM>
";
}

### Daten werden überprüft
if ($_GET['step'] == '2') {
echo "
<FORM action='http://admin.giga-cooperation.de/register.php?step=3' method=post>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY><TR><TD>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY>
<TR><TD align=right>Benutzername:</TD><TD width=5>&nbsp;</TD><TD>$_POST[benutzername]</TD></TR>
<TR><TD align=right>Passwort:</TD><TD width=5>&nbsp;</TD><TD>$_POST[password]</TD></TR>
</TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY>
<TR><TD align=right>Vorname:</TD><TD width=5>&nbsp;</TD><TD>$_POST[vorname]</TD></TR>
<TR><TD align=right>Nachname:</TD><TD width=5>&nbsp;</TD><TD>$_POST[nachname]</TD></TR>
<TR><TD align=right>E-Mailadresse</TD><TD width=5>&nbsp;</TD><TD>$_POST[email]</TD></TR>
</TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY>
<TR><TD width=100%></TD><TD><INPUT type=submit name=submit value='Registrieren'></TD></TR>
</TBODY></TABLE>
</TD></TR></TBODY></TABLE>
</FORM>
";
}

### Daten werden an Datenbank gesendet oder überprüft, ob sie schon vorhanden sind
if ($_GET['step'] == '3') {
### Verbindung zum MySQL-Server
$db = mysql_connect("localhost", "root", "");
### Daten festlegen (SELECT)
$sql = "SELECT * FROM user WHERE benutzername = '$benutzername'";
$result = mysql_db_query("admin", $sql);
### Daten festlegen (INSERT)
$sql2 = "INSERT INTO user (Id, Benutzername, Passwort, Vorname, Nachname, E-Mail) VALUES ('', '$_POST[benutzername]', '$_POST[password]', '$_POST[vorname]', '$_POST[nachname]', '$_POST[email]')";
$result2 = mysql_db_query("admin", $sql2);
if ($result) {
echo "<A style='TEXT-DECORATION: none' href='http://admin.giga-cooperation.de/register.php?step=1' target=_top>Dein Benutzername existiert bereits schon. Suche Dir bitte einen anderen Benutzernamen aus.</A>";
} else {
if ($result2) {
echo mysql_error();
} else {
echo "
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY><TR><TD>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY>
<TR><TD>Dies sind deine Daten, die an die Datenbank geschickt werden:</TD></TR>
</TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY>
<TR><TD align=right>Benutzername:</TD><TD width=5>&nbsp;</TD><TD>$_POST[benutzername]</TD></TR>
<TR><TD align=right>Passwort:</TD><TD width=5>&nbsp;</TD><TD>$_POST[password]</TD></TR>
</TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY>
<TR><TD align=right>Vorname:</TD><TD width=5>&nbsp;</TD><TD>$_POST[vorname]</TD></TR>
<TR><TD align=right>Nachname:</TD><TD width=5>&nbsp;</TD><TD>$_POST[nachname]</TD></TR>
<TR><TD align=right>E-Mailadresse</TD><TD width=5>&nbsp;</TD><TD>$_POST[email]</TD></TR>
</TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY>
<TR><TD><A style='TEXT-DECORATION: none' href='http://admin.giga-cooperation.de/' target=_top>Deine Daten wurden zur Datenbank geschickt.</A></TD></TR>
</TBODY></TABLE>
</TD></TR></TBODY></TABLE>
";
}
}
mysql_close($db);
}
?>
</TD></TR></TBODY></TABLE>
</CENTER>
</BODY>
</HTML>
 
Wie übergibst du von Step 2 zu Step 3 die Daten?!

Kleiner Hinweis bzgl. deines HTML Codes: Es wäre HTML-Konformer wenn du Tag-
Eigenschaften in doppelte Anführungszeichen setzt (xyz="123"), anstatt gar nichts
oder einem einzelnen ' ;)
Der PHP Syntax ist alles andere als schön, so ist's besser:
PHP:
echo '<font size="123">Hier gehts los mit einer Variable '.$_POST['variable'].' und hier gehts weiter.<font>';

p.s.: In meinem ersten Satz versteckt sich dein "Fehler".
 
Hi

wenn man Dir jetzt beschreiben würde, wo der Fehler liegen könnte, wäre dies Hellsehen. In Wirklichkeit überprüfst Du ja keine Eingabe. Du lädst Dir auf step2 alle Daten erneut in ein neues Formular. Warum das ?

Wenn es Dir da um eine Feldvalidierung geht, ist der Ansatz einfach überflüssig.

Du kannst in php, asp und anderen Script- bzw. Programmiersprachen nach einer bestimmten Aktion Variablen-Werte erzeugen und diese im späteren Verlauf abfragen. z.B. bei der Feldvalidierung.

In meinem Beispiel heißt deise Überprüfungsvariable "$allesok". $allesok wird allerdings erst nach dem Abschicken des Formulars geboren und ist vom Standard her gesund und munter, also true!
Nu, jetzt kommt aber jemand daher und schreibt einfach nix in bestimmte Formularfelder, wo er/sie aber was reinschreiben soll oder die Eingaben sind falsch (email), was aber wichtiger Faktor ist für das Fortbestehen von $allesok ist, also wird $allesok krank und wird false.

$allesok als Überprüfungsvariable ist somit Bestandteil der Gesamtabfrage des Formulars.
PHP:
// wenn Formular abgeschickt worden ist
if(isset($_POST['aktion'])) { 
	$allesok = 1;
	// Auflisten aller Fehler, wenn Formular nicht korrekt ausgefüllt
	$allesok = 0;
	}// ende aktion
// aber jetzt, wenn allesok ist
if($allesok){
	// Speichern der Formularfelder in korrekter Weise in eine DB-Tabelle
	// Ausgabe einer Meldung via Browser oder Mail bzw. Weiterleitung etc. 
// aber wenn alles nix hift und die Felder bleiben unausgefüllt
} else {
	// Anzeige des Formulars
}
Ich weiss nicht, ob Du Dich da an einem fertigen Script hochhangelst und meinst, nur das sei das Gelbe vom Ei oder ein eigenes versucht hast zu schreiben, wo Du nicht mit klar kommst. Dies verstehe ich auch nicht

PHP:
if ($result2) {
echo mysql_error();
} else {
echo "
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY><TR><TD>
<TABLE cellSpacing=0 cellPadding=0 border=0><TBODY>
<TR><TD>Dies sind deine Daten, die an die Datenbank geschickt werden:</TD></TR>
</TBODY></TABLE>

Result2 soll nach einem Speichern auf true gesetzt werden und Du fragst hier einen Fehler ab.
Diese ganze Konstruktion ist mir einfach fremd.

Hier ein Ansatz von mir.

PHP:
<?
//Verbindung zur mySQL - Datenbank herstellen
$server = "localhost"; $user = "root"; $pass = "";
$database = "db";
$table ="login";
$verbindung = @mysql_connect($server,$user,$pass)
	or die ("Keine Verbindung möglich");
	mysql_select_db($database, $verbindung)
	or die ("SQL-Fehler = ".mysql_error());

	if(get_magic_quotes_gpc()) 
	  {
		$benutzername = $_POST['reg']['benutzername'];
		$passwort = $_POST['reg']['passwort'];
		$email = $_POST['reg']['email'];
		$name = $_POST['reg']['name'];
		
	  }
	  else
	  {
		$benutzername = addslashes($_POST['reg']['benutzername']);
		$passwort = addslashes($_POST['reg']['passwort']);
		$email = addslashes($_POST['reg']['email']);
		$name = addslashes($_POST['reg']['name']);
	  }

	if(isset($_POST['aktion'])) {
        $allesok = 1;
        
      	if(empty($passwort)) {
        $fehlerPasswort = '<span style="color:red;">
                        Bitte Passwort eingeben</span>';
        $allesok = 0;
        }
		
		if(empty($name)) {
        $fehlerName = '<span style="color:red;">
                        Bitte Namen eingeben</span>';
        $allesok = 0;
        }
		
		if(empty($benutzername)) {
        $fehlerBenutzername = '<span style="color:red;">
                        Bitte Benutzername eingeben</span>';
        $allesok = 0;
        }
		
		if(!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$",$email)) {
		$allesok = 0;
		$fehlerEmail = '<span style="color:red;">
                        Bitte eine korrekte Email-Adresse einfügen</span>';		
    	}
		
		// Select-Statement zum Auslesen der Daten
		  $sql = "SELECT benutzername from $table where benutzername = '$benutzername'";
		  $rs = mysql_query($sql);
		  $total = mysql_num_rows($rs);
		  
		  if ($total > 0){
		  $fehlerBenutzername = '<span style="color:red;">
                        Der Benutzername existiert schon</span>';
		  $allesok = 0;
		  mysql_free_result($rs);
		  }
		  } // ende aktion							
	
		if($allesok) 
		  {
			while (list ($key, $value) = each ($_POST['reg']))
			{
				if($value !=""){
				$ausgabe.=$key.": ".$value."<br>";
				}
			}
		
		$result = "insert into $table (id,benutzername, name, email, passwort)
		 			Values ('','$benutzername','$name','$email','$passwort')";
		$rs_insert = mysql_query($result);
		if($rs_insert) {
			$ausgabe .= "<hr>alle Daten eingefügt";
			}					
	
	
  } else { // Ansonsten Anzeigen des Formulars    

	$ausgabe = '<form name="form1" method="post" 
					action="'.$_SERVER['PHP_SELF'].'">
					<input name="reg[name]" type="text" value="'.$name.'">
					Name '.$fehlerName.'<br>
					<input name="reg[email]" type="text" value="'.$email.'">
					Email '.$fehlerEmail.'<br>
					<input name="reg[benutzername]" type="text" value="'.$benutzername.'">
					Benutzername '.$fehlerBenutzername.'<br>
					<input name="reg[passwort]" type="text" value="'.$passwort.'">
					Passwort '.$fehlerPasswort.'<br>
					<input name="aktion" type="hidden" id="aktion" value="1"><br>
					<input type="submit" name="Submit" value="go"></form>';
  } 
  
// die var $ausgabe kann dann im html eingefügt werden  
echo $ausgabe;
?>
 
Zuletzt bearbeitet:
Zurück