PHP Registrierung erstellen

Berger89

Grünschnabel
Hi,

ich möchte in meine Homepage eine Registrierung einbinden.
Nur leider werden die Daten die ich eingeb nicht an die Datenbank weitergegeben...
Weiß jemand was ich falsch mache?
Die Homepage und die Datenbank sind auf funpic drauf.

PHP:
<?php
error_reporting(E_ALL);
$MYSQL_HOST = 'localhost';
$MYSQL_USER = 'bergerxx';
$MYSQL_PASS = 'xxxxxxxxxxxxxxxxxxx';
$MYSQL_DATA = 'bergerxx';

$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());

@session_start();

if(isset($_POST['submit']) AND $_POST['submit']=='Registrieren'){
// Fehlerarray anlegen
$errors = array();
// Prüfen, ob alle Formularfelder vorhanden sind
if(!isset($_POST['Nickname'],
$_POST['Passwort'],
$_POST['Passwortwiederholung'],
$_POST['Email'],
$_POST['Show_Email'],
$_POST['Homepage'],
$_POST['Wohnort'],
$_POST['ICQ'],
$_POST['AIM'],
$_POST['YIM'],
$_POST['MSN']))
// Ein Element im Fehlerarray hinzufügen
$errors = "Bitte benutzen Sie das Formular aus dem Registrierungsbereich";
else{
// Prüfung der einzelnen obligatorischen Felder
// Alle Nicknames und Emailadressen zum Vergleich aus der Datenbank holen
$nicknames = array();
$emails = array();
$sql = "SELECT
Nickname,
Email
FROM
User
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
while($row = mysql_fetch_assoc($result)){
$nicknames[] = $row['Nickname'];
$emails[] = $row['Email'];
}
// Prüft, ob ein Nickname eingegeben wurde
if(trim($_POST['Nickname'])=='')
$errors[]= "Bitte geben Sie einen Nickname ein.";
// Prüft, ob der Nickname mindestens 3 Zeichen enthält
elseif(strlen(trim($_POST['Nickname'])) < 3)
$errors[]= "Ihr Name muss mindestens 3 Zeichen lang sein.";
// Prüft, ob der Nickname nur gültige Zeichen enthält
elseif(!preg_match('/^\w+$/', trim($_POST['Nickname'])))
$errors[]= "Benutzen Sie bitte nur alphanumerische Zeichen (Zahlen, Buchstaben und den Unterstrich).";
// Prüft, ob der Nickname bereits vergeben ist
elseif(in_array(trim($_POST['Nickname']), $nicknames))
$errors[]= "Dieser Nickname ist bereits vergeben.";
// Prüft, ob eine Email-Adresse eingegeben wurde
if(trim($_POST['Email'])=='')
$errors[]= "Bitte geben Sie Ihre Email-Adresse ein.";
// Prüft, ob die Email-Adresse gültig ist
elseif(!preg_match('§^[\w\.-]+@[\w\.-]+\.[\w]{2,4}$§', trim($_POST['Email'])))
$errors[]= "Ihre Email Adresse hat eine falsche Syntax.";
// Prüft, ob die Email-Adresse bereits vergeben ist
elseif(in_array(trim($_POST['Email']), $emails))
$errors[]= "Diese Email-Adresse ist bereits vergeben.";
// Prüft, ob ein Passwort eingegeben wurde
if(trim($_POST['Passwort'])=='')
$errors[]= "Bitte geben Sie Ihr Passwort ein.";
// Prüft, ob das Passwort mindestens 6 Zeichen enthält
elseif (strlen(trim($_POST['Passwort'])) < 6)
$errors[]= "Ihr Passwort muss mindestens 6 Zeichen lang sein.";
// Prüft, ob eine Passwortwiederholung eingegeben wurde
if(trim($_POST['Passwortwiederholung'])=='')
$errors[]= "Bitte wiederholen Sie Ihr Passwort.";
// Prüft, ob das Passwort und die Passwortwiederholung übereinstimmen
elseif (trim($_POST['Passwort']) != trim($_POST['Passwortwiederholung']))
$errors[]= "Ihre Passwortwiederholung war nicht korrekt.";
}
// Prüft, ob Fehler aufgetreten sind
if(count($errors)){
echo "Ihr Account konnte nicht erstellt werden.<br>\n".
"<br>\n";
foreach($errors as $error)
echo $error."<br>\n";
echo "<br>\n".
"Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Registrierungsformular</a>\n";
}
else{
// Daten in die Datenbanktabelle einfügen
$sql = "INSERT INTO
User
(Nickname,
Email,
Passwort,
Show_Email,
Registrierungsdatum,
Wohnort,
Homepage,
ICQ,
AIM,
YIM,
MSN
)
VALUES
('".mysql_real_escape_string(trim($_POST['Nickname']))."',
'".mysql_real_escape_string(trim($_POST['Email']))."',
'".md5(trim($_POST['Passwort']))."',
'".mysql_real_escape_string(trim($_POST['Show_Email']))."',
CURDATE(),
'".mysql_real_escape_string(trim($_POST['Wohnort']))."',
'".mysql_real_escape_string(trim($_POST['Homepage']))."',
'".mysql_real_escape_string(trim($_POST['ICQ']))."',
'".mysql_real_escape_string(trim($_POST['AIM']))."',
'".mysql_real_escape_string(trim($_POST['YIM']))."',
'".mysql_real_escape_string(trim($_POST['MSN']))."'
)
";
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
echo "Vielen Dank!\n<br>".
"Ihr Accout wurde erfolgreich erstellt.\n<br>".
"Sie können sich nun mit Ihren Daten einloggen.\n<br>".
"<a href=\"login.php\">Zum Login</a>\n";

}

}
else {
echo "<form ".
" name=\"Registrierung\" ".
" action=\"".$_SERVER['PHP_SELF']."\" ".
" method=\"post\" ".
" accept-charset=\"ISO-8859-1\">\n";
echo "<h5>Pflicht Angaben</h5>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"min.3\nmax.32\nNur Zahlen, Buchstaben und Unterstrich\">\n".
"Nickname :\n".
"</span>\n";
echo "<input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"min.6\">\n".
"Passwort :\n".
"</span>\n";
echo "<input type=\"password\" name=\"Passwort\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"min.6\">\n".
"Passwort wiederholen:\n".
"</span>\n";
echo "<input type=\"password\" name=\"Passwortwiederholung\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"Ihre.Adresse@Ihr-Anbieter.de\">\n".
"Email-Adresse:\n".
"</span>\n";
echo "<input type=\"text\" name=\"Email\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span>\n".
"Email-Adresse anzeigen:\n".
"</span>\n";
echo "<input type=\"radio\" name=\"Show_Email\" value=\"1\"> ja\n";
echo "<input type=\"radio\" name=\"Show_Email\" value=\"0\" checked> nein\n";
echo "<h5>Freiwillige Angaben</h5>\n";
echo "<span style=\"font-weight:bold;\">\n".
"Homepage :\n".
"</span>\n";
echo "<input type=\"text\" name=\"Homepage\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"Wohnort :\n".
"</span>\n";
echo "<input type=\"text\" name=\"Wohnort\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"ICQ :\n".
"</span>\n";
echo "<input type=\"text\" name=\"ICQ\" maxlength=\"20\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"AIM :\n".
"</span>\n";
echo "<input type=\"text\" name=\"AIM\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"YIM :\n".
"</span>\n";
echo "<input type=\"text\" name=\"YIM\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"MSN :\n".
"</span>\n";
echo "<input type=\"text\" name=\"MSN\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Registrieren\">\n";
echo "<input type=\"reset\" value=\"Zurücksetzen\">\n";
echo "</form>\n";
}
?>

So sieht die Registrierung aus:http://i42.tinypic.com/s5ctuv.jpg
 
Zuletzt bearbeitet:
Hi,
da du ja schon mit mysql_error() und gutem eigenem Error-Reporting arbeitest: Kannst du uns sagen, was für ein Fehler auftritt? Dann können wir dir besser helfen.

Eine Sache am Rande: Ich würde für das Formular den PHP Bereich mit normalem HTML unterbrechen, also:
PHP:
[...]
}
else {
?>
<form name="Registrierung" action="<?=$_SERVER['PHP_SELF']?>" method="post" accept-charset="ISO-8859-1">
<h5>Pflicht Angaben</h5>
[...]
<input type="reset" value="Zurücksetzen">
</form>
<?php
}
?>
Macht das Ganze etwas lesbarer ;)
 
Ich danke schon mal für deine Hilfe.

Also das Problem ist, dass wenn ich Daten auf der homepage eingebe und dann auf Registrieren drücke keine Daten in die Datenbank eingetragen werden. Es erscheint keine Fehlermeldung.
 
Also ich habe mir die Tabelle gerade so angelegt:
Code:
CREATE TABLE `user` (
  `Nickname` varchar(255) collate latin1_general_ci NOT NULL,
  `Email` varchar(255) collate latin1_general_ci NOT NULL,
  `Passwort` varchar(255) collate latin1_general_ci NOT NULL,
  `Show_Email` varchar(255) collate latin1_general_ci NOT NULL,
  `Registrierungsdatum` date NOT NULL,
  `Wohnort` varchar(255) collate latin1_general_ci NOT NULL,
  `Homepage` varchar(255) collate latin1_general_ci NOT NULL,
  `ICQ` varchar(255) collate latin1_general_ci NOT NULL,
  `AIM` varchar(255) collate latin1_general_ci NOT NULL,
  `YIM` varchar(255) collate latin1_general_ci NOT NULL,
  `MSN` varchar(255) collate latin1_general_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
Funktioniert wunderbar mit diesen Daten:
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    20,2 KB · Aufrufe: 167
Die Fehlermeldung sagt dir, dass du deine Session zu spät startest, die Session muss vor JEDER Ausgabe stehen, einschließlich des Headers.
 
Hab jetzt irgendwas herumgemacht und jetzt kommt die Meldung nicht mehr.
Aber es werden noch immer nicht die Daten auf die Datenbank übertragen.
Vllt kann mir jemand mal so ein Login+Registrierung erstellen? Würde ihm dann auch die funpic Zugangsdaten geben
 
Sooo…
Hier mal eine Version von mir. Bitte einmal so ausprobieren und berichten ...

PHP:
<?php
// Vom benutzer eingegebene Daten "einlesen"
$user_nickname   = $_POST['Nickname'];
$user_password   = $_POST['Passwort'];
$user_password2  = $_POST['Passwortwiederholung'];
$user_email      = $_POST['Email'];
$user_email_show = $_POST['Show_Email'];
$user_homepage   = $_POST['Homepage'];
$user_wohnort    = $_POST['Wohnort'];
$user_icq		 = $_POST['ICQ'];
$user_aim		 = $_POST['AIM'];
$user_yim	     = $_POST['YIM'];
$user_msn		 = $_POST['MSN'];

// MySQL Zugangsdaten
define("MYSQL_HOST", "localhost");
define("MYSQL_USER","bergerxx");
define("MYSQL_PASS", "xxxxxxxxxxxxxxxxxxx");
define("MYSQL_DATA", "bergerxx");

// MySQL Datenbankverbindung herstellen und Datenbank auswählen
$mysql_db_connect = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) 
                    OR die("Error: ".mysql_error());
$mysql_db_select  = mysql_select_db(MYSQL_DATA) 
                    OR die("Error: ".mysql_error());

if(isset($_POST['submit']) AND $_POST['submit']=='Registrieren')
{
	// Fehlerarray anlegen
	$errors = array();
	
	// Prüfen, ob alle Formularfelder vorhanden sind
	if(stlen($user_nickname,
	          $user_password,
			  $user_password2,
			  $user_email,
			  $user_email_show,
			  $user_homepage,
			  $user_wohnort,
			  $user_icq,
			  $user_aim,
			  $user_yim,
			  $user_msn) < 1)
	{
		// Ein Element im Fehlerarray hinzufügen
        $errors = "Bitte benutzen Sie das Formular aus dem Registrierungsbereich";
	}   
	else
	{
		// Prüfung der einzelnen obligatorischen Felder
		// Alle Nicknames und Emailadressen zum Vergleich aus der Datenbank holen
		$nicknames = array();
		$emails = array();
		$sql = "SELECT Nickname,Email FROM User WHERE Nickname = '$user_nickname' AND Email = '$user_email'";
		
		$pruefe_nickname_email = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
		
		if ($pruefe_nickname_email)
		{
			$pruefe_nickname_email_row = mysql_num_rows($pruefe_nickname_email)
			
			if ($pruefe_nickname_email_row > 1)
			{
				echo "Der eingegebene Nick bzw. eMailadresse werden schon verwendet";
			}
			else
			{
				$sql_registrieren = "INSERT INTO User (Nickname,Email,Passwort,Show_Email,Registrierungsdatum,Wohnort,
				                    Homepage,ICQ,AIM,YIM,MSN )VALUES('$user_nickname', '$user_email', '$user_password',
									'$user_email_show', 'CURDATE()', '$user_wohnort', '$user_homepage', '$user_icq', 
									'$user_aim', '$user_yim', '$user_msn')"; 
				
				$register_start_query = mysql_query($sql_registrieren);
				
				if ($register_start_query)
				{
					echo "Vielen Dank!\n<br>".
					     "Ihr Accout wurde erfolgreich erstellt.\n<br>".
					     "Sie können sich nun mit Ihren Daten einloggen.\n<br>".
					     "<a href=\"login.php\">Zum Login</a>\n";
				}
				else
				{
					echo "Bei der Registrierung trat ein Fehler auf!";
				}
			}
		}
	}
}
else
{		
echo "<form ".
" name=\"Registrierung\" ".
" action=\"".$_SERVER['PHP_SELF']."\" ".
" method=\"post\" ".
" accept-charset=\"ISO-8859-1\">\n";
echo "<h5>Pflicht Angaben</h5>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"min.3\nmax.32\nNur Zahlen, Buchstaben und Unterstrich\">\n".
"Nickname :\n".
"</span>\n";
echo "<input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"min.6\">\n".
"Passwort :\n".
"</span>\n";
echo "<input type=\"password\" name=\"Passwort\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"min.6\">\n".
"Passwort wiederholen:\n".
"</span>\n";
echo "<input type=\"password\" name=\"Passwortwiederholung\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"Ihre.Adresse@Ihr-Anbieter.de\">\n".
"Email-Adresse:\n".
"</span>\n";
echo "<input type=\"text\" name=\"Email\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span>\n".
"Email-Adresse anzeigen:\n".
"</span>\n";
echo "<input type=\"radio\" name=\"Show_Email\" value=\"1\"> ja\n";
echo "<input type=\"radio\" name=\"Show_Email\" value=\"0\" checked> nein\n";
echo "<h5>Freiwillige Angaben</h5>\n";
echo "<span style=\"font-weight:bold;\">\n".
"Homepage :\n".
"</span>\n";
echo "<input type=\"text\" name=\"Homepage\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"Wohnort :\n".
"</span>\n";
echo "<input type=\"text\" name=\"Wohnort\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"ICQ :\n".
"</span>\n";
echo "<input type=\"text\" name=\"ICQ\" maxlength=\"20\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"AIM :\n".
"</span>\n";
echo "<input type=\"text\" name=\"AIM\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"YIM :\n".
"</span>\n";
echo "<input type=\"text\" name=\"YIM\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"MSN :\n".
"</span>\n";
echo "<input type=\"text\" name=\"MSN\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Registrieren\">\n";
echo "<input type=\"reset\" value=\"Zurücksetzen\">\n";
echo "</form>\n";
}
?>

Ich habe jetzt jedoch die komplette Überprüfung ausgelassen.
 
Zuletzt bearbeitet:
Zurück